opedd-mcp 0.12.6 → 0.12.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -21,9 +21,9 @@
21
21
  <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>
22
22
  </p>
23
23
 
24
- Lets 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.
24
+ Lets 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 recorded in a public registry on Tempo, with cryptographic proof.
25
25
 
26
- **Unlike generic search APIs**, Opedd returns content with a verifiable license key — defensible under the EU AI Act and any copyright jurisdiction.
26
+ **Unlike generic search APIs**, Opedd returns content with a verifiable license key — with the rights cleared and a record you can show your legal team.
27
27
 
28
28
  ## Quick start
29
29
 
@@ -94,7 +94,7 @@ Every tool carries a `title` and MCP annotations (`readOnlyHint`, `destructiveHi
94
94
  | `search_passages` | **Paid per answer, or included in a monthly subscription.** Ask a question, get licensed passages that answer it, with citations. Per-question licences: charged once per publisher per question at that publisher's own price, capped at 300 words or 25% of the article, counted cumulatively. Monthly AI answers subscriptions (v0.12.0): included, not capped, from the subscription's start. Narrow with `publishers`, `published_after`, `published_before`, `max_results` (1–25). Needs a buyer key with the `search` scope. Re-asking within 24h is free |
95
95
  | `lookup_content` | Look up an article by URL — returns title, publisher, pricing |
96
96
  | `purchase_license` | Buy a Human republication licence for one article via Stripe — returns OP-XXXX-XXXX key. Requires `terms_accepted: true` (genuine buyer assent to opedd.com/terms; recorded with the licence) |
97
- | `verify_license` | Verify a license key — returns validity, article, publisher, blockchain proof |
97
+ | `verify_license` | Verify a license key — returns validity, article, publisher, public-record proof |
98
98
  | `browse_registry` | Browse the public Opedd registry — lists issued LICENSES (use `publisher_directory` to browse publishers themselves) |
99
99
  | `publisher_directory` | Browse the public Opedd publisher catalog — paginated publishers with article counts + pricing + sample articles (primary buyer-discovery surface for AI labs) |
100
100
  | `place_licence_order` | Place a licence order for one or more publishers: AI answers (`monthly` full text, or `metered` pay-per-request snippets ≤300 words / 25%), Full catalogue (`archive`, `one_time`: everything published up to the order date, kept permanently, no AI training), AI training (`one_time`, back catalogue), client display (`monthly` × end clients). Optional `include_archive: true` on a monthly AI answers order adds each publisher's Full catalogue for complete access. Each publisher is its own Schedule at its own price; returns the order, lines, `unavailable` publishers and `hosted_invoice_url`. Needs `OPEDD_BUYER_JWT` and `terms_accepted: true` |
@@ -114,15 +114,15 @@ Every tool carries a `title` and MCP annotations (`readOnlyHint`, `destructiveHi
114
114
  | `list_feed` | List the articles a licence order covers, with `since` delta-feed support. AI training and Full catalogue orders carry full `content_body` (`content_access: "included"`); monthly orders are discovery-only (`content_access: "retrieval_per_article"`, fetch text via `get_content`); per-request orders are `"search_only"`. With a buyer key, pass `order_id` (optional when the account holds one active order) |
115
115
  | `stream_feed_ndjson` | Bulk-export up to 1000 articles per call via NDJSON wire format. Same content contract and credentials as `list_feed` |
116
116
 
117
- **Requires `OPEDD_BUYER_JWT` (Supabase JWT) — buyer account + audit + compliance + EU AI Act surfaces**
117
+ **Requires `OPEDD_BUYER_JWT` (Supabase JWT) — buyer account + audit + compliance + attestation surfaces**
118
118
 
119
119
  | Tool | Description |
120
120
  |------|-------------|
121
121
  | `get_buyer_account` | Fetch buyer profile + masked API key list — buyer-dashboard mental model |
122
122
  | `list_licence_orders` | The buyer's licence orders and lines; with `order_id`, each line's Schedule document and its SHA-256 (the fingerprint recorded on Tempo). Also works with an audit-scoped `OPEDD_BUYER_TOKEN` |
123
- | `get_audit_events` | Per-event audit ledger with Tempo on-chain attestation inclusion proofs inline (Phase 9.x + 10 M5) |
123
+ | `get_audit_events` | Per-event audit ledger with public-record (Tempo) inclusion proofs inline (Phase 9.x + 10 M5) |
124
124
  | `get_compliance_dossier` | Procurement-defense compliance dossier mapping retrievals to license terms (Phase 11 M4) |
125
- | `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) |
125
+ | `article_53_attestation` | Signed compliance attestation (JWT) for a license — the artifact a buyer hands to legal/procurement (Phase 12 W1.4) |
126
126
 
127
127
  **Requires `OPEDD_PUB_BEARER` (opedd_sk_*; legacy opedd_pub_* still works) — publisher-side**
128
128
 
@@ -131,13 +131,13 @@ Every tool carries a `title` and MCP annotations (`readOnlyHint`, `destructiveHi
131
131
  | `list_publisher_content` | List your own articles with pricing and stats |
132
132
  | `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. |
133
133
 
134
- ### Regulatory framing (CDSM Article 4 vs EU AI Act Article 53 — never conflated)
134
+ ### Compliance artifacts (publisher-side vs buyer-side — never conflated)
135
135
 
136
136
  Per Opedd's platform invariants (W1.6 amendment):
137
137
 
138
138
  - **`rsl_get(publisher_id, jsonld=true)`** → publisher-side **CDSM Article 4(3)** opt-out declaration (signed JSON-LD receipt over the reservation state).
139
- - **`article_53_attestation(license_id)`** → buyer-side **EU AI Act Article 53** attestation (signed HS256 JWT scoped to one license).
140
- - **`get_compliance_dossier(from, to)`** → comprehensive procurement-defense dossier covering BOTH frameworks (publisher CDSM reservation honored + buyer Article 53 evidence chain).
139
+ - **`article_53_attestation(license_id)`** → buyer-side **signed compliance attestation** (HS256 JWT scoped to one license).
140
+ - **`get_compliance_dossier(from, to)`** → comprehensive procurement-defense dossier covering BOTH sides (publisher CDSM reservation honored + buyer attestation evidence chain).
141
141
 
142
142
  These serve different audit-defensibility modes and never share wire format. Tool descriptions cite the W1.6 invariant inline.
143
143
 
@@ -242,7 +242,7 @@ Once configured, you can ask your AI assistant:
242
242
 
243
243
  > "Get me a CDSM Article 4(3) signed receipt for that publisher's reservation state — set `jsonld: true`." — uses `rsl_get` with content negotiation
244
244
 
245
- > "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`)
245
+ > "Generate a signed compliance attestation 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`)
246
246
 
