Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,556Letters: 14Defects: 1,331counted just now
teppi

Server definition

Hash
sha256:976230582036e679a1de38e1b4d09d4424cd2bb44a30e32309b8f756ddcd5c0a
What it is
What a remote MCP server returned when asked what it offers: 30 tools

The blob, as servednamed by its sha256

{ "instructions": "DPYC Oracle — community concierge for the DPYC Social Contract.\n\nDPYC (\"Don't Pester Your Customer\") is a philosophy and protocol for API monetization via Bitcoin Lightning micropayments. Users pre-fund a satoshi balance and consume API calls without KYC, stablecoins, or mid-session payment popups. Identity is a Nostr keypair (npub), not an email or username. Tollbooth monetizes complete business information at the MCP tool layer — not raw REST data fragments — using pre-funded Lightning balances that eliminate per-request payment ceremonies.\n\nThe DPYC Social Contract is a community of Operators and Authorities who agree to transparent, auditable economic rules. Operators run MCP services and collect Lightning fares via Tollbooths. Authorities certify Operators and collect a small tax on every purchase order. The First Curator (Prime Authority) sits at the root of the chain and mints the initial cert-sat supply. Membership tiers: Citizen → Advocate → Operator → Authority → First Curator.\n\nAdvocates are community utility services (e.g., OAuth2 collectors) that provide shared infrastructure but aren't monetized Operators or certification Authorities. They register via the Oracle's register_advocate tool.\n\nAuthority onboarding uses a Nostr DM challenge-response protocol: candidates call register_authority_npub on their Authority service, prove npub ownership via DM, and receive Prime Authority approval. The Oracle's register_authority tool commits the new Authority to the community registry once the onboarding flow completes.\n\nThis Oracle is a free, unauthenticated concierge that answers questions about membership, governance, onboarding, and how taxation works by reading the dpyc-community registry on GitHub. It does not require payment or credentials. It quotes no prices or tax rates of its own — those belong to each Operator's and Authority's pricing model. For a live figure, call get_tax_rate() to learn how to ask the relevant Authority's check_price.\n\nThe live ecosystem is read from the dpyc-community registry — never guess at\nthe roster. Call list_services() to enumerate the live network with each\nservice's own self-description (MCP handshake), about() for the full set of\necosystem links, lookup_member() to resolve any npub,\nlist_canonical_identities via a member service for tool identities, and\nnetwork_versions() for current component versions.\n\nCanonical entry points:\n- dpyc-community: https://github.com/lonniev/dpyc-community (registry + governance — the authoritative member list)\n- tollbooth-dpyc: https://github.com/lonniev/tollbooth-dpyc (Python SDK every operator and Authority builds on)\n- tollbooth-authority: https://github.com/lonniev/tollbooth-authority (Authority MCP — certification + fee ledger)\n- tollbooth-sample: https://github.com/lonniev/tollbooth-sample (reference Operator template for new services)\n- tollbooth-pricing-studio: https://github.com/lonniev/tollbooth-pricing-studio (iOS app operators use to design pricing models)\n", "tools": [ { "description": "Extended narration about DPYC, the Social Contract, and the Oracle.\n\nFetches README.md and GOVERNANCE.md from the dpyc-community repo and\nassembles a comprehensive context answer.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "about", "outputSchema": { "properties": { "result": { "type": "string" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Cast a Lightning-funded vote in an active ban election.\n\nNot yet implemented — will verify npub membership, validate the\nelection is active, and record the vote with a Lightning payment proof.", "inputSchema": { "additionalProperties": false, "properties": { "election_id": { "type": "string" }, "npub": { "type": "string" }, "vote": { "type": "string" } }, "required": [ "election_id", "vote", "npub" ], "type": "object" }, "name": "cast_ban_vote", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Check whether an npub is banned from the DPYC Social Contract.\n\nLooks up the member in the community registry and checks whether\ntheir status is \"banned\". Unknown npubs are not considered banned\n(they simply aren't members).\n\nFree, unauthenticated. Used by operators during the cold path\n(credit purchases) to enforce community bans.", "inputSchema": { "additionalProperties": false, "properties": { "npub": { "type": "string" } }, "required": [ "npub" ], "type": "object" }, "name": "check_ban_status", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Complete the citizen registration by submitting a signed Nostr event.\n\nThis is part of the **citizen** registration flow (Operator-owned).\nThe Operator calls this on behalf of a patron after the patron has\nsigned the cryptographic challenge from request_citizenship.\n\nVerifies:\n1. The challenge exists and hasn't expired\n2. The Schnorr signature is valid\n3. The event's pubkey matches the claimed npub\n4. The event content contains the issued nonce\n5. The npub is not already registered\n\nOn success, commits directly to dpyc-community/members/citizens/{npub}.json\nto register the new Citizen immediately.", "inputSchema": { "additionalProperties": false, "properties": { "challenge_id": { "type": "string" }, "npub": { "type": "string" }, "signed_event_json": { "type": "string" } }, "required": [ "npub", "challenge_id", "signed_event_json" ], "type": "object" }, "name": "confirm_citizenship", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Remove an Operator from the DPYC community registry.\n\nCalled when an Authority disowns an Operator. An Operator cannot\nexist without a sponsoring Authority, so deregistration removes the\nmember file entirely, returning the Operator to initial state.", "inputSchema": { "additionalProperties": false, "properties": { "authority_npub": { "description": "npub of the Authority requesting deregistration\n(must be a registered authority or prime_authority).", "type": "string" }, "operator_npub": { "description": "Nostr npub of the Operator to remove.", "type": "string" } }, "required": [ "operator_npub", "authority_npub" ], "type": "object" }, "name": "deregister_operator", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Explain the DPYC Social Contract economic model — qualitatively.\n\nDescribes how value flows through the network: ad valorem\ncertification fees, the cascade up the Certification Chain to the\nFirst Curator, and where the live numbers actually live. The Oracle\nquotes **no** rates, counts, or revenue figures — those belong to the\nAuthorities' pricing models and the live registry, not to a docent.\nFree, unauthenticated.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "economic_model", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Retrieve a published pricing campaign.", "inputSchema": { "additionalProperties": false, "properties": { "author_npub": { "description": "The campaign author's npub.", "type": "string" }, "format": { "default": "json", "description": "\"json\" for importable data, \"markdown\" for readable summary.", "type": "string" }, "operator_npub": { "description": "The target operator's npub.", "type": "string" }, "slug": { "description": "The campaign slug (directory name).", "type": "string" } }, "required": [ "author_npub", "operator_npub", "slug" ], "type": "object" }, "name": "get_campaign", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Return the DPYC Nostr relay set, best first.\n\nThe single source of truth is ``dpyc-community/relays.json``. An Operator\nseeds its relay set from here at cold start (its only fixed dependency is\nthis Oracle endpoint), then reads its own bootstrap config from Nostr using\njust its nsec — no direct GitHub access.\n\nThat file is a curated *guess*: it says which relays are worth using, not\nwhich are up this minute. Relays that an operator reported and the Oracle\nthen proved unreachable are moved to the back of the list; everything else\nkeeps its declared order, and nothing is ever dropped.\n\nThis call never probes anything — it is on every operator's cold-start\npath, so it stays a lookup. Ranking improves only when someone hits a dead\nrelay and says so via ``report_relay_failure``. Report failures only;\nsuccesses need no announcement.\n\nFree.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_relays", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Fetch the DPYC Social Contract governance document.\n\nReturns the raw markdown of GOVERNANCE.md from the dpyc-community repo.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_rulebook", "outputSchema": { "properties": { "result": { "type": "string" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Explain how Tollbooth certification taxation works.\n\nTaxation is ad valorem and **per-Authority** — there is no single\nnetwork-wide number, and the Oracle deliberately quotes none. The\nactual fee is the Authority's own accounting, set in its pricing model\nand reported at transaction time. This tool is a docent: it explains\nthe model and points to the live source. For the exact figure, query\nthe relevant Authority's ``check_price`` for ``certify_credits``.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_tax_rate", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "End-to-end guide for spinning up a new Tollbooth Authority.\n\nReturns the eight-step procedure covering identity, region selection,\nGitHub workspace, dpyc-community registry entry, Neon + BTCPay + Horizon\ndeployment, BTCPay credential delivery via Secure Courier, the\nself-registration challenge-response with the parent Authority, and\npre-funding the cert-fee balance. Fetched live from docs/how-to-add-authority.md\nin the dpyc-community repo.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "how_to_add_authority", "outputSchema": { "properties": { "result": { "type": "string" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Tier-specific onboarding guide for joining the DPYC Social Contract.\n\nCovers all five tiers: Citizen, Advocate, Operator, Authority, and\nFirst Curator. Includes Nostr keygen instructions and practical next\nsteps.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "how_to_join", "outputSchema": { "properties": { "result": { "type": "string" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Initiate a community ban election against a member.\n\nNot yet implemented — will create a GitHub Issue with a 72-hour\ndiscussion period and Lightning-funded economic voting.", "inputSchema": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "target_npub": { "type": "string" } }, "required": [ "target_npub", "reason" ], "type": "object" }, "name": "initiate_ban_election", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "List published pricing campaigns from the DPYC community.\n\nOptionally filter by operator or author npub.", "inputSchema": { "additionalProperties": false, "properties": { "author_npub": { "default": "", "description": "Filter to campaigns by this author (optional).", "type": "string" }, "operator_npub": { "default": "", "description": "Filter to campaigns for this operator (optional).", "type": "string" } }, "type": "object" }, "name": "list_campaigns", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Enumerate the live DPYC service network with self-described summaries.\n\nReads the member roster from the dpyc-community registry, then (when\n``probe=True``) performs a lightweight MCP handshake against each\nmember's public service endpoint to fetch that service's *own*\nself-description and tool inventory. Nothing about the services is\nhardcoded here — descriptions are authored by each service, and prices\ncome from each Operator/Authority pricing model (call the service's\n``check_price``).\n\nResilient by design: per-service timeout, partial results, brief\ncaching, and a registry-only fallback when an endpoint is asleep or\nunreachable. A sleeping service never breaks the listing. Free,\nunauthenticated.", "inputSchema": { "additionalProperties": false, "properties": { "kind": { "default": "all", "description": "Role filter — \"all\", \"operator\", \"authority\", or \"advocate\".", "type": "string" }, "probe": { "default": true, "description": "Handshake each endpoint for a live self-description. Set\nFalse for a fast registry-only listing (no network fan-out).", "type": "boolean" } }, "type": "object" }, "name": "list_services", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Look up a member by their Nostr npub.\n\nCan look up any role's npub — citizen, operator, or authority.\nReturns the full member record if found, or a not-found message.", "inputSchema": { "additionalProperties": false, "properties": { "npub": { "type": "string" } }, "required": [ "npub" ], "type": "object" }, "name": "lookup_member", "outputSchema": { "properties": { "result": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" } ] } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Get current network deployment advisory.\n\nReturns human-readable guidance on what changed recently, urgent\nupgrades, and actions operators should take. Fetched live from\nADVISORY.md in the dpyc-community repo.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "network_advisory", "outputSchema": { "properties": { "result": { "type": "string" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Get current recommended versions of all Tollbooth components.\n\nReturns component versions, minimum compatibility, active protocols,\nand a short advisory summary. Data is fetched live from\nnetwork-status.json in the dpyc-community repo.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "network_versions", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Publish a pricing campaign to the DPYC community.\n\nCommits both a machine-importable JSON file and a human-readable\nMarkdown summary to the dpyc-community campaigns directory.", "inputSchema": { "additionalProperties": false, "properties": { "author_npub": { "description": "The npub of the person who designed the campaign.", "type": "string" }, "campaign_json": { "description": "The full campaign export as a JSON string.", "type": "string" }, "campaign_markdown": { "default": "", "description": "Optional pre-rendered Markdown. If omitted, the\nOracle generates a basic summary from the JSON.", "type": "string" }, "campaign_name": { "default": "", "description": "Optional display name. Derived from JSON if omitted.", "type": "string" }, "operator_npub": { "description": "The npub of the operator the campaign is for.", "type": "string" } }, "required": [ "author_npub", "operator_npub", "campaign_json" ], "type": "object" }, "name": "publish_campaign", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Register a new Advocate in the DPYC community registry.\n\nAdvocates are community utility services that provide shared\ninfrastructure (e.g., OAuth2 callback collectors) but aren't\nmonetized Operators or certification Authorities.\n\nThis is an Oracle-mediated registration — no Nostr DM\nchallenge-response needed. The Oracle operator (Prime Authority)\ntrusts the commit via GitHub token.", "inputSchema": { "additionalProperties": false, "properties": { "display_name": { "description": "Human-readable name for the service.", "type": "string" }, "npub": { "description": "Nostr npub of the Advocate service.", "type": "string" }, "service_description": { "description": "Short description of what the service does.", "type": "string" }, "service_name": { "description": "Machine-readable service identifier\n(e.g., \"tollbooth-oauth2-collector\").", "type": "string" }, "service_url": { "description": "Public URL of the service.", "type": "string" } }, "required": [ "npub", "display_name", "service_name", "service_url", "service_description" ], "type": "object" }, "name": "register_advocate", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Register a new Authority in the DPYC community registry.\n\nCalled by an Authority service at the end of the onboarding protocol\n(after the candidate proves npub ownership and the Prime Authority\napproves). Commits a new ``members/authorities/{npub}.json`` file to\ndpyc-community on GitHub.\n\nThe full Authority onboarding protocol is a 3-step Nostr DM\nchallenge-response flow:\n1. ``register_authority_npub(npub)`` — Authority sends DM challenge\n2. ``confirm_authority_claim(npub)`` — verifies candidate DM, escalates to Prime\n3. ``check_authority_approval(npub)`` — Prime approves, this tool is called", "inputSchema": { "additionalProperties": false, "properties": { "authority_npub": { "description": "Nostr npub of the new Authority curator.", "type": "string" }, "display_name": { "description": "Human-readable name for the Authority.", "type": "string" }, "service_url": { "description": "Public MCP endpoint URL of the Authority service.", "type": "string" }, "upstream_authority_npub": { "description": "npub of the sponsoring Authority (must\nalready exist as a prime_authority or authority in the registry).", "type": "string" } }, "required": [ "authority_npub", "display_name", "service_url", "upstream_authority_npub" ], "type": "object" }, "name": "register_authority", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Register a new Operator in the DPYC community registry.\n\nCalled by an Authority service after the operator requests registration.\nThe Authority validates the operator's identity and sponsors the\nregistration by calling this tool via MCP-to-MCP.", "inputSchema": { "additionalProperties": false, "properties": { "authority_npub": { "description": "npub of the sponsoring Authority (must already\nexist as an authority or prime_authority in the registry).", "type": "string" }, "display_name": { "description": "Human-readable name for the Operator service.", "type": "string" }, "operator_npub": { "description": "Nostr npub of the new Operator.", "type": "string" }, "service_url": { "description": "Public MCP endpoint URL of the Operator service.", "type": "string" } }, "required": [ "operator_npub", "display_name", "service_url", "authority_npub" ], "type": "object" }, "name": "register_operator", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Citizen self-removal from the DPYC Social Contract via automated PR.\n\nNot yet implemented — will create a GitHub PR to remove the member\nfrom the registry.", "inputSchema": { "additionalProperties": false, "properties": { "npub": { "type": "string" } }, "required": [ "npub" ], "type": "object" }, "name": "renounce_membership", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Report that a relay in the DPYC set was unreachable, and re-rank it.\n\nA report does not set a relay's rank. It asks the Oracle to measure that\nrelay *now*, and the Oracle's own probe decides. A false or mistaken\nreport therefore costs one probe and changes nothing — no caller can\ndemote a healthy relay by asserting that it is down.\n\nReport only failures. Successes are far too frequent to be worth\ncarrying, and a relay that works needs no announcement.", "inputSchema": { "additionalProperties": false, "properties": { "mode": { "default": "unknown", "description": "What was being attempted — ``\"send\"``, ``\"read\"``, or\n``\"unknown\"``. Recorded for the human reading the logs.", "type": "string" }, "relay": { "description": "The relay that failed. Must already be in the DPYC set —\nthis tool re-measures the curated set, it is not a probe-anything\nprimitive that can be aimed at arbitrary hosts.", "type": "string" }, "reporter_npub": { "description": "The reporting operator's npub.", "type": "string" }, "signed_event": { "description": "A Nostr event signed by ``reporter_npub`` whose content\ncontains the relay URL, created within the last few minutes.\nStateless by design: no challenge is issued first, because a\nchallenge store would not survive this service's recycles — and\na relay report is most needed exactly when relays are broken.", "type": "string" } }, "required": [ "relay", "reporter_npub", "signed_event" ], "type": "object" }, "name": "report_relay_failure", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Begin the citizen registration process (Operator-owned flow).\n\nThis is the **citizen** registration path. Called by the Operator on\nbehalf of a patron — invokes the Oracle directly. No Authority npub\nis required or consulted. The patron's npub is registered as a\nCitizen in the DPYC community.\n\nThe npub provided here becomes the user's **patron identity** — the\nkeypair they will use for credit purchases and service access across\nall Tollbooth-monetized services.\n\nNot to be confused with **operator** registration, which goes through\nthe Authority via a Nostr DM delegation request.\n\nIssues a cryptographic challenge that the applicant must sign with\ntheir Nostr private key (nsec) to prove they own the claimed npub.\nThe nsec never leaves the applicant's device.\n\nReturns a challenge_id, nonce, and signing instructions. The applicant\nsigns a Nostr event containing the nonce and submits it via\nconfirm_citizenship within 10 minutes.", "inputSchema": { "additionalProperties": false, "properties": { "display_name": { "type": "string" }, "npub": { "type": "string" } }, "required": [ "npub", "display_name" ], "type": "object" }, "name": "request_citizenship", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Resolve the certifying Authority for an operator npub.\n\nReturns the Authority's ``{npub, url, name}`` (from the operator's\n``upstream_authority_npub``). Use this after bootstrap to learn — and\nverify — which Authority signed your config, without reading GitHub.", "inputSchema": { "additionalProperties": false, "properties": { "npub": { "type": "string" } }, "required": [ "npub" ], "type": "object" }, "name": "resolve_authority_for", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Resolve a DPYC service by ``name`` or ``npub``.\n\nReturns ``{npub, url, name, role, purchase_mode}`` where ``purchase_mode``\nis the registry-topology fact ``\"certified\"`` or ``\"direct\"`` (not a price).\nSupply exactly one of ``name`` or ``npub``.", "inputSchema": { "additionalProperties": false, "properties": { "name": { "default": "", "type": "string" }, "npub": { "default": "", "type": "string" } }, "type": "object" }, "name": "resolve_service", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Diagnostic: report this service's software versions and runtime info.\n\nFree, unauthenticated. Use to verify deployment versions across the\nDPYC ecosystem.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "service_status", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Update an existing Operator's registry entry.\n\nUsed when an Operator moves to a new MCP endpoint, changes its\ndisplay name, or needs to correct a registration. Must be called\nby the sponsoring Authority (or any Authority).", "inputSchema": { "additionalProperties": false, "properties": { "authority_npub": { "default": "", "description": "npub of the requesting Authority (must be a\nregistered authority or prime_authority).", "type": "string" }, "display_name": { "default": "", "description": "New display name (leave empty to keep current).", "type": "string" }, "operator_npub": { "description": "Nostr npub of the Operator to update.", "type": "string" }, "service_url": { "default": "", "description": "New MCP endpoint URL (leave empty to keep current).", "type": "string" } }, "required": [ "operator_npub" ], "type": "object" }, "name": "update_operator", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Identify the First Curator (Prime Authority) of the Certification Chain.\n\nReturns the curator's npub, display name, and member record.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "who_is_first_curator", "outputSchema": { "properties": { "result": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" } ] } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:976230582036e679a1de38e1b4d09d4424cd2bb44a30e32309b8f756ddcd5c0a | sha256sum