Source: proto/ramp/v1/ramp.proto
The core protocol. Both AI agents and Brokers are valid clients.
RPC Request Response Description DiscoverResourcesResourceQueryResourceResponseDiscover available content offers (Steps 2-3) ExecuteTransactionTransactionRequestTransactionResponseCommit to an offer, receive delivery info (Steps 4-5) ReportUsageUsageReportUsageReportResponseSubmit post-usage report (Step 7) DisputeTransactionDisputeRequestDisputeResponseSignal a content dispute for a completed transaction RequestDomainVerificationDomainVerificationRequestDomainVerificationChallengeRequest ACME-style domain verification challenge ConfirmDomainVerificationDomainVerificationConfirmationDomainVerificationResultConfirm domain verification and register signing key
Optional RPC for providers/CMS/third-party intelligence providers to push content metadata.
RPC Request Response Description PushResourcesPushResourcesRequestPushResourcesResponsePush or update catalog entries RemoveResourcesRemoveResourcesRequestRemoveResourcesResponseRemove catalog entries RefreshCatalogRefreshCatalogRequestRefreshCatalogResponseTrigger full catalog refresh
Field Type Number Description verstring 1 RAMP protocol version idstring 2 Unique query identifier requesterRequester 3 Requester identity, scopes, and optional delegation chain request_idoptional string 4 Original RAMP request ID (traceability) intermediariesrepeated IntermediaryHop 5 Intermediary forwarding chain (Agent -> Broker -> Exchange). Empty for direct queries. deadlineoptional Duration 8 Max wait time (default 500ms) supported_profilesrepeated string 11 Domain extension profiles the caller understands (e.g. “ramp-academic-v1”) extStruct 15 Extension point
Breaking change
Field 3 changed from comp.v1.AISystem aisystem to Requester requester. Fields 5—7 (broker, agent_signature, agent_signature_algorithm) and 9—10 (broker_signature, broker_signature_algorithm) have been removed. Agent signatures are now in Requester.signature; intermediary signatures are in IntermediaryHop.signature.
Field Type Number Description verstring 1 Protocol version idstring 2 Echoed query identifier exchangestring 3 Responding Exchange domain offersrepeated Offer 4 Flat offer list (single-URI queries) offer_groupsrepeated OfferGroup 5 Grouped offers (multi-URI batch queries) rate_limitoptional RateLimitInfo 6 Rate limit status for this caller extStruct 15 Extension point
Field Type Number Description uristring 1 URI this group is for offersrepeated Offer 2 Offers for this URI discovery_methodoptional DiscoveryMethod 3 How the URI was discovered (v2 extension) absence_reasonoptional OfferAbsenceReason 4 Why no offers are available for this URI
Rate limit status modeled after IETF RateLimit header fields.
Field Type Number Description limitint32 1 Maximum requests allowed in the current window remainingint32 2 Requests remaining in the current window reset_atTimestamp 3 When the current window resets (UTC) windowoptional Duration 4 Duration of the rate limit window
Identifies who is making a request, what scopes they have, and optional delegation chain. Replaces comp.v1.AISystem in ResourceQuery and RAMPRequest.
Field Type Number Description idstring 1 Unique requester identifier (e.g. “agent-research-bot-001”) domainstring 2 Requester’s domain — used for public key lookup at {domain}/.well-known/ramp-agent.json typeRequesterType 3 What kind of entity is making this request nameoptional string 4 Human-readable name (e.g. “Acme Research Assistant”) urisrepeated string 5 Resource URIs being requested (same role as CoMP aisysuse.uri) intended_userepeated string 6 What the requester intends to do with the resources (CoMP Function values) license_idoptional string 7 Commercial license or subscription identifier (same role as CoMP aisysuse.lid) scopesrepeated string 8 Entitlement scopes declaring what the requester can access. Format: "{domain}:{permission}". Empty = default access policy. signaturestring 9 Ed25519 signature over (id, domain, uris, scopes) signature_algorithmstring 10 Signature algorithm (default: “ed25519”) delegationoptional Delegation 11 Present when requester acts on behalf of another entity extStruct 15 Extension point
Scoped, time-limited, spend-capped credential using Biscuit authorization tokens . Biscuit tokens are Ed25519-signed block chains that can be attenuated (holder adds restrictions) without going back to the issuer. Each block in the chain narrows permissions — never widens them.
Field Type Number Description principal_domainstring 1 Who granted this delegation (domain for public key lookup) principal_idstring 2 Principal’s identifier (e.g. “user@acme.com ”, “bloomberg.com”) scopesrepeated string 3 Scopes granted by this delegation (MUST be a subset of the principal’s own scopes) expires_atTimestamp 4 When this delegation expires. Exchange MUST reject expired tokens. max_spendoptional Cost 5 Maximum spend allowed under this delegation tokenstring 6 Biscuit authorization token, base64-encoded token_formatstring 7 Token format (default: “biscuit-v2”) revocation_urioptional string 8 URI for real-time revocation checking (MAY be checked for high-value transactions) extStruct 15 Extension point
Biscuit authority block facts (RAMP-specific):
scope({scope_string}); // one fact per granted scope
max_spend_cents({amount}); // spending cap in currency minor units
expires({RFC3339_timestamp}); // expiration time
Attenuation example : An agent can further restrict (but never widen) a delegation:
Original: scope: credit:*, max_spend: $1000
Attenuated: scope: credit:read, max_spend: $200, uris: duns:123*
One hop in the request forwarding chain (Agent -> Broker -> Exchange). Each hop signs the request, proving it passed through legitimately. Modeled after OpenRTB schain (Supply Chain Object).
Field Type Number Description domainstring 1 Domain of the intermediary (for public key lookup) idstring 2 Intermediary’s identifier forwarded_atTimestamp 3 When this intermediary forwarded the request signaturestring 4 Ed25519 signature over the request payload at this hop signature_algorithmstring 5 Signature algorithm
Field Type Number Description offer_idstring 1 Unique offer identifier packagecomp.v1.Package 2 CoMP content metadata pricingPricing 3 Pricing terms with unit_cost delivery_methodDeliveryMethod 4 How content is delivered reportingoptional ReportingObligation 5 Post-usage reporting requirements expires_atoptional Timestamp 6 Offer expiry identityoptional ResourceIdentity 7 Content identity for dedup restrictionsoptional AccessRestrictions 8 Access restrictions from RSL exchange_signaturestring 9 REQUIRED. Ed25519 signaturesignature_algorithmstring 10 Signature algorithm (default: “ed25519”) subscription_idoptional string 11 Subscription/deal identifier iab_categoriesrepeated string 13 IAB Content Taxonomy codes attestationsrepeated ResourceAttestation 14 Signed content attestations (replaces ContentQuality) data_as_ofoptional Timestamp 16 When the offered data was current (for DYNAMIC resources) subscription_quotarepeated SubscriptionQuotaInfo 17 Pre-commit quota snapshot for subscription offers extStruct 15 Extension point
Signed envelope of claims from a trusted party (provider or verification vendor) about content at a specific URI.
Field Type Number Description verifierstring 1 Domain of the attesting party. Keys at https://{verifier}/.well-known/ramp-verifier.json kidstring 2 Key ID from the verifier’s JWKS attested_atTimestamp 3 When this attestation was created uristring 4 Content URI this attestation covers claimsStruct 5 Signed claims about the content (max 4KB) signaturestring 6 Ed25519 over JCS-canonicalized (RFC 8785) representation
Three verification levels:
Level Condition What’s Verifiable 0 — None attestations emptyCDN delivery failure only 1 — Self-attested verifier matches provider domainContent hash + token count 2 — Third-party verifier is a verification vendorToken count (with CDN corroboration)
Field Type Number Description modelPricingModel 1 Provider’s pricing model ratedouble 2 Price in provider’s model currencystring 3 ISO 4217 currency code unit_costoptional double 4 Normalized cost per unit (universal comparison metric) estimated_quantityoptional int32 5 Estimated consumption in the metering unit revshareoptional double 6 Revenue share percentage (0.0—1.0) license_duration_monthsoptional int32 7 License duration in months unitoptional string 8 Metering unit for unit_cost and estimated_quantity (e.g. “tokens”, “pages”, “seconds”, “records”) extStruct 15 Extension point
Layered content identification for cross-exchange dedup and integrity verification.
Field Type Number Description canonical_urloptional string 1 Provider’s canonical URL doioptional string 2 Digital Object Identifier iptc_guidoptional string 3 IPTC NewsML-G2 identifier isnioptional string 4 International Standard Name Identifier content_hashoptional string 5 Content hash (SimHash or SHA-256) hash_methodoptional string 6 Hash algorithm (“simhash-v1”, “sha256”) c2pa_manifestoptional string 7 C2PA credentials manifest URI resource_mutabilityResourceMutability 8 Whether resource content is static, dynamic, or live extStruct 15 Extension point
Field Type Number Description permitted_functionsrepeated Function 1 Permitted CoMP usage functions prohibited_functionsrepeated Function 2 Prohibited CoMP usage functions permitted_usersrepeated string 3 Permitted user categories prohibited_usersrepeated string 4 Prohibited user categories permitted_georepeated string 5 Permitted geographies (ISO 3166-1 alpha-2) prohibited_georepeated string 6 Prohibited geographies max_display_wordsoptional int32 7 Maximum words displayed to users (from CoMP License.maxword) extStruct 15 Extension point
Quota status for a subscription within the current billing period. Appears on Offer (field 17) as a pre-commit snapshot and on TransactionResponse (field 17) as the post-transaction remaining quota. The field is repeated to support multi-dimensional quotas (e.g. access count + spend cap).
Field Type Number Description subscription_idstring 1 Subscription this quota applies to quota_limitint32 2 Total allowed in the current period quota_usedint32 3 Used so far in the current period quota_remainingint32 4 Remaining in the current period resets_atTimestamp 5 When the quota counter resets (UTC) unitstring 6 What is metered: "accesses", "tokens", "spend_cents", "burst"
Field Type Number Description verstring 1 Protocol version idstring 2 Unique transaction request ID (idempotency key) offer_idoptional string 3 Single-offer mode requesterRequester 4 Requester identity for authorization and audit request_idoptional string 5 Original RAMP request ID offer_signatureoptional string 6 Single-offer signature itemsrepeated TransactionItem 10 Batch mode: multiple offers extStruct 15 Extension point
Field Type Number Description verstring 1 Protocol version idstring 2 Echoed transaction request ID transaction_idoptional string 3 Exchange-assigned transaction ID billing_idoptional string 4 Billing reference packageoptional comp.v1.Package 5 CoMP Package with signed URL costoptional Cost 6 Transaction cost delivery_methodDeliveryMethod 7 How content is delivered reporting_obligationoptional ReportingObligation 8 Reporting requirements expires_atoptional Timestamp 9 Signed URL expiry agent_identity_hashstring 10 REQUIRED. Agent identity bound into URLsdenial_reasonoptional DenialReason 11 Set when denied subscription_idoptional string 12 Subscription/deal identifier subscription_unit_valueoptional Cost 16 Per-unit cost for subscription accounting subscription_quotarepeated SubscriptionQuotaInfo 17 Post-transaction remaining quota snapshot itemsrepeated TransactionResultItem 13 Batch mode results total_costoptional Cost 14 Batch aggregate cost extStruct 15 Extension point
A single offer commitment within a batch transaction.
Field Type Number Description offer_idstring 1 The offer_id from the selected Offer offer_signaturestring 2 The exchange_signature from the selected Offer
Result for a single offer in a batch transaction.
Field Type Number Description offer_idstring 1 The offer_id this result is for transaction_idstring 2 Exchange-assigned transaction identifier billing_idstring 3 Billing reference packagecomp.v1.Package 4 CoMP Package with signed URL populated costCost 5 Cost for this item subscription_idoptional string 6 Subscription identifier (no per-request charge) subscription_unit_valueoptional Cost 11 Per-unit cost for subscription accounting (ASC 606) denial_reasonoptional DenialReason 7 Set if this item was denied expires_atoptional Timestamp 8 When the signed URL expires delivery_methodDeliveryMethod 9 How content is delivered for this item reporting_obligationoptional ReportingObligation 10 Reporting requirements for this item
Actual transaction cost.
Field Type Number Description amountdouble 1 Cost amount currencystring 2 ISO 4217 currency code unit_costoptional double 3 Effective cost per unit
Field Type Number Description verstring 1 Protocol version idstring 2 Unique report identifier transaction_idstring 3 Transaction ID from delivery billing_idstring 4 Billing reference from delivery usageUsage 5 How content was used timestampTimestamp 6 When content was used request_idoptional string 7 Original RAMP request ID exchangeoptional string 8 Exchange this report is for assetsrepeated UsageAsset 9 Assets delivered and used extStruct 15 Extension point
Requirements attached to a delivery.
Field Type Number Description requiredbool 1 Whether post-usage reporting is required windowoptional Duration 2 Duration within which report must be submitted (e.g. 24h) endpointoptional string 3 URL to submit usage report (if different from Exchange) required_fieldsrepeated string 4 Field names that must be present in the report extStruct 15 Extension point
Field Type Number Description functionrepeated Function 1 CoMP functions used subfnrepeated SubFunction 2 CoMP sub-functions used consumed_quantityint32 3 REQUIRED. Actual quantity consumed in the metering unitdisplayed_to_useroptional bool 4 Was output shown to a human? citation_includedoptional bool 5 Was citation included? attributionrepeated AttributionDetail 6 Structured citation details consumed_unitoptional string 8 Metering unit for consumed_quantity (defaults to “tokens”)
Structured attribution metadata for usage reporting.
Field Type Number Description displayed_urloptional string 1 URL displayed to the user as the attribution link formatoptional CitationFormat 2 How the citation was presented visible_to_useroptional bool 3 Whether the attribution was visible to the end user
A single asset included in the usage report.
Field Type Number Description uristring 1 Asset URI titleoptional string 2 Asset title package_idoptional string 3 Package identifier
Acknowledgment of a usage report.
Field Type Number Description acceptedbool 1 Whether the report was accepted rejection_reasonoptional string 2 Reason for rejection (if not accepted) report_idstring 3 Exchange-assigned report ID (required for dispute chain) extStruct 15 Extension point
Agent signals a content delivery problem for a completed transaction.
Field Type Number Description verstring 1 Protocol version idstring 2 Unique dispute request identifier transaction_idstring 3 Transaction this dispute is about billing_idstring 4 Billing reference reasonDisputeReason 5 Why the agent is disputing descriptionoptional string 6 Human-readable description received_content_hashoptional string 7 Agent’s computed hash of received content received_hash_methodoptional string 8 Hash algorithm the agent used report_idstring 10 REQUIRED. Must reference a filed UsageReportextStruct 15 Extension point
Exchange acknowledges and processes the dispute.
Field Type Number Description acceptedbool 1 Whether the dispute was accepted for processing dispute_idstring 2 Exchange-assigned dispute identifier rejection_reasonoptional string 3 If not accepted, reason for rejection estimated_resolutionoptional string 4 Estimated time to resolution statusDisputeStatus 5 Current lifecycle state resolutionoptional ResolutionType 6 Populated at terminal states extStruct 15 Extension point
Request an ACME-style domain verification challenge.
Field Type Number Description verstring 1 Protocol version domainstring 2 Provider domain to verify caller_idoptional string 4 Registered caller identity
Exchange returns a challenge token to be placed at the provider’s domain.
Field Type Number Description tokenstring 1 Opaque challenge token expires_atTimestamp 2 10-minute expiry window verification_urlstring 3 Exact URL the Exchange will fetch
Confirm domain verification and register a signing key.
Field Type Number Description verstring 1 Protocol version domainstring 2 Provider domain tokenstring 3 Token from the challenge signing_keyoptional string 4 PEM (CloudFront) or hex (HMAC) cdn_typeoptional string 5 ”cloudfront”, “akamai”, “fastly”, “hmac”
Field Type Number Description verifiedbool 1 Whether verification succeeded key_idoptional string 2 Assigned key ID failure_reasonoptional string 3 If not verified, the reason valid_untiloptional Timestamp 4 Re-verification deadline
Served at /.well-known/ramp.json.
Field Type Number Description verstring 1 Protocol version providerstring 2 Canonical domain contactoptional string 3 Contact email exchangesrepeated AuthorizedExchange 4 Authorized Exchanges catalog_contributorsrepeated CatalogContributor 5 Authorized third-party catalog pushers extStruct 15 Extension point
Authorizes a third party to push catalog metadata on the provider’s behalf.
Field Type Number Description domainstring 1 Contributor domain (e.g. “doubleverify.com”) relationshipstring 2 Relationship type (e.g. “verifier”, “exchange”)
A Exchange authorized to sell this provider’s content.
Field Type Number Description domainstring 1 Canonical domain of the Exchange endpointstring 2 RAMP ExchangeService endpoint URL relationshipProviderRelationship 3 Relationship type (mirrors ads.txt DIRECT/RESELLER) extStruct 15 Extension point
Served at /.well-known/ramp-exchange.json. Machine-readable self-description of a RAMP Exchange. See Exchange Manifest for details.
Field Type Number Description verstring 1 RAMP protocol version domainstring 2 Canonical domain namestring 3 Human-readable name operatorstring 4 Operating organization operator_domainoptional string 5 Operator’s corporate domain exchange_endpointstring 6 ExchangeService endpoint URL keys_uristring 7 Ed25519 public keys URL health_endpointoptional string 8 Health check endpoint URL catalog_endpointoptional string 9 CatalogService endpoint URL protocol_versions_supportedrepeated string 10 Supported RAMP protocol versions pricing_models_supportedrepeated string 11 Supported pricing models delivery_methods_supportedrepeated string 12 Supported delivery methods hash_methods_supportedrepeated string 13 Accepted hash methods accepted_verifiersrepeated string 14 Trusted verifier domains contact_emailoptional string 15 Contact email terms_urioptional string 16 Terms of service URL privacy_urioptional string 17 Privacy policy URL supported_profilesrepeated string 18 Domain extension profiles this Exchange conforms to (e.g. “ramp-news-v1”) base_currencyoptional string 19 ISO 4217 base currency for all unit_cost values (e.g. “USD”) extStruct 20 Extension point
Per-path content access rules. Used by Exchanges to communicate provider access policies.
Field Type Number Description default_policyResourceAccessPolicy 1 Default policy for paths not matching any rule rulesrepeated AccessPolicyRule 2 Path-specific overrides
Access policy for a URL path pattern.
Field Type Number Description patternstring 1 Glob pattern (e.g. “/premium/”, “/free/ “) policyResourceAccessPolicy 2 Access policy for matching paths
Messages for the Agent-to-Broker path (Steps 1 and 6). When an agent talks directly to an Exchange, it uses ResourceQuery/TransactionRequest instead.
Agent sends to Broker (Step 1).
Field Type Number Description verstring 1 RAMP protocol version idstring 2 Unique request identifier requesterRequester 3 Requester identity, scopes, and optional delegation. Broker forwards this in ResourceQuery.requester. constraintsoptional RequestConstraints 4 Budget and preference constraints supported_profilesrepeated string 5 Domain extension profiles the agent understands (e.g. “ramp-academic-v1”) queryoptional string 6 Search query for Broker-side resource discovery. When present, the Broker interprets the query and discovers resources across Exchanges on the agent’s behalf. Can be used alongside Requester.uris. search_filtersoptional Struct 7 Structured search filters (alongside or instead of query). Keys are profile-specific: "academic.topic", "news.category", "legal.jurisdiction", etc. The Broker maps these to Exchange-specific query parameters. extStruct 15 Extension point
Budget and preference constraints for exchange filtering and offer selection.
Field Type Number Description exchangesrepeated string 1 Authorized Exchange domains max_priceoptional Cost 2 Maximum price the agent will pay max_unit_costoptional double 3 Maximum effective cost per unit delivery_preferencerepeated DeliveryMethod 4 Preferred delivery methods (in order) reporting_capableoptional bool 5 Whether agent supports post-usage reporting preferred_exchangesrepeated string 6 Exchanges with existing relationships (subscriptions) budget_scopeoptional string 7 Budget scope identifier (e.g. “user:u-12345”) period_budgetoptional Cost 8 Per-period budget limit budget_periodoptional Duration 9 Budget period (e.g. 720h = 30 days) max_data_ageoptional Duration 10 Maximum acceptable age of resource data (for DYNAMIC resources)
Broker returns to Agent (Step 6).
Field Type Number Description verstring 1 Protocol version idstring 2 Unique response identifier request_idstring 3 Echoed request ID from Step 1 transaction_idstring 4 Exchange-assigned transaction ID billing_idstring 5 Billing reference exchangestring 6 Which Exchange won the selection packagecomp.v1.Package 7 CoMP Package with retrieval.endpoint populated costCost 8 Transaction cost delivery_methodDeliveryMethod 9 How content is delivered reporting_obligationoptional ReportingObligation 10 Reporting obligations the agent must fulfill expires_atoptional Timestamp 11 When the delivery endpoint expires broker_feeoptional Cost 12 Broker’s fee for this transaction extStruct 15 Extension point
Messages for the optional CatalogService RPC.
Push or update content entries in the Exchange catalog.
Field Type Number Description tenant_idstring 1 Tenant identifier entriesrepeated ResourceEntry 2 Content entries to push caller_idstring 5 Identity of the caller
A single resource catalog entry.
Field Type Number Description domainstring 1 Provider domain pathstring 2 Content path content_idoptional string 3 Content identifier titleoptional string 4 Content title word_countoptional int32 5 Word count estimated_quantityoptional int32 6 Estimated quantity in the metering unit content_hashoptional string 7 Content hash hash_methodoptional string 8 Hash algorithm sourceoptional IngestionSource 9 How the entry was discovered provenance_sourceoptional string 10 Who provided this metadata (e.g. “gumgum.com”) provenance_timestampoptional Timestamp 11 When metadata was collected attestationsrepeated ResourceAttestation 12 Signed attestations about this content extStruct 15 Extension point
Field Type Number Description acceptedint32 1 Number of entries accepted rejectedint32 2 Number of entries rejected
Field Type Number Description tenant_idstring 1 Tenant identifier pathsrepeated string 2 Paths to remove
Field Type Number Description removedint32 1 Number of entries removed
Field Type Number Description tenant_idstring 1 Tenant identifier
Field Type Number Description startedbool 1 Whether the refresh was started
Value Name Description 0 UNSPECIFIED 1 PER_ACCESS One-time access fee 2 PER_TOKEN Rate per LLM token consumed 3 PER_FETCH Rate per fetch request 4 SUBSCRIPTION Recurring access 5 FREE No charge 6 ATTRIBUTION Free with required attribution 7 CONTRIBUTION Good-faith payment 8 TRAINING Per training instance fee 9 REVENUE_SHARE Revenue share model (percentage of agent revenue) 10 PER_PAGE Per document page (legal filings, PDFs) 11 PER_MINUTE Per minute of audio/video 12 PER_RECORD Per structured data record
Value Name Description 0 UNSPECIFIED 1 INVALID_LICENSE License ID not recognized 2 EXPIRED_LICENSE License ID expired 3 INSUFFICIENT_BALANCE Buyer’s balance too low 4 RATE_LIMITED Too many requests 5 CONTENT_UNAVAILABLE Content no longer available 6 FUNCTION_PROHIBITED Requested function not permitted 7 GEO_RESTRICTED Buyer’s geography not permitted 8 REPORTING_OVERDUE Buyer has overdue reports 9 OFFER_EXPIRED Offer TTL exceeded 10 SIGNATURE_INVALID Signature verification failed 11 QUOTA_EXCEEDED Subscription access count exhausted for this period 12 DELEGATION_EXPIRED Biscuit delegation token expired 13 SCOPE_INSUFFICIENT Requester’s scopes do not cover this resource
Value Name Description 0 UNSPECIFIED 1 DELIVERY_FAILED CDN returned 4xx/5xx 2 CONTENT_MISMATCH Content hash does not match attested hash 3 INCOMPLETE_CONTENT Significantly fewer tokens than promised 4 WRONG_CONTENT Different content than described 5 EXPIRED_BEFORE_FETCH Signed URL expired before agent could fetch
Full dispute lifecycle from filing to final resolution.
Value Name Description 0 UNSPECIFIED 1 FILED Dispute received, processing started 2 AUTO_RESOLVED Tier 1 automated resolution (< 1s) 3 EVIDENCE_NEEDED Additional evidence required from a party 4 UNDER_REVIEW Tier 2 rule-based review in progress 5 ESCALATED Tier 3 pattern investigation triggered 6 RESOLVED Decision made (Tier 2) 7 APPEALED Losing party submitted new evidence 8 SETTLED Investigation complete, settlement applied (Tier 3) 9 FINAL Terminal state — dispute closed
Outcome of a resolved dispute.
Value Name Description 0 UNSPECIFIED 1 CREDIT Account credit applied to next billing cycle 2 REDELIVERY New signed URL issued for same content 3 REJECTED Dispute rejected with reason 4 INVESTIGATION Escalated to pattern analysis (Tier 3)
How the citation is presented to the user.
Value Name Description 0 LINK Hyperlink citation 1 FOOTNOTE Footnote citation 2 INLINE Inline text citation
Why no offers are available for a requested URI.
Value Name Description 0 UNSPECIFIED 1 NOT_IN_CATALOG URI is not in this Exchange’s catalog 2 CONTENT_BLOCKED Provider opted out of AI access 3 FUNCTION_PROHIBITED Requested function prohibited by provider terms 4 GEO_RESTRICTED Requester’s geography is restricted 5 USER_CATEGORY_PROHIBITED Requester’s user category not permitted 6 TEMPORARILY_UNAVAILABLE Content temporarily unavailable (e.g. feed refresh) 7 NOT_AUTHORIZED Exchange not authorized by provider 8 SCOPE_INSUFFICIENT Requester’s scopes do not cover this resource. Used in enterprise deployments; public Exchanges SHOULD silently omit. 9 UNKNOWN_CRITICAL_EXTENSION Consumer encountered ext_critical keys it does not recognize
What kind of entity is making the request.
Value Name Description 0 UNSPECIFIED 1 AGENT Autonomous AI agent (LLM, RAG system, research bot) 2 HUMAN_TOOL Human using an AI-powered tool (copilot, assistant) 3 SERVICE Enterprise service account (automated pipeline, cron job) 4 DELEGATED Agent acting on behalf of a user (delegated identity) 5 RESEARCH Research pipeline (batch data collection, model training)
Value Name Description 0 UNSPECIFIED 1 MARKETPLACE Direct query or Exchange discovery 2 SEARCH Via search engine (Exa, Tavily, etc.) 3 RECOMMENDATION Via content recommendation service 4 SYNDICATION Via content syndication tracking
Value Name Description 0 UNSPECIFIED 1 DIRECT Content returned inline 2 INSTRUCTIONS Delivery instructions (signed URL, token) 3 STREAMING Real-time streaming connection (WebSocket, SSE, gRPC stream)
Signals whether resource content changes over time. Drives hash verification behavior.
Value Name Description 0 UNSPECIFIED 1 STATIC Content is immutable. Hash is stable and verifiable. Mismatch is disputable. 2 DYNAMIC Content changes between offer and fetch. Hash mismatch is expected, not disputable. Use data_as_of for freshness. 3 LIVE Content does not exist at offer time (real-time streaming). No content_hash applicable. Metering is time-based.
Value Name Description 0 UNSPECIFIED 1 RAMP_SITEMAP RAMP XML namespace in sitemap 2 RSL RSL rsl.txt 3 SITEMAP Standard sitemap.xml 4 HTML_CRAWL HTML crawl + readability extraction 5 CMS_API CMS REST API (WordPress, etc.) 6 MANUAL Manual configuration 7 CATALOG_API Third-party CatalogService push
Value Name Description 0 UNSPECIFIED 1 DIRECT Provider has a direct contract with this Exchange 2 RESELLER Exchange resells content via another authorized party
Value Name Description 0 UNSPECIFIED 1 LICENSED Content requires a RAMP transaction 2 OPEN Content is freely accessible 3 BLOCKED Content is not available to AI systems