com.teppek/teppek

MCPcommunitydegraded
v1.3.0com.teppekUnknownUpdated 1mo ago

Agent-accessible map of global supply & demand: jobs, homes, cars & services your AI can act on

Endpoint healthdegraded
checked 23h ago · last reachable 23h ago · 899ms · 2 endpoints
100% of the last 6 checks reached this endpoint
Works in
ClaudeCursorCopilotChatGPTGemini

Inferred from the transports this listing declares (streamable-http, sse). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
1mo agoLast update
Package
Authorcom.teppek
LicenseUnknown
Version1.3.0
Sourcemcp-registry
Trust Status
D
30/100Risk
✓Listed in Forge index+10/10
—Publisher identity verified+0/30
→ Publisher: this listing has no repository on file, so `forge publish` cannot verify ownership automatically. Use "Claim this listing" above — Forge reviews these by hand.
—Domain verification+0/10
→ Not currently available for this listing type — the domain-verification check only runs for npm-backed packages today, so this row cannot be earned here yet regardless of what's hosted at the domain.
—Prompt-injection scan · findings+0/30
→ Publisher: remove instructions in the source aimed at AI clients rather than human readers
✓Obfuscation / exfil scan · clean+20/20
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
DependenciesNot audited
Tool surface16 tools · 2 privileged
Security scan⚠ Warnings (1)vlive · 29d agoHow well does this scan work?
PROMPTtool:update_listing_imagesExfiltration-shaped instruction
EvalsNone
IndexedJun 18, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

16 tools · 2 privileged · 1 flagged for injection
Observed live from the vendor's endpoint29d ago

Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.

  • https://mcp.teppek.com/mcp16 tools · 835ms
  • https://mcp.teppek.com/sseHTTP 404 on initialize
search_listingsFind live jobs, homes/rentals, vehicles, or local services NEAR a place or in a city/country on Teppek — use this for natural requests like "jobs near me", "apartments in Berlin", "used cars under 10k in Madrid", "plumbers nearby". Covers 27 countries with fresh, location-aware listings refreshed d…

Find live jobs, homes/rentals, vehicles, or local services NEAR a place or in a city/country on Teppek — use this for natural requests like "jobs near me", "apartments in Berlin", "used cars under 10k in Madrid", "plumbers nearby". Covers 27 countries with fresh, location-aware listings refreshed d…

