Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,549Letters: 14Defects: 1,323counted 4 min ago
teppi

Server definition

Hash
sha256:28035e5426a73a94e6184cadaeaa1e21664a1b09f2ca116a645ec74d93e2e62c
What it is
What a remote MCP server returned when asked what it offers: 6 tools

The blob, as servednamed by its sha256

{ "instructions": "Freeport is a decentralized peer-to-peer marketplace on Nostr (rideshare, local services, goods). Use nostr_search_intents to find offers (kind 32101: drivers/providers/sellers) and requests (kind 32102: riders/buyers) by side, topic tag, and geographic radius; nostr_search_reputation for a pubkey's karma + proven deals; nostr_profile for kind-0 metadata; nostr_query_raw for any NIP-01 filter. Topic tags shard by area_category_subcategory (e.g. \"vn_hanoi\", \"vn_hanoi_ridesharing\"). You can publish a post with freeport_create_post (offer/request) — provide a dedicated agent secretKey or a pre-signed event; strict rate limits apply. It never reads encrypted DMs. Read the freeport://protocol resource for the full event schema and the freeport://relays resource for the active relay set.", "tools": [ { "description": "Publish a Freeport intent — an OFFER (side \"offer\": driver/provider/seller) or a REQUEST (side \"request\": rider/buyer). Provide EITHER a `secretKey` (nsec or hex — the server builds, signs and publishes; use a DEDICATED agent key, never a personal one — it is used once and never stored) OR a pre-signed `event` (you sign locally; nothing secret reaches the server). Strict rate limits apply. Returns the published event id + addressable `d`.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "d": { "description": "Stable id to republish/replace an existing post; defaults to random.", "type": "string" }, "event": { "description": "A complete, signed Nostr event (kind 32101/32102). Use instead of secretKey to keep keys off the server." }, "expiresInMinutes": { "description": "How long the post stays live (default 720). Max 30 days.", "maximum": 43200, "minimum": 5, "type": "integer" }, "geohashes": { "description": "Geohashes for location-scoped discovery. Each is expanded into all its prefixes (precision 1-6) so radius searches at any precision match.", "items": { "type": "string" }, "maxItems": 8, "type": "array" }, "market": { "description": "Market key, e.g. \"rideshare\" or \"service\".", "type": "string" }, "payload": { "additionalProperties": {}, "description": "Intent payload (from/to/location, payment, etc.) per the freeport://protocol resource.", "type": "object" }, "relays": { "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "schema": { "description": "Payload schema, e.g. \"rideshare/1\" or \"service/1\".", "type": "string" }, "secretKey": { "description": "nsec or 64-hex private key. Used transiently to sign; never stored. Omit if passing a pre-signed `event`.", "type": "string" }, "side": { "description": "offer = provider/seller/driver; request = buyer/rider.", "enum": [ "offer", "request" ], "type": "string" }, "title": { "maxLength": 200, "type": "string" }, "topics": { "description": "Topic `t` tags (area/category), e.g. [\"vn_hanoi\",\"vn_hanoi_ridesharing\"].", "items": { "type": "string" }, "maxItems": 8, "type": "array" }, "window": { "additionalProperties": false, "properties": { "end": { "type": "integer" }, "start": { "type": "integer" } }, "required": [ "start", "end" ], "type": "object" } }, "type": "object" }, "name": "freeport_create_post", "outputSchema": null }, { "description": "Fetch one or more events by id. Returns the raw signed events.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "ids": { "items": { "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "relays": { "description": "Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.", "items": { "type": "string" }, "maxItems": 10, "type": "array" } }, "required": [ "ids" ], "type": "object" }, "name": "nostr_get_event", "outputSchema": null }, { "description": "Fetch NIP-01 profile metadata (kind 0) for one or more pubkeys — name, about, picture, nip05, lud16, etc. Optionally include each author's most recent notes (kind 1). General-purpose: works for any Nostr user, not just Freeport.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "pubkeys": { "description": "Hex pubkeys to fetch profiles for.", "items": { "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" }, "recentNotes": { "default": 0, "description": "If >0, also fetch up to this many recent text notes (kind 1) per pubkey.", "maximum": 20, "minimum": 0, "type": "integer" }, "relays": { "description": "Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.", "items": { "type": "string" }, "maxItems": 10, "type": "array" } }, "required": [ "pubkeys" ], "type": "object" }, "name": "nostr_profile", "outputSchema": null }, { "description": "Escape hatch: run an arbitrary NIP-01 filter (kinds/authors/ids/tags/since/until/limit). Use the typed tools above when they fit. Returns raw signed events.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "authors": { "items": { "type": "string" }, "type": "array" }, "ids": { "items": { "type": "string" }, "type": "array" }, "kinds": { "items": { "type": "integer" }, "type": "array" }, "limit": { "default": 100, "maximum": 500, "minimum": 1, "type": "integer" }, "relays": { "description": "Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.", "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "since": { "type": "integer" }, "tags": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "Tag filters, e.g. {\"t\":[\"vn_hanoi\"],\"g\":[\"w3gv\"]}. Keys are single tag letters.", "type": "object" }, "until": { "type": "integer" } }, "type": "object" }, "name": "nostr_query_raw", "outputSchema": null }, { "description": "Search Freeport ride/service/product intents (offers & requests). Filter by side, category/area topic tags, and an optional geographic radius. Results are decoded, expiry-filtered, and sorted nearest-first when a point is given.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "includeExpired": { "default": false, "type": "boolean" }, "limit": { "default": 200, "maximum": 500, "minimum": 1, "type": "integer" }, "near": { "additionalProperties": false, "description": "Filter & sort by distance from this point.", "properties": { "lat": { "type": "number" }, "lon": { "type": "number" }, "radiusKm": { "default": 100, "exclusiveMinimum": 0, "maximum": 20000, "type": "number" } }, "required": [ "lat", "lon" ], "type": "object" }, "relaySideGeohash": { "default": false, "description": "Also narrow at the relay via a #g cover of the radius. Only effective if posts carry geohash-prefix tags; off by default.", "type": "boolean" }, "relays": { "description": "Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.", "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "side": { "default": "any", "description": "offer = drivers/providers/sellers; request = riders/buyers; any = both", "enum": [ "offer", "request", "any" ], "type": "string" }, "since": { "description": "Only events created at/after this unix-seconds time.", "type": "integer" }, "topics": { "description": "Topic `t` tags to require (category/subcategory/area keys, e.g. \"vn_hanoi\", \"ridesharing\").", "items": { "type": "string" }, "type": "array" }, "until": { "description": "Only events created at/before this unix-seconds time.", "type": "integer" } }, "type": "object" }, "name": "nostr_search_intents", "outputSchema": null }, { "description": "Fetch reputation signals for a pubkey: karma ratings (kind 32103) it received and deal receipts (kind 32104). Returns proven-deal count (both receipt halves present) and a karma summary. Note: scores are subjective and un-weighted here; do not treat as Sybil-proof.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "limit": { "default": 500, "maximum": 1000, "minimum": 1, "type": "integer" }, "pubkey": { "description": "Subject pubkey (hex) to look up reputation for.", "type": "string" }, "relays": { "description": "Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.", "items": { "type": "string" }, "maxItems": 10, "type": "array" } }, "required": [ "pubkey" ], "type": "object" }, "name": "nostr_search_reputation", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:28035e5426a73a94e6184cadaeaa1e21664a1b09f2ca116a645ec74d93e2e62c | sha256sum