Skip to main content
Glama

Opedd — Licensed Content for AI

Server Details

Content licensing for the AI era: licensed, rights-cleared content for AI agents.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 65 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Opedd/opedd-mcp
GitHub Stars
1
Server Listing
Opedd

TDQS

A3.8/5.0

Scored across 20 tools

Disambiguation3/5

Several tools overlap in purpose: list_feed vs stream_feed_ndjson (same catalog, different page size), browse_registry vs publisher_directory vs list_licence_orders vs list_publisher_content are all listing surfaces, and get_content vs list_feed vs search_passages all return article content. The very detailed descriptions explicitly delineate scope (public vs auth, buyer vs publisher, per-article vs bulk), so a careful agent can sort them out, but the boundaries require reading prose rather than being self-evident.

Naming Consistency3/5

A verb_noun snake_case pattern dominates (get_content, list_feed, search_passages, push_content, place_licence_order), but there are noun-only outliers (publisher_directory, article_53_attestation) and one reversed form (rsl_get). Spelling is inconsistent between British and American conventions (list_licence_orders/place_licence_order vs purchase_license/verify_license), which is readable but not predictable.

Tool Count3/5

At 20 tools this sits in the heavy band. The domain is genuinely large (buyer side, publisher side, compliance, public discovery), and most tools map to distinct operations, but consolidation (e.g. folding stream_feed_ndjson into list_feed, or a single discovery tool) could reduce surface area without losing capability.

Completeness4/5

Coverage is broad across the licensing lifecycle: discovery, ordering, purchasing, content push/pull, bulk export, audit, compliance dossiers, attestation, and verification. Gaps are minor lifecycle operations such as cancelling/refunding an order and rotating buyer API keys, which agents can work around via the buyer portal.

Available Tools

20 tools
article_53_attestationGet a signed compliance attestationA
Read-onlyIdempotent
Inspect

Issue a signed compliance attestation (a JWT) 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 a buyer hands to legal/procurement as evidence of where its content came from. Per INVARIANTS.md W1.6: this is the buyer-side attestation ONLY (how a licence was used). 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. Auth: an audit-scoped buyer API key (OPEDD_BUYER_TOKEN) or OPEDD_BUYER_JWT.

ParametersJSON Schema
NameRequiredDescriptionDefault
content_idNoOptional UUID of a specific article to scope the attestation. Default: license-wide.
license_idYesUUID of the enterprise_license OR legacy individual license to attest. Buyer must own it.
window_endNoISO 8601 upper bound. Default: now. Window may not exceed 365 days (hard cap).
window_startNoISO 8601 lower bound of the attestation window. Default: now - 90 days.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: the HS256 signing scheme, offline verification against a canonical key, the embedded claims (license context, usage counts, Tempo Merkle root, sub/iat/exp/jti/aud), the 365-day window cap, and required auth (audit-scoped OPEDD_BUYER_TOKEN or OPEDD_BUYER_JWT).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and endpoint, then the return payload, then the critical scope disclaimer. Dense but nearly every sentence earns its place; the JWT claim enumeration and the INVARIANTS.md W1.6 citation are slightly verbose for a description field.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of describing the return value, and it does so concretely (freshly-signed JWT with named claims and offline verifiability). Auth requirements, window cap, and scoping defaults are all present, leaving no gap an agent would need to guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description still adds meaning the schema does not carry alone by stating the default window is license-wide and reinforcing the hard 365-day cap, though it does not add format detail beyond the ISO 8601 notes already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Issue a signed compliance attestation (a JWT) for a specific license' with the exact endpoint. It explicitly carves out scope against a sibling ('this is the buyer-side attestation ONLY... that lives on the rsl_get tool'), so an agent can distinguish it from verify_license, get_compliance_dossier, and rsl_get without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States when to use it ('the artifact a buyer hands to legal/procurement as evidence of where its content came from') and explicitly when not to ('does NOT discharge a publisher's CDSM Article 4(3) reservation obligation'), naming the alternative tool and variant (rsl_get with jsonld=true). This is textbook when/when-not/alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_registryBrowse the licence registryA
Read-onlyIdempotent
Inspect

