# info.description
Public discovery, Ed25519 authentication, quota, provenance reads, cited research jobs, bounded exports, and signed webhooks. Payments are not accepted; GraphQL is deferred. A future dedicated premium host is not provisioned or advertised by this contract.

# paths./.get.responses.200.description
Current capabilities, scopes, quotas, and payment policy.

# paths./auth/challenge.post.summary
Request a one-time Ed25519 login challenge

# paths./quota.get.summary
Read the authenticated agent's current quota

# paths./quota.get.responses.403.description
The token is not an active agent identity.

# paths./v1/source-registry.get.summary
Read the normalized scheduled evidence adapter registry

# paths./v1/source-registry.get.description
Returns deterministic public adapter metadata only: official URLs, access and license classes, bounded request model, cadence, and synthetic fixture provenance. It omits credentials, conditional-validator values, cursors, timestamps, and live ingestion status.

# paths./v1/universal-search.get.summary
Search the bounded public lexical corpus

# paths./v1/universal-search.get.description
Federates public evidence documents, claims, entities, published blog posts, sent newsletters, indexed news, and currently public forum threads. This endpoint remains lexical-only; feature-gated semantic enhancement has a separate authenticated endpoint. Each result is rechecked for current public visibility. Recency is captured once per request, making a response's ordering deterministic while later requests may legitimately receive fresher scores.

# paths./v1/universal-search.get.responses.200.description
Deterministically ordered public lexical results with canonical URLs, timestamps, provenance, and score explanations.

# paths./v1/semantic-search.get.summary
Search with feature-gated semantic enhancement

# paths./v1/semantic-search.get.description
Uses the same currently-public corpus and lexical ranking contract as universal search. When semantic retrieval is disabled, unavailable, over budget, paused, or fails validation, the response is lexical-only and carries no monetary commerce or organization charge. Agent quota is a non-refundable request-attempt abuse budget, not a monetary charge. The Ed25519 principal, owner, optional organization service account, project scopes, quota, immutable usage ledger, and spend budget are rechecked before provider-capable work. The request is replay-safe when the same Idempotency-Key and query are reused.

# paths./v1/semantic-search.get.responses.200.description
Currently authorized hybrid results, or lexical-only results when semantic enhancement is unavailable.

# paths./v1/semantic-search.get.responses.400.description
Invalid query, limit, or idempotency key.

# paths./v1/semantic-search.get.responses.401.description
Missing or invalid Ed25519 session token.

# paths./v1/semantic-search.get.responses.403.description
Evidence scope, active identity, or service-account authorization denied.

# paths./v1/semantic-search.get.responses.409.description
The idempotent request is still in progress.

# paths./v1/semantic-search.get.responses.503.description
The first-party semantic relay has not been configured.

# paths./v1/claims/{claimKey}/timeline.get.summary
Read a claim's public supersession timeline

# paths./v1/claims/{claimKey}/timeline.get.description
Returns a bounded, newest-first history of public claim revisions and their currently public citations. The supported, contradicted, unresolved, and outdated transitions express supersession history; no additional timeline status is invented. Private claims, revisions, entities, sources, documents, and document versions are omitted.

# paths./v1/claims/{claimKey}/timeline.get.responses.200.description
At most 50 deterministic public revision entries, newest first.

# paths./v1/entities.get.responses.200.description
Bounded normalized public entity matches.

# paths./v1/document-versions/{documentVersionId}/claims.get.responses.200.description
Claims and immutable citations tied to this exact document version.

# paths./v1/entitlements.get.responses.200.description
Effective owner-scoped product access, including free-beta grants.

# paths./v1/usage.get.responses.200.description
Recent immutable owner-scoped usage ledger entries.

# paths./v1/research-jobs.post.responses.200.description
Queued or replayed source-cited research job.

# paths./v1/research-jobs.post.responses.400.description
Invalid or mismatched idempotent request.

# paths./v1/research-jobs/{jobId}.get.responses.200.description
Owner-scoped job status and cited result.

# paths./v1/research-jobs/{jobId}/artifact.get.responses.200.description
Authenticated first-party JSON artifact stream. The bearer token is rechecked at download time; no storage URL is issued.

# paths./v1/exports.post.responses.200.description
Queued or replayed bounded JSONL export.

# paths./v1/exports.post.responses.400.description
Invalid dataset, format, or idempotent request.

# paths./v1/exports/{jobId}.get.responses.200.description
Owner-scoped export status, checksum, and record count.

# paths./v1/exports/{jobId}/artifact.get.responses.200.description
Authenticated first-party JSONL artifact stream. The bearer token is rechecked at download time; no storage URL is issued.

# paths./v1/webhooks.post.responses.200.description
Created allowlisted HTTPS webhook subscription.

# paths./v1/webhooks/availability.get.summary
Check whether the owner can configure delivery

# paths./v1/webhooks/availability.get.responses.200.description
Delivery availability; destination allowlists are never returned.

# paths./v1/webhooks/{subscriptionKey}/rotate.post.description
Returns a replacement signing secret exactly once. Store it outside chat, logs, URLs, and source control.

# paths./v1/webhooks/{subscriptionKey}/rotate.post.responses.200.description
Replacement secret shown only in this response.

# paths./v1/webhooks/{subscriptionKey}/deliveries/{eventKey}/replay.post.responses.200.description
Eligible failed/dead-letter delivery was queued for replay.

# paths./mcp.post.description
Protocol 2026-07-28 uses server/discover and per-request metadata. Legacy 2025-03-26 initialize remains available only for legacy callers. Initialize, discovery, tool listing, and the read-only MCP App resource are public; tools/call requires the documented custom Ed25519 bearer flow, not OAuth authorization endpoints.

# paths./auth/sign-in.post.summary
Exchange a signed challenge for Convex Auth tokens

# paths./auth/sign-in.post.responses.401.description
Invalid, expired, or replayed signature.

# components.parameters.McpProtocolVersion.description
Required for protocol 2026-07-28 and matched against request _meta; omitted by legacy initialize callers.

# components.parameters.McpMethod.description
Required and body-matched for protocol 2026-07-28.

# components.parameters.McpName.description
Required and body-matched for protocol 2026-07-28 tools/call requests.