ParameterTypeDescription
verticalstring—
intent_typestring—
rolestringThe perspective you search AS — results are the matching COUNTERPARTY listings, not your own side. To browse JOB POSTINGS use "career_seeker" (you act as a job…
text_querystring—
countrystringOptional ISO-3166 alpha-2 country code (e.g. "us", "gb", "de") to scope results to one country and get a real total count for it. Combine with text_query to co…
categorystringOptional PRECISE occupation/category filter using the source category slug (e.g. "hospitality-catering-jobs" for waiters/chefs/bar, "it-jobs", "retail-jobs").…
nearobject—
price_minnumberMinimum price/salary. CURRENCY-NAIVE: compared as a raw number against the listing price without normalizing currencies, so scope with `country` (or a role/ver…
price_maxnumberMaximum price/salary. Currency-naive raw-number compare (see price_min). If unapplied it appears in meta.ignored_filters.
sort_bystringOptional ordering: "price_asc" = cheapest first, "price_desc" = most expensive first. Use price_asc for "cheapest ..." requests. Omit for the default (most rec…
limitinteger—
offsetinteger—
semantic_searchSemantic (meaning-based) search over Teppek's live listings, backed by a multilingual embedding index. Use it when the user describes what they want in natural language rather than exact keywords — e.g. "outdoor jobs that don't need a degree", "affordable family cars that are good in snow", "a cosy…

Semantic (meaning-based) search over Teppek's live listings, backed by a multilingual embedding index. Use it when the user describes what they want in natural language rather than exact keywords — e.g. "outdoor jobs that don't need a degree", "affordable family cars that are good in snow", "a cosy…

ParameterTypeDescription
query*stringNatural-language description of what the user wants (e.g. "quiet night-shift jobs that do not need a degree", "cosy family flat near a park"). Matched by MEANI…
verticalstringOptional vertical filter (career | real_estate | vehicle | service) applied server-side to the active listings before they are returned.
limitinteger—
get_listingFetch the full detail of ONE Teppek listing by id — title, description, price/salary, location and the Teppek contact route. Use after search_listings to show, summarize or compare a specific job, home, vehicle or service the user picked.

Fetch the full detail of ONE Teppek listing by id — title, description, price/salary, location and the Teppek contact route. Use after search_listings to show, summarize or compare a specific job, home, vehicle or service the user picked.

ParameterTypeDescription
listing_id*string—
send_messageSTART contact with the owner of a Teppek LISTING on the user's behalf (identified by the listing) — the primary FIRST-CONTACT path (there is no price-offer/accept/reject flow). Opens a private thread with the owner; contact routes through Teppek and never exposes raw personal details. To continue a…

START contact with the owner of a Teppek LISTING on the user's behalf (identified by the listing) — the primary FIRST-CONTACT path (there is no price-offer/accept/reject flow). Opens a private thread with the owner; contact routes through Teppek and never exposes raw personal details. To continue a…

ParameterTypeDescription
listing_id*string—
body*stringThe message to send to the listing owner. Contact routes through Teppek; raw personal details are never exposed.
create_listingPublish a listing on behalf of the user across any of the 4 verticals and 12 roles. `location` must be coordinates ({ lat, lon }) — a free-text address is not accepted, so geocode it first. Before publishing, call get_entitlements to confirm the user has credit and a free listing slot — a reached l…

Publish a listing on behalf of the user across any of the 4 verticals and 12 roles. `location` must be coordinates ({ lat, lon }) — a free-text address is not accepted, so geocode it first. Before publishing, call get_entitlements to confirm the user has credit and a free listing slot — a reached l…

ParameterTypeDescription
vertical*string—
role*stringThe listing role — this alone fixes supply vs demand (do not send intent_type). vehicle_letter = you OWN the vehicle and are renting it OUT (lessor); for a use…
title*string—
price*number—
currency*stringISO-4217 currency code matching the listing country (e.g. USD, EUR, GBP, TRY). Required — there is no default, to avoid silently mislabeling non-Turkish listin…
location*objectListing coordinates as { lat, lon }. A free-text address is NOT accepted — resolve it to coordinates before calling.
descriptionstring—
detailsobject—
imagesarray—
request_image_uploadprivilegedGet a short-lived upload grant to attach a photo to a listing you're about to publish (any vertical/role). Returns { key, upload_url, upload_token, headers_required }: POST the raw image bytes to upload_url with those headers, then pass the returned key in create_listing's `images` array. Images ar…

Get a short-lived upload grant to attach a photo to a listing you're about to publish (any vertical/role). Returns { key, upload_url, upload_token, headers_required }: POST the raw image bytes to upload_url with those headers, then pass the returned key in create_listing's `images` array. Images ar…

ParameterTypeDescription
content_type*string—
file_size*integer—
list_my_listingsList the user's OWN listings (any status), newest first. Resolved from the authenticated agent key — only ever returns this user's listings. Use status='pending' to see what is awaiting moderation, status='rejected' for declined ones.

List the user's OWN listings (any status), newest first. Resolved from the authenticated agent key — only ever returns this user's listings. Use status='pending' to see what is awaiting moderation, status='rejected' for declined ones.

ParameterTypeDescription
statusstringFilter YOUR listings by moderation/lifecycle status. Use "pending" to see what is awaiting AI moderation, "rejected" for declined ones, "all" (default) for eve…
limitinteger—
offsetinteger—
list_conversationsList the user's OWN listing-message conversations (threads they started, or received as a listing owner), newest first. Resolved from the authenticated agent key — only ever this user's threads. Use get_conversation to read a thread's messages.

List the user's OWN listing-message conversations (threads they started, or received as a listing owner), newest first. Resolved from the authenticated agent key — only ever this user's threads. Use get_conversation to read a thread's messages.

ParameterTypeDescription
limitinteger—
offsetinteger—
get_conversationRead one of the user's OWN message conversations by thread_id, including its messages (marks incoming messages read). Only threads the authenticated user participates in are returned.

Read one of the user's OWN message conversations by thread_id, including its messages (marks incoming messages read). Only threads the authenticated user participates in are returned.

ParameterTypeDescription
thread_id*string—
get_entitlementsCheck the user's publishing entitlements BEFORE attempting to publish: membership tier, max vs current active listings, remaining slots, wallet credit balance, the per-listing credit cost, and can_create_listing. When the limit is reached the response indicates whether the user can pay from wallet…

Check the user's publishing entitlements BEFORE attempting to publish: membership tier, max vs current active listings, remaining slots, wallet credit balance, the per-listing credit cost, and can_create_listing. When the limit is reached the response indicates whether the user can pay from wallet…

No input schema was published for this tool.

update_listingEdit fields (title, description, price, currency, location) on one of the USER'S OWN listings, identified by listing_id. Only the owner can edit; vertical/intent_type/role are fixed (publish a new listing to change those). Editing is free (no credit charge). Changing the title, description, or loca…

Edit fields (title, description, price, currency, location) on one of the USER'S OWN listings, identified by listing_id. Only the owner can edit; vertical/intent_type/role are fixed (publish a new listing to change those). Editing is free (no credit charge). Changing the title, description, or loca…

ParameterTypeDescription
listing_id*string—
titlestring—
descriptionstring—
pricenumber—
currencystring—
locationobjectNew listing coordinates { lat, lon }. Moving a listing re-triggers AI moderation — it returns to "pending" until cleared.
detailsobject—
delete_listingprivilegedDelete (soft-delete) one of the USER'S OWN listings by listing_id. Only the owner can delete. No credit is refunded — the listing was already published.

Delete (soft-delete) one of the USER'S OWN listings by listing_id. Only the owner can delete. No credit is refunded — the listing was already published.

ParameterTypeDescription
listing_id*string—
set_listing_statusChange the lifecycle status of one of the USER'S OWN listings: mark it sold, hide it (take it offline), or re-activate a hidden one. Free — no credit charge. Cannot set moderation states (pending/rejected); re-activating only works on a listing that was previously approved and is currently hidden.

Change the lifecycle status of one of the USER'S OWN listings: mark it sold, hide it (take it offline), or re-activate a hidden one. Free — no credit charge. Cannot set moderation states (pending/rejected); re-activating only works on a listing that was previously approved and is currently hidden.

ParameterTypeDescription
listing_id*string—
status*stringsold = mark the listing sold/closed; hidden = temporarily take a live listing offline; active = re-show a listing that is currently hidden (only works if it wa…
renew_listingRenew one of the USER'S OWN listings — extend its expiry another 30 days (native listings lapse ~30 days after posting). Free — no credit charge. Renewing an expired listing returns it to active; a pending, rejected, sold, or draft listing cannot be renewed.

Renew one of the USER'S OWN listings — extend its expiry another 30 days (native listings lapse ~30 days after posting). Free — no credit charge. Renewing an expired listing returns it to active; a pending, rejected, sold, or draft listing cannot be renewed.

ParameterTypeDescription
listing_id*string—
reply_to_conversationContinue an EXISTING message thread by thread_id — the message goes to the other participant. Use this to follow up in a conversation that already exists, whether the user is the listing owner answering an inquiry or the inquirer following up. For the FIRST message to a listing found in search (you…

Continue an EXISTING message thread by thread_id — the message goes to the other participant. Use this to follow up in a conversation that already exists, whether the user is the listing owner answering an inquiry or the inquirer following up. For the FIRST message to a listing found in search (you…

ParameterTypeDescription
thread_id*string—
body*stringThe reply to post into the conversation. Contact routes through Teppek; raw personal details are never exposed.
update_listing_imagesinjection riskAdd and/or remove photos on one of the USER'S OWN existing listings (max 6 total). First call request_image_upload for each new image and upload the bytes, then pass the returned keys in `add`. Adding any image re-triggers AI moderation — the listing returns to 'pending' until the new images are cl…

Add and/or remove photos on one of the USER'S OWN existing listings (max 6 total). First call request_image_upload for each new image and upload the bytes, then pass the returned keys in `add`. Adding any image re-triggers AI moderation — the listing returns to 'pending' until the new images are cl…

INJECTIONExfiltration-shaped instructionupload for each new image and upload the bytes, then pass the returned keys in `add`. Adding any image re…
ParameterTypeDescription
listing_id*string—
addarrayImage keys from request_image_upload to attach (upload the bytes first). Each newly-added image is AI-moderated with the listing, so the listing returns to "pe…
removearrayImage keys currently on the listing to detach.

16 of 16 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Agent-accessible map of global supply & demand: jobs, homes, cars & services your AI can act on

Keywords
mcp
Alternatives
Comparing tool surfaces…

No dependency coverage

This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.