Lists licences recently issued on Opedd and the content they cover. Filters: publisher_id and article_id. Public; no key needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (default: 10, max: 50)
article_idNoFilter results to a specific article (UUID)
publisher_idNoFilter results to a specific publisher (UUID)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely new behavioral context beyond the annotations: it is public and requires no API key, which is an auth requirement an agent needs. It omits pagination/default-limit behavior, keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, zero filler: what it returns, the filters, then the auth posture. Front-loaded with the resource and scope, so an agent can decide quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description states what the results contain (licences and the content they cover), which covers the return-value burden. Filters, defaults and auth are all accounted for; only result ordering/pagination detail is absent, which is minor for a read-only browse tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with all three parameters documented (limit, article_id, publisher_id), so the schema carries parameter meaning. The description only restates the two filter names and says nothing about limit or UUID format, adding no value beyond the schema. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Lists licences recently issued on Opedd and the content they cover,' which tells an agent exactly what comes back. It does not explicitly differentiate itself from close siblings such as list_licence_orders or verify_license, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Public; no key needed' plus the two named filters imply a browsing/discovery use case, but there is no explicit when-to-use statement, no exclusions, and no pointer to an alternative for related needs (e.g. list_licence_orders). Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_platformDetect a site's publishing platformA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublisher URL to inspect (any well-formed URL works; hostname-match short-circuits the probe path).

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, non-destructive, but the description adds real behavioral context beyond them: no auth required, hostname-matched platforms resolve in milliseconds while custom domains take a few seconds because the detector probes well-known endpoints in parallel. It also enumerates the returned fields and explains what archive_method/forward_method and instructions mean downstream.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, endpoint, and auth model before behavior and return shape, and every sentence carries information. The internal build tag '(Phase 12 Wave 3 W3.1)' and dense parenthetical detail are minor noise for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the return fields and their role, plus latency expectations. It leaves the semantics of the confidence value (scale/interpretation) unexplained, a minor gap for a detection tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single url parameter, so the schema already documents it. The description's added detail (any well-formed URL works, hostname-match short-circuits the probe) largely restates what the schema description already says, meeting but not exceeding the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (detect the content platform behind a URL) and names the exact endpoint, plus enumerates the detection targets (Substack / Beehiiv / Ghost / Medium / Brevo / custom). It is clearly distinct from siblings like verify_license, lookup_content, and purchase_license.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use: public no-auth lookup on a publisher URL, returning the onboarding workflow inputs that Opedd's setup wizard consumes. It does not name an alternative tool or state when NOT to use it, so it falls short of explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_audit_eventsRead your audit logA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO 8601 timestamp upper bound (inclusive)
fromNoISO 8601 timestamp lower bound (inclusive)
limitNoMax events per response (default: 50, max: 200)
cursorNoOpaque cursor for pagination
event_typeNoOptional event-class filter

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so safety is covered. The description adds genuinely useful context beyond them: the 30-day-per-call window limit and the three accepted auth paths ('audit' scope API key, buyer session, or Opedd connector sign-in). It stops short of describing pagination or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most important content (what is returned) is front-loaded, followed by filter, limits and auth in efficient order. The sentences are dense but each carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the burden of describing return values (audit records with licence terms and attestation), plus filters, the time-window limit, and auth requirements. Only pagination/response-size behavior is left implicit, a minor gap for a read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the enum values and ISO timestamp formats are already documented. The description adds marginal value by restating the event_type options and imposing the 30-day constraint on from/to, but does not explain limit or cursor behavior beyond what the schema says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the account's audit records, one per licensed access') and details the record contents (licence terms, Merkle root, inclusion proof). It does not name or distinguish itself from any sibling tool, so it lands short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage via the event_type filter values and the 'at most 30 days per call' constraint, giving the agent a sense of how to scope a query. However, it never states when to reach for this tool versus alternatives like get_compliance_dossier or verify_license, and there are no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_buyer_accountRead your buyer accountA
Read-onlyIdempotent
Inspect

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 (JWT-only by design: this surface manages API keys, and a key must never mint keys).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds substantive context: keys are masked to a 12-char prefix post-issuance and never returned in plaintext, and the call requires OPEDD_BUYER_JWT with a stated rationale ('a key must never mint keys'). That auth constraint and data-masking behavior are not derivable from the annotations or the empty schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and return payload in the first sentence, with use cases and auth constraints following in a logical order. It is on the long side and the three parenthetical use-case quotes are somewhat decorative, but every clause carries differentiating information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description correctly compensates by enumerating the returned fields (enterprise_buyers row with contact_email, buyer_org, created_at) and the shape of the key list (masked 12-char prefixes). Combined with the auth requirement, an agent has everything needed to call and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is no parameter syntax the description needs to compensate for. The schema coverage signal is 100% on an empty object, so nothing is left undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch the authenticated buyer's account profile + masked API key list') and even names the underlying endpoint GET /buyer-account. This clearly separates it from sibling read tools like verify_license or list_licence_orders, which concern licenses rather than the buyer's own account and key inventory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three concrete trigger scenarios (post-signup verification, dashboard mental model, audit prep before rotation) and explicitly routes the agent elsewhere ('buyer portal at opedd.com/buyer') for mid-lifecycle license details such as filter_rules, billing, and payouts. The only gap is that it doesn't disambiguate against sibling MCP tools that might also surface buyer/license data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_compliance_dossierGet your compliance dossierA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesISO 8601 timestamp upper bound (inclusive). Window cap 90 days.
fromYesISO 8601 timestamp lower bound (inclusive)
cursorNoOpaque cursor for pagination

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds behavior they cannot express: each call is written to the account's audit log (an observable side effect), the 90-day hard cap with cursor paging, and the specific scope ('audit') and session requirements. That is substantive disclosure beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the return shape, followed by limits/pagination and then auth. No filler, no restatement of the title, and every clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description describes the return structure (one row per licensed article with named fields), the pagination contract, the audit-log side effect, and all auth prerequisites. An agent has everything needed to call it successfully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents from, to, and cursor, including the inclusive-bound and 90-day-cap notes. The description reinforces the window cap and cursor behavior but adds no new syntax or formatting detail. Baseline 3 applies when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (returns) plus resource (account's compliance dossier) and an enumeration of the row contents: article metadata, licence terms, attestation, and compliance flags. This is distinguishable from siblings like get_audit_events or article_53_attestation without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: 90-day window cap, pagination via _meta.next_cursor, and the three acceptable auth paths (buyer API key with 'audit' scope, buyer session, Opedd connector sign-in). It does not explicitly state when to prefer this over a sibling such as article_53_attestation, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contentRead a licensed articleA
Read-onlyIdempotent
Inspect

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 Human republication licences and for licence orders: AI answers monthly and client display return full text. Your self-serve buyer API key reads articles under every order your account holds — no separate order token is needed. AI answers pay-per-request (including the self-serve licence) does NOT retrieve articles: it answers 403 SEARCH_ONLY_LICENCE — ask a question with search_passages instead. Articles the publisher stopped licensing answer 403 ARTICLE_EXCLUDED. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYesThe Opedd article UUID to retrieve content for
buyer_tokenNoBuyer API token (opedd_buyer_live_* or opedd_buyer_test_*). Falls back to OPEDD_BUYER_TOKEN env var.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds significant context beyond annotations: token format, env var requirement, licence types, error codes, and NULL semantics for pre-2026-05-14 articles. Annotations already indicate read-only, idempotent, closed-world behavior, so this is thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose but includes several dense parentheticals and error codes. It is informative but somewhat verbose and could be reorganized for better flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all critical context: authentication, licence applicability, error conditions, response shape, and NULL handling. No output schema, but it explains the RAG-extended response fields adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already documents both parameters at 100% coverage. The description adds value by specifying token format (opedd_buyer_live_* / opedd_buyer_test_*) and env var fallback, plus the note that no separate order token is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the specific action: retrieve the full body of a licensed article. It distinguishes itself from search_passages by noting that pay-per-request AI answers do not retrieve articles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers when to use (per-article Human republication licences, AI answers monthly, client display) and when not to use (AI answers pay-per-request → use search_passages). Also covers error conditions 403 SEARCH_ONLY_LICENCE and 403 ARTICLE_EXCLUDED.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_feedList a licence order's articlesA
Read-onlyIdempotent
Inspect

