protogrid

Search / com.teppek/teppek

Teppek

R0· no sign-in

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

v1.3.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality85good
Trust79of 100
Uptime, 30 days96%
Latency p50459 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "teppek": {
      "type": "http",
      "url": "https://mcp.teppek.com/mcp"
    }
  }
}
claude mcp add --transport http teppek https://mcp.teppek.com/mcp
[mcp_servers.teppek]
url = "https://mcp.teppek.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "teppek": {
      "type": "remote",
      "url": "https://mcp.teppek.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "teppek": {
      "type": "http",
      "url": "https://mcp.teppek.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=teppek&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnRlcHBlay5jb20vbWNwIn0%3D"
}
{
  "servers": {
    "teppek": {
      "type": "http",
      "url": "https://mcp.teppek.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "teppek": {
      "httpUrl": "https://mcp.teppek.com/mcp"
    }
  }
}
extensions:
  "teppek":
    enabled: true
    name: "teppek"
    type: streamable_http
    uri: "https://mcp.teppek.com/mcp"
    timeout: 300

Quality 85 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations16 of 16 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints10 of 16 tools declare all four hints; missing: semantic_search (destructiveHint, idempotentHint); get_listing (destructiveHint, idempotentHint); search_listings (destructiveHint, idempotentHint); …
  • pass
    tools.token_costabout 4,903 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes1 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

16 tools, about 4,903 tokens to load them all · tool set 6e485b3878d1 · tools last changed 2026-10-12 · checked 2026-10-20 15:26 UTC

Tool changes

  • purchase_packageremoved

    Top up the ACCOUNT's credit balance by buying a package with USDC on Base — so you can keep publishing/boosting autonomously instead of stopping to ask the human to open teppek.com/pricing. The agent spends the account's package credits (1 credit = 1 USD) exactly like the human owner; this buys the SAME packages a human buys, just paid on-chain. Use it when create_listing/gold/flare returns 402 (out of credits) or 409 (listing limit). TWO STEPS: (1) call with pack_key only (pro/pro_plus/business) → you get a 402 PAYMENT_REQUIRED carrying { payment: { pay_to, amount_usdc, network: 'base', asset } }; (2) send exactly that much USDC to pay_to from the account owner's wallet, then call again with the SAME pack_key and payment_tx set to the transaction hash → the account is credited and you can retry the original action. NOT a per-listing payment. If it returns 404 AGENT_TOPUP_UNAVAILABLE, autonomous top-up is off — tell the owner to buy a package at the pay_url. A 202 PENDING_CONFIRMATION means the tx is not yet confirmed on-chain — retry shortly with the same payment_tx.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 79 / 100

no-repository
provenance55
liveness98
freshness85
hygiene80

+dns-namespace +website +reachable +uptime-96% ~updated-53d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.teppek.com/mcp streamable-httpnoneyes96%459 ms2025-11-252026-10-20
https://mcp.teppek.com/sse ssenoneyes96%475 ms2025-11-252026-10-20

Tools (16)

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. Publishing consumes credits and requires a free listing slot; get_entitlements reports the current balance and remaining slots. A reached limit makes this return an ACTIVE_LISTING_LIMIT_REACHED error carrying a pay_url. Consumes credits and is held for AI moderation (status starts "pending"); credits are refunded if rejected, EXCEPT for prohibited or spam content, which forfeits the credit. To attach photos, first call request_image_upload for each image and pass the returned keys in `images` — every image is AI-moderated with the text before going live. Requires the user to be connected to Teppek: an anonymous call returns an AUTH_REQUIRED error with an authorize_url — surface "Connect with Teppek" to the user, then retry.
delete_listingdestructiveDelete (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.
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.
get_entitlementsread-onlyCheck 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 credit or should open checkout (pay_url).
get_listingread-onlyFetch 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.
list_conversationsread-onlyList 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_my_listingsread-onlyList 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.
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.
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 have a listing_id but no thread yet), use send_message instead. Contact routes through Teppek; raw personal details are never exposed. Find thread_id via list_conversations / get_conversation.
request_image_uploadGet 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 are AI-moderated (content safety + consistency with the listing text) before the listing goes live.
search_listingsread-onlyFind 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 daily. For MEANING-based or fuzzy natural-language intent (not exact keywords or filters), use semantic_search instead. Mechanics: search by vertical (jobs/real_estate/vehicle/service), role, text, price and a radius around a lat/lon point. The `role` is the perspective you search AS and returns the COUNTERPARTY listings: to find JOB POSTINGS use role="career_seeker" (NOT career_employer, which searches candidate CVs). A text_query or location is needed — an empty query returns nothing. The response meta.total is the REAL match count (independent of limit); for a multi-word text_query it counts listings matching ANY of the words, so to count a whole occupation/category include its synonyms (e.g. "waiter waitress server"). Use the `country` field for country-scoped totals. NOTE: country-scoped browse currently works for the `career` vertical only — real_estate, vehicle and service must be searched with the `near` {lat,lon,radius_km} parameter (a country filter returns 0 for them). meta.ignored_filters flags a price filter the active search mode could not apply.
semantic_searchread-onlySemantic (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 studio close to the university". Returns the closest-matching ACTIVE listings ranked by semantic similarity (each item carries a `score`). Complements search_listings: prefer search_listings for precise keyword/role/country/category/price filtering and exact counts; prefer semantic_search when meaning, synonyms, or fuzzy intent matter more than literal terms. Optional `vertical` narrows to jobs/real_estate/vehicle/service.
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 thread that already EXISTS (you have a thread_id from list_conversations), use reply_to_conversation instead. External-feed listings (e.g. imported jobs) have no Teppek owner, so this returns a redirect to the external application URL instead of creating a thread. Requires the user to be connected to Teppek: an anonymous call returns an AUTH_REQUIRED error with an authorize_url — surface 'Connect with Teppek' to the user, then retry.
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.
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 location re-triggers AI moderation (the listing returns to 'pending' until cleared); price/currency-only edits stay live. A price change may be rejected if the listing's price is locked.
update_listing_imagesAdd 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 cleared; removing images does not. Free (no credit).

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.teppek/teppek",
  "title": "Teppek",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.teppek.com/mcp",
      "type": "streamable-http"
    },
    {
      "url": "https://mcp.teppek.com/sse",
      "type": "sse"
    }
  ],
  "version": "1.3.0",
  "websiteUrl": "https://www.teppek.com",
  "description": "Agent-accessible map of global supply & demand: jobs, homes, cars & services your AI can act on"
}