247
247
  > "This publisher just signed up: `https://noahpinion.substack.com`. Which onboarding workflow should we use?" — uses `detect_platform`
248
248
 
@@ -270,12 +270,12 @@ npm run build # compiles to dist/
270
270
 
271
271
  | | Opedd | Generic search APIs |
272
272
  |---|---|---|
273
- | **What you get** | Licensed content + license key + on-chain proof — all in one API call | Scraped web content, no rights |
273
+ | **What you get** | Licensed content + license key + public-record proof — all in one API call | Scraped web content, no rights |
274
274
  | **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 |
275
275
  | **Content quality** | Curated publisher content (niche B2B newsletters, expert analysis) | Whatever's on the open web |
276
276
  | **Rights** | Verifiable license key per article, publisher-authorized | No rights clearance |
277
- | **Proof** | On-chain (Tempo blockchain) — independently verifiable | None |
278
- | **EU AI Act** | Compliant — full training data provenance chain | No provenance |
277
+ | **Proof** | Public record (Tempo) — independently verifiable | None |
278
+ | **Compliance** | Signed attestation + full provenance chain | No provenance |
279
279
  | **Pricing** | Publisher sets their own price per article | Platform decides |
280
280
  | **Delivery modes** | Per-article API, bulk feed (JSON firehose), buyer webhooks (push) | Query-response only |
281
281
  | **Protocol** | REST + MCP native | REST only |
@@ -286,7 +286,7 @@ Opedd is the **licensed content delivery layer** for AI — not just a licensing
286
286
 