List articles from a buyer's licensed catalog via GET /enterprise-license (Phase 10 + 11). Content contract: AI training orders include full content_body for the back catalogue up to the order date (content_access 'included'). Every other order is discovery-only (content_body null): AI answers monthly and client display fetch text per article via get_content (content_access 'retrieval_per_article'); pay-per-request fetches billed snippets via get_content (content_access 'metered_per_call'). 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. Credentials: the order's enterprise access key (OPEDD_ACCESS_KEY, ent_*) OR your buyer API key (OPEDD_BUYER_TOKEN) with order_id — if your account holds exactly one active order, order_id may be omitted; with several, the error lists them. For larger bulk corpus pulls, use stream_feed_ndjson (up to 1000 articles per call vs 200 here).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax articles per response (default: 50, max: 200)
sinceNoISO 8601 timestamp — return only articles with published_at > since
cursorNoOpaque cursor from the prior response's data.pagination.next_cursor
order_idNoThe licence order to list (UUID, from list_licence_orders). Used with a buyer API key; ignored with an ent_* key.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to restate safety. It adds real behavioral context beyond the annotations: the content contract per order type (included/discovery-only/metered), null content_body semantics, pagination, and delta-feed polling. It does not describe pagination mechanics such as next_cursor shape, but the schema covers cursor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Each sentence earns its place with contract and routing info, but the description is dense and front-loads implementation detail ('Phase 10 + 11') that does not help an agent select or invoke the tool. It is information-rich but could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, paginated list tool with a 100%-covered schema and annotations, the description is complete enough: it covers content access modes, auth, pagination, and bulk alternatives. The only gap is inherit return-shape detail for the 'included' content contract, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters well. The description reinforces since, cursor, and order_id semantics, but the schema is doing the heavy lifting; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('List articles from a buyer's licensed catalog') and even cites the endpoint. It explicitly distinguishes itself from stream_feed_ndjson and get_content, so an agent can tell what this tool does versus its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternatives and the conditions that select them: get_content for per-article text, stream_feed_ndjson for bulk pulls over 200 articles. It also gives credential/order_id prerequisites and the omittable-order_id case, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_licence_ordersList your licence ordersA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOrders per page (default 20, max 100)
cursorNoOpaque cursor from the prior response's pagination.next_cursor
order_idNoRead one order (UUID) including Schedule documents

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile (readOnlyHint, idempotentHint, destructiveHint=false), yet the description adds materially new behavior: required credentials (buyer API key with 'audit' scope, buyer session, or Opedd connector sign-in), newest-first ordering, and the registry fingerprint semantics. These are exactly the operational facts annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then the order_id variant, then auth — a sensible information hierarchy. The parenthetical field list is dense but each element earns its place; only marginal tightening is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating returned line fields and the extra Schedule/fingerprint data in single-order mode, and it covers auth and pagination. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes further by mapping order_id to concrete return behavior ('returns one order, each line with its Schedule text and the SHA-256 fingerprint'), adding meaning the schema's one-line field description does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (lists the account's licence orders) plus the ordering and per-line contents, which no sibling tool shares. It also disambiguates its two modes (list vs. single order via order_id), so an agent can tell it apart from place_licence_order and verify_license without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear conditional: omit order_id to page through orders, supply order_id to retrieve one order with Schedule text and registry fingerprint. It does not name alternative tools (e.g., browse_registry, verify_license) or state exclusions, so usage is clear but not fully routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_publisher_contentList your published articlesA
Read-onlyIdempotent
Inspect

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. Set include_body=true to read back the STORED article text exactly as licensed buyers receive it (this is how you check that a push_content call stored what you meant; bodies are truncated to 8,000 characters per article, page size 20, paginate with cursor). Use article IDs from this list to purchase licenses via purchase_license.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoWith include_body=true: fetch exactly one of your articles by id (full body, no truncation).
typeNoFilter by license type availability (ignored when include_body is true)
limitNoNumber of results (default: 20, max: 100; max 20 when include_body is true)
cursorNoOpaque next_cursor from a previous include_body=true call.
offsetNoPagination offset (default: 0; ignored when include_body is true — use cursor)
include_bodyNoReturn each article's stored body (what buyers receive). Default false.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/non-destructive annotations: it names the required credential (OPEDD_PUB_BEARER or legacy OPEDD_API_KEY), the 8,000-character body truncation, page size 20, and cursor-based pagination. These are exactly the operational facts an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then credentials, then return shape, then the include_body workflow hook. Dense but organized; a few clauses (page size 20, cursor) duplicate the schema rather than earning their place in prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating returned fields (titles, descriptions, pricing, sales statistics). Auth, pagination, truncation, and the cross-tool workflow to purchase_license are all covered, so nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter, including the include_body/id interplay, the limit cap of 20 under include_body, and offset being ignored. The description largely restates these facts (truncation, page size, cursor), adding little semantic value beyond the schema baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all licensable articles for the authenticated publisher'), and the publisher-scoped framing distinguishes it from siblings like search_content, lookup_content, and browse_registry. An agent can identify this as the 'my own published content' listing tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: article IDs from this list feed purchase_license, and include_body=true is the way to verify a prior push_content write. It gives clear when-to-use context but never states when NOT to use it (e.g., vs. search_content for discovery), so it stops short of full alternative coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_contentLook up an article's licence and priceA
Read-onlyIdempotent
Inspect

