{
  "markdown": "# DPYC Oracle\n\nA free, unauthenticated MCP concierge service for the [DPYC Social Contract](https://github.com/lonniev/dpyc-community). The Oracle answers questions about membership, governance, onboarding, and tax rates by reading the [dpyc-community GitHub registry](https://github.com/lonniev/dpyc-community) live. No credits, no Neon database, no Secure Courier, no payment or credentials required.\n\n## Available Tools\n\n| Tool | Params | Description |\n|------|--------|-------------|\n| `about()` | — | Extended narration from repo docs (README + GOVERNANCE) |\n| `lookup_member(npub)` | `npub: str` | Look up a member by Nostr npub |\n| `list_services(probe, kind)` | `probe: bool = True, kind: str = \"all\"` | Enumerate the live service network from the registry, optionally MCP-handshaking each member for its own self-description and tool inventory |\n| `get_tax_rate()` | — | Explains per-Authority ad valorem certification taxation; quotes no rate of its own and redirects to the relevant Authority's `check_price` |\n| `economic_model()` | — | Qualitative model of how value flows up the Certification Chain (no hardcoded rates, counts, or revenue figures) |\n| `get_rulebook()` | — | GOVERNANCE.md content |\n| `how_to_join()` | — | Tier-specific onboarding guide |\n| `how_to_add_authority()` | — | End-to-end guide for spinning up a new Tollbooth Authority (fetched live from dpyc-community) |\n| `who_is_first_curator()` | — | First Curator's npub and record |\n| `network_versions()` | — | Current recommended component versions |\n| `network_advisory()` | — | Deployment advisory for operators |\n| `service_status()` | — | Runtime version diagnostics |\n| `request_citizenship(npub, display_name)` | `npub: str, display_name: str` | Begin citizenship onboarding (issues challenge) |\n| `confirm_citizenship(npub, challenge_id, signed_event_json)` | `npub: str, challenge_id: str, signed_event_json: str` | Complete onboarding with signed Nostr event |\n| `register_advocate(npub, display_name, service_name, service_url, service_description)` | `npub: str, display_name: str, service_name: str, service_url: str, service_description: str` | Register a community utility service as an Advocate |\n| `register_authority(authority_npub, display_name, service_url, upstream_authority_npub)` | `authority_npub: str, display_name: str, service_url: str, upstream_authority_npub: str` | Register a new Authority (called by onboarding flow) |\n| `register_operator(operator_npub, display_name, service_url, authority_npub)` | `operator_npub: str, display_name: str, service_url: str, authority_npub: str` | Register a new Operator (called by the sponsoring Authority) |\n| `update_operator(operator_npub, service_url, display_name, authority_npub)` | `operator_npub: str, service_url: str = \"\", display_name: str = \"\", authority_npub: str = \"\"` | Update an existing Operator's registry entry (e.g. new MCP endpoint) |\n| `deregister_operator(operator_npub, authority_npub)` | `operator_npub: str, authority_npub: str` | Remove an Operator from the registry (Authority disowns the Operator) |\n| `check_ban_status(npub)` | `npub: str` | Check if an npub is banned |\n| `publish_campaign(author_npub, operator_npub, campaign_json, campaign_name, campaign_markdown)` | `author_npub: str, operator_npub: str, campaign_json: str, campaign_name: str = \"\", campaign_markdown: str = \"\"` | Publish a pricing campaign to the DPYC community |\n| `list_campaigns(operator_npub, author_npub)` | `operator_npub: str = \"\", author_npub: str = \"\"` | List published pricing campaigns, optionally filtered by operator or author |\n| `get_campaign(author_npub, operator_npub, slug, format)` | `author_npub: str, operator_npub: str, slug: str, format: str = \"json\"` | Retrieve a published pricing campaign (JSON or Markdown) |\n\n### Stubbed (Future)\n\n| Tool | Description |\n|------|-------------|\n| `renounce_membership(npub)` | Citizen self-removal via automated PR |\n| `initiate_ban_election(target_npub, reason)` | Start economic ban voting |\n| `cast_ban_vote(election_id, vote, npub)` | Lightning-funded ban vote |\n\n## Citizenship Onboarding\n\nNew citizens can self-register via Schnorr signature verification:\n\n1. `request_citizenship(npub, display_name)` — issues a cryptographic challenge\n2. Sign the challenge with your Nostr nsec (offline, nsec never leaves your device)\n3. `confirm_citizenship(npub, challenge_id, signed_event_json)` — verifies signature and auto-commits\n\nOn success, the Oracle creates an individual member file at `members/citizens/{npub}.json` in dpyc-community. The CI workflow auto-regenerates `members.json` from individual files.\n\n## Advocate Registration\n\nAdvocates are community utility services (e.g., OAuth2 collectors) that provide shared infrastructure but aren't monetized Operators. Registration is Oracle-mediated — no challenge-response needed:\n\n```\nregister_advocate(\n    npub=\"<service_npub>\",\n    display_name=\"My Service\",\n    service_name=\"my-service\",\n    service_url=\"https://my-service.fastmcp.app\",\n    service_description=\"What the service does\",\n)\n```\n\nThe Oracle commits `members/advocates/{npub}.json` directly. Peer MCP servers discover the service URL via `resolve_service_by_name()` in the tollbooth-dpyc registry client.\n\n## How to Connect\n\nThis service is hosted on Horizon. Add it to your MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"dpyc-oracle\": {\n      \"url\": \"https://dpyc-oracle.fastmcp.app/mcp\"\n    }\n  }\n}\n```\n\n## Related Repos\n\nThe authoritative, always-current roster lives in the registry — call `lookup_member()` / `network_versions()` for live data. The stable source repos:\n\n**Core**\n- [dpyc-community](https://github.com/lonniev/dpyc-community) — Registry, governance, and membership data\n- [tollbooth-dpyc](https://github.com/lonniev/tollbooth-dpyc) — Python SDK every Operator and Authority builds on\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\n**Authorities** (certification chain)\n- [tollbooth-authority](https://github.com/lonniev/tollbooth-authority) — Certification + fee ledger\n- [tollbooth-authority-northamerica](https://github.com/lonniev/tollbooth-authority-northamerica) — Regional certifier\n- [tollbooth-authority-newengland](https://github.com/lonniev/tollbooth-authority-newengland) — Sub-regional certifier\n\n**Operators**\n- [thebrain-mcp](https://github.com/lonniev/thebrain-mcp) — Personal Brain knowledge graph\n- [excalibur-mcp](https://github.com/lonniev/excalibur-mcp) — X/Twitter posting\n- [schwab-mcp](https://github.com/lonniev/schwab-mcp) — Charles Schwab brokerage data\n- [taxsort-mcp](https://github.com/lonniev/taxsort-mcp) — Tax sorting + classification\n- [optionality-mcp](https://github.com/lonniev/optionality-mcp) — Options analytics\n- [cypher-mcp](https://github.com/lonniev/cypher-mcp) — Monetized graph answers (named Cypher over Neo4j/AuraDB)\n\n**Advocates** (shared utilities, unmonetized)\n- [tollbooth-oauth2-collector](https://github.com/lonniev/tollbooth-oauth2-collector) — OAuth2 authorization-code collection\n- [tollbooth-shortlinks](https://github.com/lonniev/tollbooth-shortlinks) — Ephemeral short URLs for OAuth flows\n\n## License\n\nApache-2.0\n",
  "bytes": 7345,
  "sha": "64411045abade5d0bc39a425e82709b29ee569716b095da23bfaa6ed25c5fb1e",
  "repo_slug": "lonniev/dpyc-oracle",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_lonniev_dpyc_oracle_296b6b5b/readme"
}