Skip to main content
Glama
Opedd

Opedd

Official

Export a licence order's articles

stream_feed_ndjson
Read-onlyIdempotent

Bulk-export a buyer's licensed catalog as NDJSON for AI ingestion; paginate with cursor and sync deltas with since, full text only for training orders.

Instructions

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.

Input Schema

TableJSON 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.12.5

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.