Looks up an article on Opedd by its web address. Returns the title, publication, available licence types and prices, or that the article is not on Opedd.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe canonical URL of the article or content to look up

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral value the annotations don't: what the response contains (title, publication, licence types and prices) and the 'article is not on Opedd' negative case, which tells the agent to expect a miss rather than an error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The lookup mechanism is front-loaded, then the return values and the negative case follow in the same sentence. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly carries the return-value burden and covers both the hit and miss cases. It stops short of mentioning error behavior, auth requirements, or whether non-Opedd URLs error versus return empty, but for a single-parameter read tool it is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single required 'url' parameter whose schema description already says 'canonical URL of the article or content to look up'. The description's 'by its web address' is slightly looser than the schema's 'canonical URL' and adds no new syntax or format detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('looks up an article on Opedd by its web address') and enumerates the payload: title, publication, licence types, prices, plus the not-found case. It's clear enough to distinguish from search_content or get_content, but it never names a sibling to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by its web address' implies you must already hold a URL, which suggests usage, but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives like get_content or search_content. An agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_licence_orderPlace a licence orderAInspect

Place a licence order with Opedd for one or more publishers. One order = one licence and one billing mode; each publisher becomes its own Schedule priced from that publisher's settings (publishers that do not offer it are returned in unavailable and never charged). Licences: 'enterprise' (AI answers: 'monthly' full text per article, or 'metered' pay per answer, read through search_passages only; self-serve buyers need no order for this, the licence created when they add a card at sign-up already covers every publisher offering a per-answer price), 'archive' (Full catalogue: everything the publisher published up to the order date, kept permanently, not for AI training: 'one_time', full text in the feed), 'training' (AI training of the back catalogue up to the order date: 'one_time', bulk export via stream_feed_ndjson), 'display' (client display: 'monthly', quantity = number of end clients). A monthly AI answers subscription only covers articles published from the day it starts; set include_archive=true on a 'enterprise' + 'monthly' order to add each publisher's Full catalogue in the same order (complete access). Returns the order, its lines, the access key (works once paid) and hosted_invoice_url — the buyer (your principal) pays there. Requires a buyer session (OPEDD_BUYER_JWT) and terms_accepted=true after the buyer has accepted the Opedd Master Services Agreement (opedd.com/terms).

