Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

Opedd — Licensed Content for AI

REMOTE · MCP.OPEDD.COM · 2 COMPONENTS · SCANNED AUG 3

Licensed, rights-cleared content for AI agents - verifiable license keys + EU AI Act attestation.

+5 this week 66 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability58
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3455 tokens (~203/item across 17 items; 17 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.opedd.com

# add to Claude Code
claude mcp add --transport http com-opedd-opedd-mcp https://mcp.opedd.com/mcp
# ~/.codex/config.toml
[mcp_servers.com-opedd-opedd-mcp]
url = "https://mcp.opedd.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-opedd-opedd-mcp": {
      "type": "remote",
      "url": "https://mcp.opedd.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-opedd-opedd-mcp --url https://mcp.opedd.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-opedd-opedd-mcp:
    url: "https://mcp.opedd.com/mcp"
// mcp.json
{
  "mcpServers": {
    "com-opedd-opedd-mcp": {
      "type": "http",
      "url": "https://mcp.opedd.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 60

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.opedd.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.opedd.com CN=YR2,O=Let's Encrypt,C=US 11 Jul 2026 9 Oct 2026 RSA 2048 SHA256-RSA 5a7f8f426c16fe303a3c93338388215bee1
SANs: mcp.opedd.com
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC insecure

Validation of mcp.opedd.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
opedd.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.opedd.com/mcp Verified 200
http (plaintext) http://mcp.opedd.com/mcp HTTPS enforced 308 https://mcp.opedd.com/mcp
MCP tools — 17 exposed · ~3,455 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
article_53_attestation ~343

Issue a signed JWT attesting to EU AI Act Article 53 compliance for a specific license via GET /eu-ai-act/article-53-attestation (Phase 12 Wave 1 W1.4). Returns a freshly-signed HS256 JWT regulators can verify offline against the canonical signing key. Embeds: license context, usage-count over the attestation window, the most-recent Tempo Merkle root, and canonical claims (iss/sub/iat/exp/jti/aud). **The artifact AI labs hand to legal/procurement for EU AI Act Article 53(1)(d) transparency-obligation evidence.** Per INVARIANTS.md W1.6: this attests to EU AI Act Article 53 ONLY (buyer-side GPAI-model-provider transparency obligation). It does NOT discharge a publisher's CDSM Article 4(3) reservation obligation — that lives on the rsl_get tool (jsonld=true variant). Never conflate. Optional `content_id` scopes the attestation to one article; default is license-wide. Window cap: 365 days. Requires OPEDD_BUYER_JWT.

NameTypeReqDescription
content_idstringOptional UUID of a specific article to scope the attestation. Default: license-wide.
license_idstringyesUUID of the enterprise_license OR legacy individual license to attest. Buyer must own it.
window_endstringISO 8601 upper bound. Default: now. Window may not exceed 365 days (hard cap).
window_startstringISO 8601 lower bound of the attestation window. Default: now - 90 days.

No output schema declared.

No examples provided.

browse_registry ~107

Browse the public Opedd license registry. Returns recently issued licenses and licensable content. Filter by publisher_id to explore all content from a specific publisher. Filter by article_id to see all licenses issued for a specific article.

NameTypeReqDescription
article_idstringFilter results to a specific article (UUID)
limitnumberNumber of results to return (default: 10, max: 50)
publisher_idstringFilter results to a specific publisher (UUID)

No output schema declared.

No examples provided.

detect_platform ~203

Detect the content platform behind a URL via POST /detect-platform (Phase 12 Wave 3 W3.1). Public no-auth lookup. Given a URL, identifies what platform powers it (Substack / Beehiiv / Ghost / Medium / Brevo / custom) and returns the suggested onboarding workflow. Hostname-detectable platforms (Substack subdomain, Beehiiv suffix, etc.) resolve in milliseconds; custom domains may take ~few seconds while the detector probes well-known platform endpoints in parallel. Returns: {platform, confidence, archive_method, forward_method, required_credentials, instructions}. The archive_method + forward_method fields are the two onboarding-workflow inputs Opedd's setup wizard reads (one for historical content backfill, one for new-content forward stream). instructions is human-readable operator copy explaining the inferred path.

NameTypeReqDescription
urlstringyesPublisher URL to inspect (any well-formed URL works; hostname-match short-circuits the probe path).

No output schema declared.

No examples provided.

get_audit_events ~229

Browse per-event audit rows for the authenticated buyer via GET /buyer-audit (Phase 9.x). Each row carries license_terms + Tempo on-chain attestation (merkle_root + inclusion_proof when blockchain_status='confirmed'). Optional filter by event_type ('content_access', 'bulk_content_access', 'compliance_report_generated'). Window cap 30 days (vs 90-day cap on get_compliance_dossier). Attestation inclusion proof is included on every row by default — no separate flag needed (M6.4 consolidation per founder ratification: tools 4 + 6 merged into one cleaner mental model). Requires OPEDD_BUYER_JWT (Supabase session JWT from the buyer portal).

NameTypeReqDescription
cursorstringOpaque cursor for pagination
event_typestringOptional event-class filter
fromstringISO 8601 timestamp lower bound (inclusive)
limitnumberMax events per response (default: 50, max: 200)
tostringISO 8601 timestamp upper bound (inclusive)

No output schema declared.

No examples provided.

get_buyer_account ~163

Fetch the authenticated buyer's account profile + masked API key list via GET /buyer-account. Returns the enterprise_buyers row (contact_email, buyer_org, created_at, etc.) plus a list of all buyer-side API keys with masked prefixes (NEVER plaintext post-issuance — only the 12-char key_prefix is returned, e.g. 'opedd_buyer_'). Use cases: post-signup verification ('what was just issued to me?'), buyer dashboard mental model ('what licenses do I currently hold?'), audit prep ('show me the key list before rotation'). For full mid-lifecycle license details (filter_rules, billing, payouts), buyers consult the buyer portal at opedd.com/buyer. Requires OPEDD_BUYER_JWT.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_compliance_dossier ~228

Generate a procurement-defense compliance dossier via GET /buyer-compliance-report (Phase 11 M4). Per-row dossier shape: 25+ fields including 17 RAG-essential article fields + full license_terms + on_chain_attestation block. Bulk envelopes fan out into per-article rows by iterating metadata.article_ids[]. Self-audit invariant: every successful call writes one license_events row with event_type='compliance_report_generated' BEFORE returning. Window cap: 90 days per call (vs 30-day cap on get_audit_events). For annual audits, paginate via _meta.next_cursor across 4 quarterly windows. Compliance framework anchors (boolean flags) map to EU AI Act Article 53, CDSM Article 4(3), on-chain attestation, TDM reservation. Requires OPEDD_BUYER_JWT.

NameTypeReqDescription
cursorstringOpaque cursor for pagination
fromstringyesISO 8601 timestamp lower bound (inclusive)
tostringyesISO 8601 timestamp upper bound (inclusive). Window cap 90 days.

No output schema declared.

No examples provided.

get_content ~252

Retrieve the full body of a licensed article using a buyer API token (opedd_buyer_live_* canonical; opedd_buyer_test_* for sandbox). Requires OPEDD_BUYER_TOKEN env var (create one at opedd.com/licenses after purchasing). Works for per-article licenses (token scoped to that article) and archive licenses (token covers all publisher content). The publisher must have content delivery enabled and must have pushed content for the article. Phase 11 M2 RAG-extended shape: response includes 7 RAG-essential metadata fields — author, language, word_count, content_hash, image_urls, canonical_url, tags. On pre-2026-05-14 historical articles, optional fields (author/language/image_urls/canonical_url/tags) may be NULL. NULL means 'data unavailable for this article', NOT 'explicitly empty' — treat as data-missing when filtering; do not interpret as anti-match.

NameTypeReqDescription
article_idstringyesThe Opedd article UUID to retrieve content for
buyer_tokenstringBuyer API token (opedd_buyer_live_* or opedd_buyer_test_*). Falls back to OPEDD_BUYER_TOKEN env var.

No output schema declared.

No examples provided.

list_feed ~167

List articles from a buyer's licensed catalog via GET /enterprise-license (Phase 10 + 11). Returns JSON-format response with paginated articles. Use `since` (ISO 8601) for delta-feed polling — only articles published after the timestamp. Use `cursor` for pagination across pages. Requires OPEDD_ACCESS_KEY (ent_* enterprise access key). For larger bulk corpus pulls, use stream_feed_ndjson (up to 1000 articles per call vs 200 here).

NameTypeReqDescription
cursorstringOpaque cursor from the prior response's data.pagination.next_cursor
limitnumberMax articles per response (default: 50, max: 200)
sincestringISO 8601 timestamp — return only articles with published_at > since

No output schema declared.

No examples provided.

list_publisher_content ~109

List all licensable articles for the authenticated publisher (requires OPEDD_PUB_BEARER, or legacy OPEDD_API_KEY). Returns articles with titles, descriptions, pricing, and sales statistics. Use article IDs from this list to purchase licenses via purchase_license.

NameTypeReqDescription
limitnumberNumber of results (default: 20, max: 100)
offsetnumberPagination offset (default: 0)
typestringFilter by license type availability

No output schema declared.

No examples provided.

lookup_content ~82

Look up a piece of content on the Opedd registry by URL. Returns the article title, publisher, available license types, and pricing (human republication price and AI training/inference price). Always call this first to check if content is licensable and what it costs.

NameTypeReqDescription
urlstringyesThe canonical URL of the article or content to look up

No output schema declared.

No examples provided.

publisher_directory ~209

Browse the public Opedd publisher catalog via GET /publisher-directory. Returns paginated publishers with article counts, pricing (per-article + annual + monthly-forward-feed), plan, and sample articles (RAG-extended metadata). **The primary discovery surface for AI labs to find Opedd-licensable publishers** — distinct from `browse_registry` (which lists issued LICENSES, not publishers). Filter by category (case-insensitive substring), min_articles, or verified status. Public no-auth — useful pre-purchase scoping before buyers commit to enterprise-license POST.

NameTypeReqDescription
categorystringCase-insensitive substring filter on publisher category (e.g. 'finance', 'AI').
limitnumberPage size cap.
min_articlesnumberFilter to publishers with at least this many licensable articles.
offsetnumberPagination offset.
verifiedstring'true' to show only verified publishers (default), 'false' for unverified.

No output schema declared.

No examples provided.

purchase_enterprise_license ~322

Purchase a bulk enterprise license covering multiple publishers (Phase 10). Returns a Stripe client_secret for payment completion + the enterprise_license_id. After payment, an ent_* access key is emailed to buyer_email. Scopes: 'custom' (pass-through publisher_ids), 'platform_wide' (auto-resolve all opted-in publishers), 'filtered' (Phase 10 filter_rules). License tiers: 'rag' (= ai_retrieval), 'training' (= ai_training, flat-fee not metered), 'inference' (= ai_retrieval), 'full_ai' (writes both retrieval + training records).

NameTypeReqDescription
billing_typestringBilling cadence (default: annual)
buyer_emailstringyesEmail to deliver the access key after payment
buyer_orgstringyesBuyer organization name (for billing + audit ledger)
buyer_webhook_urlstringOptional HMAC-signed webhook for content.published events on covered publishers
duration_monthsnumberLicense duration in months (default: 12)
filter_rulesobjectRequired when scope='filtered'. See Phase 10 docs for shape: excluded_publisher_ids / direct_license_carveouts / categories / max_price_per_event.
license_tierstringLicense tier (default: rag)
publisher_idsarrayyesArray of publisher UUIDs. Required for scope='custom'; ignored for platform_wide/filtered (resolved server-side).
scopestringCoverage scope (default: custom)

No output schema declared.

No examples provided.

purchase_license ~279

Purchase a content license from the Opedd protocol using a Stripe payment method. Returns a license key (format: OP-XXXX-XXXX) and a certificate URL. The buyer receives a Handshake Email with their license key. Set OPEDD_BUYER_EMAIL and OPEDD_PAYMENT_METHOD_ID env vars to avoid passing them on every call. License types: 'human' = republication rights, 'ai' = training dataset rights, 'ai_inference' = inference/RAG rights.

NameTypeReqDescription
article_idstringOpedd article UUID (use this OR article_url)
article_urlstringURL of the article to license (use this OR article_id)
buyer_emailstringEmail address for the license. Falls back to OPEDD_BUYER_EMAIL env var.
buyer_namestringFull name of the buyer (for the license record and certificate)
buyer_organizationstringOrganization or company name (for enterprise/editorial licenses)
intended_usestringIntended use of the licensed content
license_typestringyeshuman = republication/editorial rights, ai = training dataset rights, ai_inference = inference/RAG rights
payment_method_idstringStripe payment method ID (pm_...). Falls back to OPEDD_PAYMENT_METHOD_ID env var.

No output schema declared.

No examples provided.

push_content ~131

Push your published articles to Opedd so they can be licensed to AI buyers (requires OPEDD_PUB_BEARER — your opedd_pub_ publisher key). Send 1–100 articles per call; batch larger back-catalogues into multiple calls. Each article needs title, url, and html_body — everything else is optional (published_at defaults to now). This is the supply-side companion to list_publisher_content: use it to onboard your archive or push new content with no code, straight from your AI assistant.

NameTypeReqDescription
articlesarrayyes1–100 articles to push in this call.

No output schema declared.

No examples provided.

rsl_get ~322

Fetch a publisher's RSL Standard manifest via GET /rsl-manifest (Phase 12 Wave 1 W1.1). Public no-auth endpoint — discovery surface for AI agents/crawlers wanting to know what's licensable from a publisher BEFORE going through the buyer-account signup flow. Returns the 4 canonical license types (ai_retrieval, ai_training, human_per_article, human_full_archive) the publisher has opted into, plus the EU CDSM Article 4(3) opt-out posture (`tdm_reservation`). Set `jsonld: true` to request the JSON-LD shape with embedded HMAC-SHA256 signed receipt over the CDSM Article 4(3) reservation state + `tdm:reservationSignedAt` timestamp — regulators can post-hoc verify the reservation was the claimed value at the claimed time. Default `jsonld: false` returns the raw RSL Standard JSON manifest. Per INVARIANTS.md W1.6: this is the PUBLISHER-side CDSM Article 4(3) declaration surface. It is NOT an EU AI Act Article 53 attestation (which is buyer-side, JWT-auth, via article_53_attestation tool).

NameTypeReqDescription
jsonldbooleanIf true, request JSON-LD shape (Accept: application/ld+json) with embedded HMAC-SHA256 signed receipt. Default false returns raw RSL Standard JSON shape.
publisher_idstringyesUUID of the publisher whose RSL manifest to fetch. Publisher must be verified.

No output schema declared.

No examples provided.

stream_feed_ndjson ~230

Bulk-export a buyer's licensed catalog via GET /enterprise-license?format=ndjson (Phase 11 M3). Returns up to 1000 articles per call (collected from line-delimited JSON wire format). Each article emits one usage_records row (analytics-only sentinel 'bulk-export:<request_id>:<article_id>' — not metered-billable per the revenue-model bifurcation invariant). Use `since` (ISO 8601) for delta-feed. Use `cursor` to paginate beyond 1000. Backend supports 5000 articles per call; the MCP cap is 1000 for transport reasonability. Real bulk-ingest pipelines should use the Python SDK (pip install opedd) directly — not via MCP. Requires OPEDD_ACCESS_KEY (ent_*).

NameTypeReqDescription
cursorstringOpaque cursor from the prior result's meta.next_cursor
limitnumberMax articles per response (default: 200, max: 1000)
sincestringISO 8601 timestamp — return only articles with published_at > since

No output schema declared.

No examples provided.

verify_license ~79

Verify the authenticity of an Opedd license key. Returns license details including: article title, publisher, license type, issue date, amount paid, buyer info, and blockchain proof status. Use this to confirm a license is valid before using licensed content.

NameTypeReqDescription
license_keystringyesThe license key to verify (format: OP-XXXX-XXXX)

No output schema declared.

No examples provided.