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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:28035e5426a73a94e6184cadaeaa1e21664a1b09f2ca116a645ec74d93e2e62c | sha256sum