ParametersJSON Schema
NameRequiredDescriptionDefault
licenceYesenterprise = AI answers, archive = Full catalogue (everything published up to the order date, kept permanently, no AI training), training = AI training, display = client display
quantityNodisplay only: number of end clients (1-500)
billing_modeYesenterprise: monthly | metered; archive: one_time; training: one_time; display: monthly
publisher_idsYesPublisher UUIDs (1-500; at most 18 for metered)
terms_acceptedYesREQUIRED. Set true only after the buyer has accepted the Opedd Master Services Agreement at opedd.com/terms. The current version label is recorded with the order; orders without genuine acceptance are rejected.
include_archiveNoOptional, monthly AI answers only (licence 'enterprise' + billing_mode 'monthly'). true adds each publisher's Full catalogue to the same order: everything published before the order date, kept permanently, not for AI training. Publishers that do not sell their Full catalogue are returned in `unavailable`.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare write/non-idempotent/non-destructive, and the description adds substantial context beyond them: requires a buyer session (OPEDD_BUYER_JWT) and genuine terms_accepted=true per the MSA, returns the access key (only valid once paid) and hosted_invoice_url where the buyer pays, and guarantees non-offering publishers appear in `unavailable` and are never charged. This is exactly the kind of auth, payment, and failure-mode disclosure the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and cardinality are front-loaded, but the body is a dense run-on packed with nested parentheticals covering four licence modes and cross-references, making it hard to scan. Most sentences carry needed detail, but the structure could be broken up and the description is close to over-length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter, multi-mode order tool with no output schema, it covers return contents (order, lines, access key, hosted_invoice_url), auth prerequisites, terms acceptance, and edge cases (unavailable publishers, monthly coverage window). Nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description adds interpretive value by explaining valid licence/billing_mode combinations and the monthly-answers temporal caveat ('only covers articles published from the day it starts'). It reinforces include_archive and quantity semantics but mostly duplicates what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Place a licence order with Opedd for one or more publishers') and immediately scopes the cardinality ('one order = one licence and one billing mode'). It clearly distinguishes itself from list_licence_orders, purchase_license, and verify_license by describing order creation with per-publisher Schedules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong conditional guidance: self-serve buyers need no order for enterprise/per-answer pricing, include_archive is only for 'enterprise' + 'monthly', and each licence/billing_mode pairing is enumerated. It names related siblings (search_passages, stream_feed_ndjson) as context but never explicitly contrasts when to choose this tool over purchase_license or list_licence_orders.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publisher_directoryList publishersA
Read-onlyIdempotent
Inspect

Lists the publications on Opedd with their article counts, licences, prices and sample articles. Filters: category (case-insensitive substring), min_articles and verified status. Public; no key needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size cap.
offsetNoPagination offset.
categoryNoCase-insensitive substring filter on publisher category (e.g. 'finance', 'AI').
verifiedNo'true' to show only verified publishers (default), 'false' for unverified.
min_articlesNoFilter to publishers with at least this many licensable articles.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful context beyond them: it is public with no key required, and it discloses the shape of the response (counts, licences, prices, samples). Pagination/rate behavior is left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose and payload first, filters second, access requirement last. No redundancy and nothing that fails to earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields, and it covers access requirements and the filter set. It omits pagination behavior and default ordering, but for a read-only list endpoint with fully documented parameters this is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, category, verified and min_articles are all already documented with equivalent detail (e.g. the case-insensitive substring note is repeated verbatim from the schema). The description adds no syntax or format meaning beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists the publications on Opedd') and enumerates the returned fields (article counts, licences, prices, sample articles), which clearly separates it from siblings like search_content or list_publisher_content. It does not explicitly name a sibling alternative, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies the browse/discovery use case through the filter list and notes 'Public; no key needed', which tells the agent it can call this freely. However, it never says when to prefer this over browse_registry, list_publisher_content or search_content, so usage remains inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purchase_licenseBuy an article licenceAInspect

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. Single-article purchases are Human republication licences only (license_type 'human'). AI licences (AI answers, AI training, client display) are bought as licence orders: see place_licence_order.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idNoOpedd article UUID (use this OR article_url)
buyer_nameNoFull name of the buyer (for the license record and certificate)
article_urlNoURL of the article to license (use this OR article_id)
buyer_emailNoEmail address for the license. Falls back to OPEDD_BUYER_EMAIL env var.
intended_useNoIntended use of the licensed content
license_typeYeshuman = Human republication (editorial republication of one article)
terms_acceptedYesREQUIRED. Set true only after the buyer (your principal) has accepted the Opedd licence terms at opedd.com/terms. The acceptance timestamp is recorded with the licence; purchases without genuine acceptance are rejected.
payment_method_idNoStripe payment method ID (pm_...). Falls back to OPEDD_PAYMENT_METHOD_ID env var.
buyer_organizationNoOrganization or company name (for enterprise/editorial licenses)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), and the description adds useful behavior beyond them: the returned license key format, certificate URL, and the Handshake Email delivery. It stops short of warning that, given idempotentHint=false, a retried call likely creates a second charge — a notable omission for a payment tool, keeping it out of 5 territory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and payment mechanism, then layers returns, side effects, and the sibling routing in a tight sequence. Every sentence carries information, though the env-var sentence slightly overlaps with schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully compensates by naming what comes back (license key, certificate URL) and the out-of-band Handshake Email. Combined with explicit sibling routing for AI licences, an agent has enough to call correctly, though the retry/duplicate-charge risk of a non-idempotent purchase is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 9 parameters including env-var fallbacks and the terms_accepted semantics are already documented in the schema. The description restates the env-var fallbacks (OPEDD_BUYER_EMAIL, OPEDD_PAYMENT_METHOD_ID) rather than adding new meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Purchase a content license from the Opedd protocol'), names the payment rail (Stripe), and adds concrete outputs (license key OP-XXXX-XXXX, certificate URL). It also draws a hard boundary against the sibling place_licence_order for AI licence types, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes the tool to single-article Human republication licences (license_type 'human') and tells the agent to use place_licence_order for AI licences, which is its closest sibling. It also flags the env-var shortcut (OPEDD_BUYER_EMAIL, OPEDD_PAYMENT_METHOD_ID) so callers know what need not be passed each time.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

push_contentPublish or update your articlesA
DestructiveIdempotent
Inspect