287
287
  - [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
288
288
  - [API Docs](https://docs.opedd.com) — OpenAPI spec with agent endpoints
289
- - [Opedd Registry](https://opedd.com/registry?utm_source=github&utm_medium=readme&utm_campaign=mcp) — browse on-chain license proofs
289
+ - [Verify a licence](https://opedd.com/verify?utm_source=github&utm_medium=readme&utm_campaign=mcp) — check any licence key in the public record
290
290
 
291
291
  ## License
292
292
 
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export interface Credentials {
12
12
  buyerToken?: string;
13
13
  /** enterprise access key (ent_*) — /enterprise-license GET feed */
14
14
  accessKey?: string;
15
- /** Supabase JWT — buyer-audit + compliance + Article 53 surfaces */
15
+ /** Supabase JWT — buyer-audit + compliance + attestation surfaces */
16
16
  buyerJwt?: string;
17
17
  }
18
18
  export declare function envCredentials(): Credentials;
package/dist/index.js CHANGED
@@ -263,7 +263,7 @@ function buildTools(has) {
263
263
  },
264
264
  {
265
265
  name: "verify_license",
266
- description: "Checks an Opedd licence key. Returns the licence details (article title, publication, licence type, issue date, amount paid, buyer and blockchain proof status), or that the key was not found.",
266
+ description: "Checks an Opedd licence key. Returns the licence details (article title, publication, licence type, issue date, amount paid, buyer and public-record proof status), or that the key was not found.",
267
267
  inputSchema: {
268
268
  type: "object",
269
269
  required: ["license_key"],
@@ -362,7 +362,7 @@ function buildTools(has) {
362
362
  "verify the reservation was the claimed value at the claimed time. Default `jsonld: false` returns " +
363
363
  "the raw RSL Standard JSON manifest. " +
364
364
  "Per INVARIANTS.md W1.6: this is the PUBLISHER-side CDSM Article 4(3) declaration surface. It is NOT " +
365
- "an EU AI Act Article 53 attestation (which is buyer-side, JWT-auth, via article_53_attestation tool).",
365
+ "a signed compliance attestation (which is buyer-side, JWT-auth, via article_53_attestation tool).",
366
366
  inputSchema: {
367
367
  type: "object",
368
368
  required: ["publisher_id"],
@@ -560,7 +560,7 @@ function buildTools(has) {
560
560
  if (has.buyerJwt || has.buyerToken) {
561
561
  TOOLS.push({
562
562
  name: "list_licence_orders",
563
- description: "Lists the account's licence orders, newest first, each with its lines (publication, licence, unit, price, quantity, status). With order_id, returns one order, each line with its Schedule text and the SHA-256 fingerprint recorded on the Tempo blockchain when the line was issued. Read-only. Requires a buyer API key with the 'audit' scope, a buyer session, or the Opedd connector sign-in.",
563
+ description: "Lists the account's licence orders, newest first, each with its lines (publication, licence, unit, price, quantity, status). With order_id, returns one order, each line with its Schedule text and the SHA-256 fingerprint recorded in the public registry on Tempo when the line was issued. Read-only. Requires a buyer API key with the 'audit' scope, a buyer session, or the Opedd connector sign-in.",
564
564
  inputSchema: {
565
565
  type: "object",
566
566
  properties: {
@@ -572,7 +572,7 @@ function buildTools(has) {
572
572
  });
573
573
  TOOLS.push({
574
574
  name: "get_audit_events",
575
- description: "Returns the account's audit records, one per licensed access, each with its licence terms and on-chain attestation (Merkle root and inclusion proof once confirmed). Filter: event_type ('content_access', 'bulk_content_access' or 'compliance_report_generated'). At most 30 days per call. Read-only. Requires a buyer API key with the 'audit' scope, a buyer session, or the Opedd connector sign-in.",
575
+ description: "Returns the account's audit records, one per licensed access, each with its licence terms and public-record attestation (Merkle root and inclusion proof once confirmed). Filter: event_type ('content_access', 'bulk_content_access' or 'compliance_report_generated'). At most 30 days per call. Read-only. Requires a buyer API key with the 'audit' scope, a buyer session, or the Opedd connector sign-in.",
576
576
  inputSchema: {
577
577
  type: "object",
578
578
  properties: {
@@ -617,14 +617,14 @@ function buildTools(has) {
617
617
  });
618
618
  TOOLS.push({
619
619
  name: "article_53_attestation",
620
- description: "Issue a signed JWT attesting to EU AI Act Article 53 compliance for a specific license via " +
620
+ description: "Issue a signed compliance attestation (a JWT) for a specific license via " +
621
621
  "GET /eu-ai-act/article-53-attestation (Phase 12 Wave 1 W1.4). " +
622
622
  "Returns a freshly-signed HS256 JWT regulators can verify offline against the canonical signing key. " +
623
623
  "Embeds: license context, usage-count over the attestation window, the most-recent Tempo Merkle root, " +
624
624
  "and canonical claims (iss/sub/iat/exp/jti/aud). " +
625
- "**The artifact AI labs hand to legal/procurement for EU AI Act Article 53(1)(d) transparency-obligation evidence.** " +
626
- "Per INVARIANTS.md W1.6: this attests to EU AI Act Article 53 ONLY (buyer-side GPAI-model-provider " +
627
- "transparency obligation). It does NOT discharge a publisher's CDSM Article 4(3) reservation obligation — " +
625
+ "**The artifact a buyer hands to legal/procurement as evidence of where its content came from.** " +
626
+ "Per INVARIANTS.md W1.6: this is the buyer-side attestation ONLY (how a licence was used). " +
627
+ "It does NOT discharge a publisher's CDSM Article 4(3) reservation obligation — " +
628
628
  "that lives on the rsl_get tool (jsonld=true variant). Never conflate. " +
629
629
  "Optional `content_id` scopes the attestation to one article; default is license-wide. " +
630
630
  "Window cap: 365 days. Auth: an audit-scoped buyer API key (OPEDD_BUYER_TOKEN) or OPEDD_BUYER_JWT.",
@@ -653,7 +653,7 @@ function buildTools(has) {
653
653
  });
654
654
  TOOLS.push({
655
655
  name: "get_compliance_dossier",
656
- description: "Returns the account's compliance dossier for a period: one row per licensed article, with article metadata, licence terms, on-chain attestation and flags for EU AI Act Article 53, CDSM Article 4(3) and text-and-data-mining reservations. At most 90 days per call; longer periods are paginated with _meta.next_cursor. Each call is recorded in the account's audit log. Requires a buyer API key with the 'audit' scope, a buyer session, or the Opedd connector sign-in.",
656
+ description: "Returns the account's compliance dossier for a period: one row per licensed article, with article metadata, licence terms, public-record attestation and compliance flags (the signed attestation, CDSM Article 4(3) and text-and-data-mining reservations). At most 90 days per call; longer periods are paginated with _meta.next_cursor. Each call is recorded in the account's audit log. Requires a buyer API key with the 'audit' scope, a buyer session, or the Opedd connector sign-in.",
657
657
  inputSchema: {
658
658
  type: "object",
659
659
  required: ["from", "to"],
@@ -776,7 +776,7 @@ export const TOOL_ANNOTATIONS = {
776
776
  list_licence_orders: read("List your licence orders"),
777
777
  get_audit_events: read("Read your audit log"),
778
778
  get_buyer_account: read("Read your buyer account"),
779
- article_53_attestation: read("Get an EU AI Act Article 53 attestation"),
779
+ article_53_attestation: read("Get a signed compliance attestation"),
780
780
  get_compliance_dossier: read("Get your compliance dossier"),
781
781
  list_publisher_content: read("List your published articles"),
782
782
  // Upserts the publisher's own articles; an upsert can overwrite.
@@ -809,9 +809,9 @@ export const ALL_TOOLS = buildTools({
809
809
  // at initialize — it was empty until 2026-08-26 while the pitch lived only in
810
810
  // registry metadata agents never see at runtime. Exported so the hosted
811
811
  // gateway (opedd-mcp-gateway) serves the identical text.
812
- export const SERVER_INSTRUCTIONS = "Opedd is the licensing rail between expert publishers and AI products: discover, purchase, verify and " +
813
- "retrieve rights-cleared expert content — one verifiable license key per article, Tempo on-chain " +
814
- "attestation, and EU AI Act Article 53 compliance artifacts (audit ledger + dossiers). Use it instead of " +
812
+ export const SERVER_INSTRUCTIONS = "Opedd is content licensing for the AI era, between expert publishers and AI products: discover, purchase, verify and " +
813
+ "retrieve rights-cleared expert content — one verifiable license key per article, a public record on " +
814
+ "Tempo, and compliance artifacts (audit ledger, dossiers and signed attestations). Use it instead of " +
815
815
  "unlicensed scraping for RAG, AI search, and training corpora.\n\n" +
816
816
  `No credentials needed: ${NO_AUTH_TOOLS}.\n` +
817
817
  "Buyer tools (purchase, account, audit/compliance): free buyer signup at https://opedd.com/buyer/signup " +
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "opedd-mcp",
3
- "version": "0.12.6",
4
- "description": "Licensed, rights-cleared content for AI agents — verifiable license keys, on-chain proof, and EU AI Act attestation. The MCP alternative to unlicensed scraping for RAG and AI search.",
3
+ "version": "0.12.7",
4
+ "description": "Content licensing for the AI era. Licensed, rights-cleared content for AI agents, with a verifiable license key for every article. The MCP alternative to unlicensed scraping for RAG and AI search.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "mcpName": "com.opedd/opedd-mcp",