{
  "markdown": "<p align=\"center\">\n  <img src=\"assets/opedd-logo.png\" alt=\"Opedd\" height=\"72\">\n</p>\n\n<h1 align=\"center\">opedd-mcp</h1>\n\n<p align=\"center\">\n  <strong>Licensed, rights-cleared content for AI agents</strong> — the alternative to unlicensed scraping for RAG, AI search, and LLM grounding.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/opedd-mcp\"><img src=\"https://img.shields.io/npm/v/opedd-mcp?color=4A26ED&label=npm\" alt=\"npm\"></a>\n  <a href=\"https://www.npmjs.com/package/opedd-mcp\"><img src=\"https://img.shields.io/npm/dm/opedd-mcp?color=4A26ED&label=downloads\" alt=\"downloads\"></a>\n  <a href=\"https://registry.modelcontextprotocol.io/v0/servers?search=opedd\"><img src=\"https://img.shields.io/badge/MCP%20Registry-com.opedd%2Fopedd--mcp-4A26ED\" alt=\"MCP Registry\"></a>\n  <a href=\"./LICENSE\"><img src=\"https://img.shields.io/npm/l/opedd-mcp?color=4A26ED\" alt=\"MIT\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"cursor://anysphere.cursor-deeplink/mcp/install?name=opedd&config=eyJjb21tYW5kIjoibnB4IC15IG9wZWRkLW1jcCJ9\"><img src=\"https://img.shields.io/badge/Add%20to-Cursor-000?logo=cursor\" alt=\"Add to Cursor\"></a>\n  <a href=\"https://insiders.vscode.dev/redirect/mcp/install?name=opedd&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22opedd-mcp%22%5D%7D\"><img src=\"https://img.shields.io/badge/Install%20in-VS%20Code-007ACC?logo=visualstudiocode\" alt=\"Install in VS Code\"></a>\n  <a href=\"https://opedd.com/for-ai-agents?utm_source=github&utm_medium=readme&utm_campaign=mcp\"><img src=\"https://img.shields.io/badge/Docs-opedd.com-111\" alt=\"Docs\"></a>\n</p>\n\nLets AI assistants (Claude Desktop, Cursor, Windsurf, or any MCP-compatible host) discover, purchase, and verify content licenses autonomously — mid-conversation, without opening a browser. Every license is registered on-chain (Tempo blockchain) with cryptographic proof.\n\n**Unlike generic search APIs**, Opedd returns content with a verifiable license key — defensible under the EU AI Act and any copyright jurisdiction.\n\n## Quick start\n\n```bash\nnpx opedd-mcp\n```\n\nThen add it to your MCP host (see [Claude Desktop / Cursor / Windsurf setup](#claude-desktop-setup) below). Discovery + verification tools work with no configuration; purchasing and content retrieval use optional API keys from [opedd.com](https://opedd.com?utm_source=github&utm_medium=readme&utm_campaign=mcp).\n\n## Hosted endpoint — no install (mcp.opedd.com)\n\nPrefer zero-install? The same 17 tools are served hosted at **`https://mcp.opedd.com/mcp`** (Streamable HTTP). Auth is an `Authorization: Bearer` header with any Opedd key — public discovery tools need no auth at all.\n\n**Claude Messages API** (production agents):\n\n```json\n{\n  \"mcp_servers\": [{\n    \"type\": \"url\",\n    \"url\": \"https://mcp.opedd.com/mcp\",\n    \"name\": \"opedd\",\n    \"authorization_token\": \"opedd_buyer_live_...\"\n  }]\n}\n```\n\n**OpenAI Responses API**:\n\n```json\n{\n  \"tools\": [{\n    \"type\": \"mcp\",\n    \"server_label\": \"opedd\",\n    \"server_url\": \"https://mcp.opedd.com/mcp\",\n    \"authorization\": \"opedd_buyer_live_...\"\n  }]\n}\n```\n\n**claude.ai / Claude Desktop custom connector** (all plans): Settings → Connectors → *Add custom connector* → URL `https://mcp.opedd.com/mcp`; add a `Authorization: Bearer <your key>` request header for the credentialed tools.\n\n**Cursor** (`.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"opedd\": {\n      \"url\": \"https://mcp.opedd.com/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${env:OPEDD_KEY}\" }\n    }\n  }\n}\n```\n\nKey routing: `opedd_pub_*` → publisher tools · `opedd_buyer_*` → content retrieval · `ent_*` → bulk feeds · buyer-portal JWT → audit/compliance/EU-AI-Act tools. Your key is forwarded per request and never stored by the gateway.\n\n## What it does\n\nExposes up to 17 tools to any AI assistant (some are conditional on env vars):\n\n**Always available — discovery + per-article purchase + onboarding + rights signaling**\n\n| Tool | Description |\n|------|-------------|\n| `lookup_content` | Look up an article by URL — returns title, publisher, pricing |\n| `purchase_license` | Buy a single-article license via Stripe — returns OP-XXXX-XXXX key. Requires `terms_accepted: true` (genuine buyer assent to opedd.com/terms; recorded with the licence) |\n| `verify_license` | Verify a license key — returns validity, article, publisher, blockchain proof |\n| `browse_registry` | Browse the public Opedd registry — lists issued LICENSES (use `publisher_directory` to browse publishers themselves) |\n| `publisher_directory` | Browse the public Opedd publisher catalog — paginated publishers with article counts + pricing + sample articles (primary buyer-discovery surface for AI labs) |\n| `purchase_enterprise_license` | Buy a bulk enterprise license covering multiple publishers (Phase 10) — returns Stripe `client_secret`. Requires `terms_accepted: true`; the current Master Services Agreement version label is recorded with the licence (the backend rejects superseded labels) |\n| `rsl_get` | Fetch a publisher's RSL Standard manifest — public discovery surface; `jsonld: true` returns CDSM Article 4(3) signed receipt (Phase 12 W1.1) |\n| `detect_platform` | Detect the content platform behind a URL — returns suggested onboarding workflow for Substack / Beehiiv / Ghost / Medium / Brevo / custom (Phase 12 W3.1) |\n\n**Requires `OPEDD_BUYER_TOKEN` (opedd_buyer_live_*)**\n\n| Tool | Description |\n|------|-------------|\n| `get_content` | Retrieve a licensed article — includes 7 Phase 11 M2 RAG metadata fields (author, language, word_count, content_hash, image_urls, canonical_url, tags) |\n\n**Requires `OPEDD_ACCESS_KEY` (ent_*) — buyer-side feed surfaces**\n\n| Tool | Description |\n|------|-------------|\n| `list_feed` | List articles from a buyer's licensed catalog with `since` delta-feed support (Phase 11 M5). Flat-fee scopes carry full `content_body`; metered (filtered-scope) keys get a discovery-only feed (`content_body: null`, `content_access: \"metered_per_call\"`) — fetch text via `get_content` (billed per call) |\n| `stream_feed_ndjson` | Bulk-export up to 1000 articles per call via NDJSON wire format (Phase 11 M3). Same per-scope content contract as `list_feed` — metered keys export metadata only |\n\n**Requires `OPEDD_BUYER_JWT` (Supabase JWT) — buyer account + audit + compliance + EU AI Act surfaces**\n\n| Tool | Description |\n|------|-------------|\n| `get_buyer_account` | Fetch buyer profile + masked API key list — buyer-dashboard mental model |\n| `get_audit_events` | Per-event audit ledger with Tempo on-chain attestation inclusion proofs inline (Phase 9.x + 10 M5) |\n| `get_compliance_dossier` | Procurement-defense compliance dossier mapping retrievals to license terms (Phase 11 M4) |\n| `article_53_attestation` | Signed JWT attesting EU AI Act Article 53(1)(d) compliance for a license — the artifact AI labs hand to legal/procurement (Phase 12 W1.4) |\n\n**Requires `OPEDD_PUB_BEARER` (opedd_pub_*) — publisher-side**\n\n| Tool | Description |\n|------|-------------|\n| `list_publisher_content` | List your own articles with pricing and stats |\n| `push_content` | Push your articles to Opedd so AI buyers can license them — 1–100 per call (`title`/`url`/`html_body` required, everything else optional). Onboard your back-catalogue or new posts with no code, straight from your AI assistant. |\n\n### Regulatory framing (CDSM Article 4 vs EU AI Act Article 53 — never conflated)\n\nPer Opedd's platform invariants (W1.6 amendment):\n\n- **`rsl_get(publisher_id, jsonld=true)`** → publisher-side **CDSM Article 4(3)** opt-out declaration (signed JSON-LD receipt over the reservation state).\n- **`article_53_attestation(license_id)`** → buyer-side **EU AI Act Article 53** attestation (signed HS256 JWT scoped to one license).\n- **`get_compliance_dossier(from, to)`** → comprehensive procurement-defense dossier covering BOTH frameworks (publisher CDSM reservation honored + buyer Article 53 evidence chain).\n\nThese serve different audit-defensibility modes and never share wire format. Tool descriptions cite the W1.6 invariant inline.\n\n## Install\n\n```bash\nnpm install -g opedd-mcp\n```\n\nOr run directly with npx:\n\n```bash\nnpx opedd-mcp\n```\n\n## Configuration\n\nSet environment variables to pre-configure the server:\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `OPEDD_BUYER_EMAIL` | Recommended | Your email — used as default for all purchases |\n| `OPEDD_PAYMENT_METHOD_ID` | Recommended | Stripe `pm_...` ID — used for autonomous per-article purchasing |\n| `OPEDD_BUYER_TOKEN` | Optional | Buyer API token (`opedd_buyer_live_*` canonical; `opedd_buyer_test_*` for sandbox) — enables `get_content` |\n| `OPEDD_ACCESS_KEY` | Optional | Enterprise access key (`ent_*`) — enables `list_feed` + `stream_feed_ndjson` |\n| `OPEDD_BUYER_JWT` | Optional | Supabase session JWT from the buyer portal — enables `get_buyer_account` + `get_audit_events` + `get_compliance_dossier` + `article_53_attestation` |\n| `OPEDD_PUB_BEARER` | Optional | Canonical Publisher API Bearer key (`opedd_pub_<env>_<32-hex>`; issued via `POST /publishers-api-keys action=create_api_key`) — enables `list_publisher_content` + `push_content`. **v0.4.0 canonical.** |\n| `OPEDD_API_KEY` | Deprecated | Legacy Publisher API key (`op_...`) — fallback during the transition window; will stop working when opedd-backend Phase C deploys. Migrate to `OPEDD_PUB_BEARER`. |\n| `OPEDD_API_URL` | Optional | Override the API base URL (default: Opedd production) |\n| `OPEDD_MCP_TELEMETRY` | Optional | Set to `0` to disable anonymous usage telemetry (see below) |\n\n> **Getting a Stripe payment method ID**: Save a card in your Stripe account and retrieve the `pm_...` ID via the [Stripe API](https://stripe.com/docs/api/payment_methods).\n\n## Anonymous usage telemetry\n\nTo understand how AI assistants use this server, `opedd-mcp` sends anonymous\ntelemetry for each tool call: **only the tool name, its duration, whether it\nsucceeded, and the server version** — plus a random per-process id. It never\nsends tool parameters, responses, your email, API keys, tokens, content, or\nyour IP. Data goes to Opedd's PostHog (EU region).\n\n**To opt out**, set either environment variable before starting the server:\n\n```\nOPEDD_MCP_TELEMETRY=0\n# or the cross-tool standard:\nDO_NOT_TRACK=1\n```\n\nWhen opted out, no telemetry client is created and nothing is sent.\n\n## Claude Desktop setup\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"opedd\": {\n      \"command\": \"npx\",\n      \"args\": [\"opedd-mcp\"],\n      \"env\": {\n        \"OPEDD_BUYER_EMAIL\": \"you@yourcompany.com\",\n        \"OPEDD_PAYMENT_METHOD_ID\": \"pm_...\"\n      }\n    }\n  }\n}\n```\n\n## Cursor / Windsurf setup\n\nAdd to your MCP settings:\n\n```json\n{\n  \"opedd\": {\n    \"command\": \"npx opedd-mcp\",\n    \"env\": {\n      \"OPEDD_BUYER_EMAIL\": \"you@yourcompany.com\",\n      \"OPEDD_PAYMENT_METHOD_ID\": \"pm_...\"\n    }\n  }\n}\n```\n\n## Example usage\n\nOnce configured, you can ask your AI assistant:\n\n> \"Look up the licensing options for this article: https://theinformation.com/articles/...\"\n\n> \"Purchase a human republication license for that article on my behalf.\"\n\n> \"Verify license key OP-XXXX-XXXX and tell me what it covers.\"\n\n> \"Browse the latest licenses from The Information publisher.\"\n\n### Phase 12 Wave 1 + 3 surfaces (v0.3.0)\n\n> \"What does publisher 8268c353-ffa3-4db3-bbb2-90ddbbb43e41 license? Pull the RSL manifest.\" — uses `rsl_get`\n\n> \"Get me a CDSM Article 4(3) signed receipt for that publisher's reservation state — set `jsonld: true`.\" — uses `rsl_get` with content negotiation\n\n> \"Generate an EU AI Act Article 53 attestation JWT for our license `11111111-...` covering the last 90 days. I need the artifact for our procurement audit committee.\" — uses `article_53_attestation` (requires `OPEDD_BUYER_JWT`)\n\n> \"This publisher just signed up: `https://noahpinion.substack.com`. Which onboarding workflow should we use?\" — uses `detect_platform`\n\n> \"Browse the finance category in the Opedd catalog — show me publishers with at least 50 articles.\" — uses `publisher_directory`\n\n> \"What's in my buyer account? Show me my active API keys.\" — uses `get_buyer_account` (requires `OPEDD_BUYER_JWT`)\n\nThe assistant will call the appropriate Opedd tools, show you the results, and—if you've pre-configured a payment method—can complete a purchase autonomously.\n\n## Payment methods\n\nPurchases use **Stripe** by default (via `pm_...` payment method IDs). USDC on Tempo is also supported by the Opedd API — pass `payment: { method: 'usdc', tx_hash: '0x...' }` directly to `agent-purchase` if building a custom integration.\n\n## Development\n\n```bash\ngit clone https://github.com/Opedd/opedd-mcp\ncd opedd-mcp\nnpm install\nnpm run dev   # runs with tsx (no build step)\nnpm run build # compiles to dist/\n```\n\n## How Opedd compares to search APIs\n\n| | Opedd | Generic search APIs |\n|---|---|---|\n| **What you get** | Licensed content + license key + on-chain proof — all in one API call | Scraped web content, no rights |\n| **Content delivery** | Full article text via API (JSON) — bulk on flat-fee licenses, per-call (metered) on filtered licenses; real-time feed via webhooks | Scraped snippets or full-page dumps |\n| **Content quality** | Curated publisher content (niche B2B newsletters, expert analysis) | Whatever's on the open web |\n| **Rights** | Verifiable license key per article, publisher-authorized | No rights clearance |\n| **Proof** | On-chain (Tempo blockchain) — independently verifiable | None |\n| **EU AI Act** | Compliant — full training data provenance chain | No provenance |\n| **Pricing** | Publisher sets their own price per article | Platform decides |\n| **Delivery modes** | Per-article API, bulk feed (JSON firehose), buyer webhooks (push) | Query-response only |\n| **Protocol** | REST + MCP native | REST only |\n\nOpedd is the **licensed content delivery layer** for AI — not just a licensing wrapper. Publishers upload content, you retrieve it via API with a license attached. One integration gives your pipeline both the content and the legal right to use it.\n\n## Learn more\n\n- [Opedd for AI Agents](https://opedd.com/for-ai-agents?utm_source=github&utm_medium=readme&utm_campaign=mcp) — full documentation, code examples, endpoint reference\n- [API Docs](https://docs.opedd.com) — OpenAPI spec with agent endpoints\n- [Opedd Registry](https://opedd.com/registry?utm_source=github&utm_medium=readme&utm_campaign=mcp) — browse on-chain license proofs\n\n## License\n\nMIT\n",
  "bytes": 14441,
  "sha": "8e28f8fe7fa736ed5420376038d462ed41a7f1fcaa8cec458ffb055f559ad756",
  "repo_slug": "opedd/opedd-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_opedd_opedd_mcp_c8723db4/readme"
}