Push your published articles to Opedd so they can be licensed to AI buyers (requires OPEDD_PUB_BEARER — your opedd_sk_ 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
articlesYes1–100 articles to push in this call.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: the required bearer credential (OPEDD_PUB_BEARER / opedd_sk_ publisher key), the 1–100 batch ceiling, and the minimal required fields with published_at defaulting to now. It does not, however, explain the update-on-conflict behavior implied by the title 'Publish or update' and by destructiveHint=true / idempotentHint=true, so the consequence of re-pushing an existing article remains unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, front-loaded with the action and destination, then credentials, then batching limits. Every sentence carries operational information; only the closing 'no code, straight from your AI assistant' clause is marketing filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should cover the return contract for a batch operation — e.g. whether results are per-article, how partial failures are reported, and whether re-pushing overwrites. Those are unaddressed, leaving a real gap for a destructive, batch, non-idempotent-looking write even though auth and limits are well covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents the array bounds, required fields, published_at default, and every optional field. The description restates the required trio and the default rather than adding format or constraint detail, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Push your published articles to Opedd') plus the downstream purpose ('licensed to AI buyers'). It explicitly positions itself against the sibling list_publisher_content, so an agent can separate supply-side push from read-side listing without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions: onboard an archive, push new content, batch back-catalogues into multiple calls when over 100 articles. Names the companion tool list_publisher_content. It stops short of stating when not to use it or what to do if an article already exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rsl_getRead a publisher's RSL licence termsA
Read-onlyIdempotent
Inspect

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 a signed compliance attestation (which is buyer-side, JWT-auth, via article_53_attestation tool).

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

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the read-only/idempotent safety profile, and the description adds genuinely new operational context: public no-auth access, the JSON-LD/HMAC-SHA256 signed receipt semantics, and the post-hoc regulator verification purpose. It doesn't cover failure modes (e.g. unverified publisher) or rate limits, but the added behavioral detail is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and scope are front-loaded before the detail, and most sentences carry information. It is dense with internal references ('Phase 12 Wave 1 W1.1', 'INVARIANTS.md W1.6') that add little for a calling agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description properly carries the return-value burden by naming the 4 canonical license types and the tdm_reservation posture. The exact response envelope is left unspecified, but an agent has enough to call and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description elaborates on the jsonld flag's purpose (signed receipt, tdm:reservationSignedAt) but largely restates what the schema already carries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Fetch a publisher's RSL Standard manifest via GET /rsl-manifest') and scopes the audience (AI agents/crawlers). It explicitly contrasts itself with the sibling article_53_attestation, so an agent can separate the two without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('BEFORE going through the buyer-account signup flow') and an explicit when-not ('It is NOT a signed compliance attestation (which is buyer-side, JWT-auth, via article_53_attestation tool)'). The routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_contentFind who covers a topic (free, no text)A
Read-onlyIdempotent
Inspect

Full-text search of the articles licensable on Opedd. Returns matching articles with the publication, prices, word count and a short description; never article text. Supports quoted phrases and -word to exclude a word. Free; no key needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20, max 50).
queryYesSearch words (max 200 characters).
publisherNoOptional publisher slug to search within.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior. The description adds genuinely new context beyond them: exactly which fields are returned (publication, prices, word count, short description), the guarantee that article text is never returned, and that no API key is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the core purpose and return contract before the syntax and pricing notes. Every sentence carries information; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with no output schema, the description covers return fields, the key omission (no article text), query syntax, and access requirements, while annotations carry the safety profile. It could mention result-limit/pagination behavior, but limit is already documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by documenting query syntax (quoted phrases and -word exclusion) that the schema's plain 'Search words' entry does not convey. This is real added meaning for the required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (full-text search of licensable articles on Opedd) and clarifies scope by noting it returns metadata only, never article text. This implicitly separates it from text-returning siblings like search_passages, but no sibling is named explicitly, keeping it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Free; no key needed' note gives useful invocation context, and the query-syntax hints imply a keyword-search use case. However, it never states when to prefer this over siblings such as search_passages, lookup_content, or browse_registry, so the guidance remains implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_passagesAsk licensed publications a questionA
Idempotent
Inspect

Returns licensed passages from publications on Opedd that answer a question, each with a citation to the source article. Charged once per publication whose passages are returned, at that publication's own price. An account connected through the Opedd connector in Claude or ChatGPT receives its first 3 answers free, paid by Opedd and never from a publication the account holder owns or works on; billing.free_answers_left reports how many remain. After that, answers are billed to the card on the account, added at opedd.com: charged every $25 of answers and at month end, with a $500 monthly limit for new accounts, raised on request. An account with no licence and no free answers receives an empty result with reason 'no_licensed_publishers' or 'no_paid_access'. Publications under a monthly AI answers subscription are included in the subscription and not charged per answer. Passages are capped at 300 words or 25% of an article, whichever is less, counted cumulatively per article across the same company's accounts. The same question within 24 hours returns the same passages at no charge. Filters: publishers (publication names as listed by Opedd, opedd.com/p/ addresses or publisher ids; a name that matches no publication is listed in filters.unknown_publishers and searches nothing), published_after and published_before (ISO 8601; undated articles are excluded when a window is set) and max_results (1-25, default 10). Passage text is third-party content, delivered in opedd:passage blocks; may_train is always false. Requires a buyer API key with the 'search' scope, or the Opedd connector sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe question, in plain words (3–1000 characters).
publishersNoOptional. Only these publications: names as listed by Opedd (e.g. 'Matter of Fact'), opedd.com/p/<slug> addresses or publisher ids. At most 20 names and 100 entries. Narrows the search; never widens it.
buyer_tokenNoBuyer API key with the 'search' scope. Falls back to OPEDD_BUYER_TOKEN.
max_resultsNoOptional. Passages to return, 1–25 (default 10).
published_afterNoOptional. Only articles published at or after this instant (ISO 8601, e.g. 2026-01-01).
published_beforeNoOptional. Only articles published before this instant (ISO 8601).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations, disclosing the billing model (per-publication charge, card billing, $25 increments, $500 new-account limit), free-answer accounting, 300-word/25% passage caps counted cumulatively, and 24-hour dedup caching. It also flags third-party content delivery in <opedd:passage> blocks, may_train=false, and the required 'search' scope, none of which the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, and the dense billing, cap, and filter sentences each carry distinct, non-redundant information. The block is long and reads as a wall of text with no visual separation, but little of it is genuinely wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full load and does so: it explains the return shape (cited passages), the <opedd:passage> wrapping, and the empty-result reasons. An agent has everything needed to call it correctly and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics beyond the schema: unmatched publisher names surface in filters.unknown_publishers and 'search nothing', and undated articles are excluded when a window is set. These behaviors are not present in the parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns licensed passages from publications that answer a question, each with a source citation. It is clearly distinguishable from generic retrieval, but it never names or contrasts against close siblings like search_content or get_content, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied through the described filters, billing conditions, and the empty-result reasons ('no_licensed_publishers' / 'no_paid_access'), which tell the agent when the tool will and won't produce content. However, there is no explicit when-to-use guidance or routing to alternatives such as search_content, leaving the choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stream_feed_ndjsonExport a licence order's articlesA
Read-onlyIdempotent
Inspect

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). Same content contract as list_feed: full text for AI training orders only; every other order exports metadata (content_body null) — use get_content for article text. 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. Credentials as list_feed: OPEDD_ACCESS_KEY (ent_*) OR your buyer API key + order_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax articles per response (default: 200, max: 1000)
sinceNoISO 8601 timestamp — return only articles with published_at > since
cursorNoOpaque cursor from the prior result's meta.next_cursor
order_idNoThe licence order to export (UUID). Used with a buyer API key; ignored with an ent_* key.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive behavior, but the description adds substantial context beyond structured fields: the content contract (full text only for AI training orders), usage_records sentinel behavior, the 1000 vs 5000 article discrepancy, and credential requirements. This is rich disclosure for a read-only export.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core purpose and every clause carries specific operational information. However, the single dense paragraph with heavy parentheticals and internal jargon ('Phase 11 M3', 'revenue-model bifurcation invariant') reduces readability without adding much for an external agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex bulk-export tool with no output schema and full schema coverage, the description covers content contract, pagination, limits, credentials, alternatives, and SDK routing. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents limit, since, cursor, and order_id. The description reinforces usage ('Use since for delta-feed', 'Use cursor to paginate beyond 1000') but adds little semantic detail beyond what the schema provides, so it sits at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Bulk-export a buyer's licensed catalog') and even names the wire format and endpoint. It explicitly distinguishes itself from list_feed and get_content, so an agent can select it without opening other schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use this tool versus alternatives: use get_content for article text, use the Python SDK for real bulk-ingest pipelines, and use since/cursor for delta and pagination. Exclusions and conditions are explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_licenseVerify a licence keyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
license_keyYesThe license key to verify (format: OP-XXXX-XXXX)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds value beyond that by disclosing the return payload fields and, importantly, the negative outcome ("or that the key was not found"), which an agent needs in order to interpret a failed lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and then the result content. Every clause earns its place, and the failure case is appended without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so by listing the licence detail fields plus the not-found case. Combined with annotations covering the safety profile, an agent has everything needed to call and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents the format (OP-XXXX-XXXX), so the schema carries the parameter semantics. The description adds no additional syntax, case-sensitivity, or validation guidance, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Checks an Opedd licence key") and goes further by enumerating exactly what is returned. This clearly separates it from siblings such as purchase_license, list_licence_orders, and lookup_content, which either create orders or fetch content rather than validate a key.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb "Checks" and the required key parameter; there is no explicit statement of when to reach for this tool versus browse_registry, lookup_content, or get_compliance_dossier. No exclusions or prerequisites are given, though for a single-purpose key validator the intent is reasonably inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedsearch_passages2 fields changed
      • changedInput schema / properties / published_before / description
        Previous value: -"Optional. Only articles published before this instant (ISO 8601). Use for 'as of' questions and back-tests."New value: +"Optional. Only articles published before this instant (ISO 8601)."
      • changedInput schema / properties / publishers / description
        Previous value: -"Optional. Only search these publications: their names exactly as publisher_directory shows them (e.g. 'Matter of Fact'; preferred, since the person approving the call reads them), opedd.com/p/<slug> addresses, or publisher ids. At most 20 names, 100 entries. Can only narrow what you are licensed for."New value: +"Optional. Only these publications: names as listed by Opedd (e.g. 'Matter of Fact'), opedd.com/p/<slug> addresses or publisher ids. At most 20 names and 100 entries. Narrows the search; never widens it."
  2. 1 tool update
    • Changedsearch_passages1 field changed
      • changedInput schema / properties / publishers / description
        Previous value: -"Optional. Only search these publisher ids (UUIDs, at most 100). Can only narrow what you are licensed for."New value: +"Optional. Only search these publications: their names exactly as publisher_directory shows them (e.g. 'Matter of Fact'; preferred, since the person approving the call reads them), opedd.com/p/<slug> addresses, or publisher ids. At most 20 names, 100 entries. Can only narrow what you are licensed for."
  3. 3 tool updates
    • Changedlist_feed1 field changed
      • addedInput schema / properties / order_id
        Added value: +{
        +  "description": "The licence order to list (UUID, from list_licence_orders). Used with a buyer API key; ignored with an ent_* key.",
        +  "type": "string"
        +}
    • Changedsearch_passages4 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "description": "Optional. Passages to return, 1–25 (default 10).",
        +  "type": "number"
        +}
      • addedInput schema / properties / published_after
        Added value: +{
        +  "description": "Optional. Only articles published at or after this instant (ISO 8601, e.g. 2026-01-01).",
        +  "type": "string"
        +}
      • addedInput schema / properties / published_before
        Added value: +{
        +  "description": "Optional. Only articles published before this instant (ISO 8601). Use for 'as of' questions and back-tests.",
        +  "type": "string"
        +}
      • addedInput schema / properties / publishers
        Added value: +{
        +  "description": "Optional. Only search these publisher ids (UUIDs, at most 100). Can only narrow what you are licensed for.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedstream_feed_ndjson1 field changed
      • addedInput schema / properties / order_id
        Added value: +{
        +  "description": "The licence order to export (UUID). Used with a buyer API key; ignored with an ent_* key.",
        +  "type": "string"
        +}
  4. 5 tool updates
    • Addedlist_licence_orders
    • Addedplace_licence_order
    • Removedpurchase_enterprise_license
    • Changedpurchase_license2 fields changed
      • changedInput schema / properties / license_type / description
        Previous value: -"human = republication/editorial rights, ai = training dataset rights, ai_inference = inference/RAG rights"New value: +"human = Human republication (editorial republication of one article)"
      • changedInput schema / properties / license_type / enum
        Previous value: -[
        -  "human",
        -  "ai",
        -  "ai_inference"
        -]New value: +[
        +  "human"
        +]
    • Addedsearch_passages
  5. 2 tool updates
    • Changedlist_publisher_content6 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Opaque next_cursor from a previous include_body=true call.",
        +  "type": "string"
        +}
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "With include_body=true: fetch exactly one of your articles by id (full body, no truncation).",
        +  "type": "string"
        +}
      • addedInput schema / properties / include_body
        Added value: +{
        +  "description": "Return each article's stored body (what buyers receive). Default false.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Number of results (default: 20, max: 100)"New value: +"Number of results (default: 20, max: 100; max 20 when include_body is true)"
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset (default: 0)"New value: +"Pagination offset (default: 0; ignored when include_body is true — use cursor)"
      • changedInput schema / properties / type / description
        Previous value: -"Filter by license type availability"New value: +"Filter by license type availability (ignored when include_body is true)"
    • Addedsearch_content
  6. 2 tool updates
    • Changedpurchase_enterprise_license2 fields changed
      • addedInput schema / properties / terms_accepted
        Added value: +{
        +  "description": "REQUIRED. Set true only after the buyer (your principal) has accepted the Opedd Master Services Agreement at opedd.com/terms. The current MSA version label is recorded with the licence; purchases without genuine acceptance are rejected (HTTP 400).",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "publisher_ids",
        -  "buyer_email",
        -  "buyer_org"
        -]New value: +[
        +  "publisher_ids",
        +  "buyer_email",
        +  "buyer_org",
        +  "terms_accepted"
        +]
    • Changedpurchase_license2 fields changed
      • addedInput schema / properties / terms_accepted
        Added value: +{
        +  "description": "REQUIRED. Set true only after the buyer (your principal) has accepted the Opedd licence terms at opedd.com/terms. The acceptance timestamp is recorded with the licence; purchases without genuine acceptance are rejected.",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "license_type"
        -]New value: +[
        +  "license_type",
        +  "terms_accepted"
        +]
  7. 2 tool updates
    • Changedlist_feed1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque cursor from prior response's _meta.next_cursor"New value: +"Opaque cursor from the prior response's data.pagination.next_cursor"
    • Changedstream_feed_ndjson1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque cursor from prior response's _meta.next_cursor"New value: +"Opaque cursor from the prior result's meta.next_cursor"
  8. 17 tool updates
    • First observedarticle_53_attestation
    • First observedbrowse_registry
    • First observeddetect_platform
    • First observedget_audit_events
    • First observedget_buyer_account
    • First observedget_compliance_dossier
    • First observedget_content
    • First observedlist_feed
    • First observedlist_publisher_content
    • First observedlookup_content
    • First observedpublisher_directory
    • First observedpurchase_enterprise_license
    • First observedpurchase_license
    • First observedpush_content
    • First observedrsl_get
    • First observedstream_feed_ndjson
    • First observedverify_license

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.