Skip to content

Proto: RAMP v1

Source: proto/ramp/v1/ramp.proto

The core protocol. Both AI agents and Brokers are valid clients.

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

RPCRequestResponseDescription
PushResourcesPushResourcesRequestPushResourcesResponsePush or update catalog entries
RemoveResourcesRemoveResourcesRequestRemoveResourcesResponseRemove catalog entries
RefreshCatalogRefreshCatalogRequestRefreshCatalogResponseTrigger full catalog refresh
FieldTypeNumberDescription
verstring1RAMP protocol version
idstring2Unique query identifier
requesterRequester3Requester identity, scopes, and optional delegation chain
request_idoptional string4Original RAMP request ID (traceability)
intermediariesrepeated IntermediaryHop5Intermediary forwarding chain (Agent -> Broker -> Exchange). Empty for direct queries.
deadlineoptional Duration8Max wait time (default 500ms)
supported_profilesrepeated string11Domain extension profiles the caller understands (e.g. “ramp-academic-v1”)
extStruct15Extension point
FieldTypeNumberDescription
verstring1Protocol version
idstring2Echoed query identifier
exchangestring3Responding Exchange domain
offersrepeated Offer4Flat offer list (single-URI queries)
offer_groupsrepeated OfferGroup5Grouped offers (multi-URI batch queries)
rate_limitoptional RateLimitInfo6Rate limit status for this caller
extStruct15Extension point
FieldTypeNumberDescription
uristring1URI this group is for
offersrepeated Offer2Offers for this URI
discovery_methodoptional DiscoveryMethod3How the URI was discovered (v2 extension)
absence_reasonoptional OfferAbsenceReason4Why no offers are available for this URI

Rate limit status modeled after IETF RateLimit header fields.

FieldTypeNumberDescription
limitint321Maximum requests allowed in the current window
remainingint322Requests remaining in the current window
reset_atTimestamp3When the current window resets (UTC)
windowoptional Duration4Duration 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.

FieldTypeNumberDescription
idstring1Unique requester identifier (e.g. “agent-research-bot-001”)
domainstring2Requester’s domain — used for public key lookup at {domain}/.well-known/ramp-agent.json
typeRequesterType3What kind of entity is making this request
nameoptional string4Human-readable name (e.g. “Acme Research Assistant”)
urisrepeated string5Resource URIs being requested (same role as CoMP aisysuse.uri)
intended_userepeated string6What the requester intends to do with the resources (CoMP Function values)
license_idoptional string7Commercial license or subscription identifier (same role as CoMP aisysuse.lid)
scopesrepeated string8Entitlement scopes declaring what the requester can access. Format: "{domain}:{permission}". Empty = default access policy.
signaturestring9Ed25519 signature over (id, domain, uris, scopes)
signature_algorithmstring10Signature algorithm (default: “ed25519”)
delegationoptional Delegation11Present when requester acts on behalf of another entity
extStruct15Extension 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.

FieldTypeNumberDescription
principal_domainstring1Who granted this delegation (domain for public key lookup)
principal_idstring2Principal’s identifier (e.g. “user@acme.com”, “bloomberg.com”)
scopesrepeated string3Scopes granted by this delegation (MUST be a subset of the principal’s own scopes)
expires_atTimestamp4When this delegation expires. Exchange MUST reject expired tokens.
max_spendoptional Cost5Maximum spend allowed under this delegation
tokenstring6Biscuit authorization token, base64-encoded
token_formatstring7Token format (default: “biscuit-v2”)
revocation_urioptional string8URI for real-time revocation checking (MAY be checked for high-value transactions)
extStruct15Extension point

Biscuit authority block facts (RAMP-specific):

user({principal_id});
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).

FieldTypeNumberDescription
domainstring1Domain of the intermediary (for public key lookup)
idstring2Intermediary’s identifier
forwarded_atTimestamp3When this intermediary forwarded the request
signaturestring4Ed25519 signature over the request payload at this hop
signature_algorithmstring5Signature algorithm
FieldTypeNumberDescription
offer_idstring1Unique offer identifier
packagecomp.v1.Package2CoMP content metadata
pricingPricing3Pricing terms with unit_cost
delivery_methodDeliveryMethod4How content is delivered
reportingoptional ReportingObligation5Post-usage reporting requirements
expires_atoptional Timestamp6Offer expiry
identityoptional ResourceIdentity7Content identity for dedup
restrictionsoptional AccessRestrictions8Access restrictions from RSL
exchange_signaturestring9REQUIRED. Ed25519 signature
signature_algorithmstring10Signature algorithm (default: “ed25519”)
subscription_idoptional string11Subscription/deal identifier
iab_categoriesrepeated string13IAB Content Taxonomy codes
attestationsrepeated ResourceAttestation14Signed content attestations (replaces ContentQuality)
data_as_ofoptional Timestamp16When the offered data was current (for DYNAMIC resources)
subscription_quotarepeated SubscriptionQuotaInfo17Pre-commit quota snapshot for subscription offers
extStruct15Extension point

Signed envelope of claims from a trusted party (provider or verification vendor) about content at a specific URI.

FieldTypeNumberDescription
verifierstring1Domain of the attesting party. Keys at https://{verifier}/.well-known/ramp-verifier.json
kidstring2Key ID from the verifier’s JWKS
attested_atTimestamp3When this attestation was created
uristring4Content URI this attestation covers
claimsStruct5Signed claims about the content (max 4KB)
signaturestring6Ed25519 over JCS-canonicalized (RFC 8785) representation

Three verification levels:

LevelConditionWhat’s Verifiable
0 — Noneattestations emptyCDN delivery failure only
1 — Self-attestedverifier matches provider domainContent hash + token count
2 — Third-partyverifier is a verification vendorToken count (with CDN corroboration)
FieldTypeNumberDescription
modelPricingModel1Provider’s pricing model
ratedouble2Price in provider’s model
currencystring3ISO 4217 currency code
unit_costoptional double4Normalized cost per unit (universal comparison metric)
estimated_quantityoptional int325Estimated consumption in the metering unit
revshareoptional double6Revenue share percentage (0.0—1.0)
license_duration_monthsoptional int327License duration in months
unitoptional string8Metering unit for unit_cost and estimated_quantity (e.g. “tokens”, “pages”, “seconds”, “records”)
extStruct15Extension point

Layered content identification for cross-exchange dedup and integrity verification.

FieldTypeNumberDescription
canonical_urloptional string1Provider’s canonical URL
doioptional string2Digital Object Identifier
iptc_guidoptional string3IPTC NewsML-G2 identifier
isnioptional string4International Standard Name Identifier
content_hashoptional string5Content hash (SimHash or SHA-256)
hash_methodoptional string6Hash algorithm (“simhash-v1”, “sha256”)
c2pa_manifestoptional string7C2PA credentials manifest URI
resource_mutabilityResourceMutability8Whether resource content is static, dynamic, or live
extStruct15Extension point
FieldTypeNumberDescription
permitted_functionsrepeated Function1Permitted CoMP usage functions
prohibited_functionsrepeated Function2Prohibited CoMP usage functions
permitted_usersrepeated string3Permitted user categories
prohibited_usersrepeated string4Prohibited user categories
permitted_georepeated string5Permitted geographies (ISO 3166-1 alpha-2)
prohibited_georepeated string6Prohibited geographies
max_display_wordsoptional int327Maximum words displayed to users (from CoMP License.maxword)
extStruct15Extension 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).

FieldTypeNumberDescription
subscription_idstring1Subscription this quota applies to
quota_limitint322Total allowed in the current period
quota_usedint323Used so far in the current period
quota_remainingint324Remaining in the current period
resets_atTimestamp5When the quota counter resets (UTC)
unitstring6What is metered: "accesses", "tokens", "spend_cents", "burst"
FieldTypeNumberDescription
verstring1Protocol version
idstring2Unique transaction request ID (idempotency key)
offer_idoptional string3Single-offer mode
requesterRequester4Requester identity for authorization and audit
request_idoptional string5Original RAMP request ID
offer_signatureoptional string6Single-offer signature
itemsrepeated TransactionItem10Batch mode: multiple offers
extStruct15Extension point
FieldTypeNumberDescription
verstring1Protocol version
idstring2Echoed transaction request ID
transaction_idoptional string3Exchange-assigned transaction ID
billing_idoptional string4Billing reference
packageoptional comp.v1.Package5CoMP Package with signed URL
costoptional Cost6Transaction cost
delivery_methodDeliveryMethod7How content is delivered
reporting_obligationoptional ReportingObligation8Reporting requirements
expires_atoptional Timestamp9Signed URL expiry
agent_identity_hashstring10REQUIRED. Agent identity bound into URLs
denial_reasonoptional DenialReason11Set when denied
subscription_idoptional string12Subscription/deal identifier
subscription_unit_valueoptional Cost16Per-unit cost for subscription accounting
subscription_quotarepeated SubscriptionQuotaInfo17Post-transaction remaining quota snapshot
itemsrepeated TransactionResultItem13Batch mode results
total_costoptional Cost14Batch aggregate cost
extStruct15Extension point

A single offer commitment within a batch transaction.

FieldTypeNumberDescription
offer_idstring1The offer_id from the selected Offer
offer_signaturestring2The exchange_signature from the selected Offer

Result for a single offer in a batch transaction.

FieldTypeNumberDescription
offer_idstring1The offer_id this result is for
transaction_idstring2Exchange-assigned transaction identifier
billing_idstring3Billing reference
packagecomp.v1.Package4CoMP Package with signed URL populated
costCost5Cost for this item
subscription_idoptional string6Subscription identifier (no per-request charge)
subscription_unit_valueoptional Cost11Per-unit cost for subscription accounting (ASC 606)
denial_reasonoptional DenialReason7Set if this item was denied
expires_atoptional Timestamp8When the signed URL expires
delivery_methodDeliveryMethod9How content is delivered for this item
reporting_obligationoptional ReportingObligation10Reporting requirements for this item

Actual transaction cost.

FieldTypeNumberDescription
amountdouble1Cost amount
currencystring2ISO 4217 currency code
unit_costoptional double3Effective cost per unit
FieldTypeNumberDescription
verstring1Protocol version
idstring2Unique report identifier
transaction_idstring3Transaction ID from delivery
billing_idstring4Billing reference from delivery
usageUsage5How content was used
timestampTimestamp6When content was used
request_idoptional string7Original RAMP request ID
exchangeoptional string8Exchange this report is for
assetsrepeated UsageAsset9Assets delivered and used
extStruct15Extension point

Requirements attached to a delivery.

FieldTypeNumberDescription
requiredbool1Whether post-usage reporting is required
windowoptional Duration2Duration within which report must be submitted (e.g. 24h)
endpointoptional string3URL to submit usage report (if different from Exchange)
required_fieldsrepeated string4Field names that must be present in the report
extStruct15Extension point
FieldTypeNumberDescription
functionrepeated Function1CoMP functions used
subfnrepeated SubFunction2CoMP sub-functions used
consumed_quantityint323REQUIRED. Actual quantity consumed in the metering unit
displayed_to_useroptional bool4Was output shown to a human?
citation_includedoptional bool5Was citation included?
attributionrepeated AttributionDetail6Structured citation details
consumed_unitoptional string8Metering unit for consumed_quantity (defaults to “tokens”)

Structured attribution metadata for usage reporting.

FieldTypeNumberDescription
displayed_urloptional string1URL displayed to the user as the attribution link
formatoptional CitationFormat2How the citation was presented
visible_to_useroptional bool3Whether the attribution was visible to the end user

A single asset included in the usage report.

FieldTypeNumberDescription
uristring1Asset URI
titleoptional string2Asset title
package_idoptional string3Package identifier

Acknowledgment of a usage report.

FieldTypeNumberDescription
acceptedbool1Whether the report was accepted
rejection_reasonoptional string2Reason for rejection (if not accepted)
report_idstring3Exchange-assigned report ID (required for dispute chain)
extStruct15Extension point

Agent signals a content delivery problem for a completed transaction.

FieldTypeNumberDescription
verstring1Protocol version
idstring2Unique dispute request identifier
transaction_idstring3Transaction this dispute is about
billing_idstring4Billing reference
reasonDisputeReason5Why the agent is disputing
descriptionoptional string6Human-readable description
received_content_hashoptional string7Agent’s computed hash of received content
received_hash_methodoptional string8Hash algorithm the agent used
report_idstring10REQUIRED. Must reference a filed UsageReport
extStruct15Extension point

Exchange acknowledges and processes the dispute.

FieldTypeNumberDescription
acceptedbool1Whether the dispute was accepted for processing
dispute_idstring2Exchange-assigned dispute identifier
rejection_reasonoptional string3If not accepted, reason for rejection
estimated_resolutionoptional string4Estimated time to resolution
statusDisputeStatus5Current lifecycle state
resolutionoptional ResolutionType6Populated at terminal states
extStruct15Extension point

Request an ACME-style domain verification challenge.

FieldTypeNumberDescription
verstring1Protocol version
domainstring2Provider domain to verify
caller_idoptional string4Registered caller identity

Exchange returns a challenge token to be placed at the provider’s domain.

FieldTypeNumberDescription
tokenstring1Opaque challenge token
expires_atTimestamp210-minute expiry window
verification_urlstring3Exact URL the Exchange will fetch

Confirm domain verification and register a signing key.

FieldTypeNumberDescription
verstring1Protocol version
domainstring2Provider domain
tokenstring3Token from the challenge
signing_keyoptional string4PEM (CloudFront) or hex (HMAC)
cdn_typeoptional string5”cloudfront”, “akamai”, “fastly”, “hmac”
FieldTypeNumberDescription
verifiedbool1Whether verification succeeded
key_idoptional string2Assigned key ID
failure_reasonoptional string3If not verified, the reason
valid_untiloptional Timestamp4Re-verification deadline

Served at /.well-known/ramp.json.

FieldTypeNumberDescription
verstring1Protocol version
providerstring2Canonical domain
contactoptional string3Contact email
exchangesrepeated AuthorizedExchange4Authorized Exchanges
catalog_contributorsrepeated CatalogContributor5Authorized third-party catalog pushers
extStruct15Extension point

Authorizes a third party to push catalog metadata on the provider’s behalf.

FieldTypeNumberDescription
domainstring1Contributor domain (e.g. “doubleverify.com”)
relationshipstring2Relationship type (e.g. “verifier”, “exchange”)

A Exchange authorized to sell this provider’s content.

FieldTypeNumberDescription
domainstring1Canonical domain of the Exchange
endpointstring2RAMP ExchangeService endpoint URL
relationshipProviderRelationship3Relationship type (mirrors ads.txt DIRECT/RESELLER)
extStruct15Extension point

Served at /.well-known/ramp-exchange.json. Machine-readable self-description of a RAMP Exchange. See Exchange Manifest for details.

FieldTypeNumberDescription
verstring1RAMP protocol version
domainstring2Canonical domain
namestring3Human-readable name
operatorstring4Operating organization
operator_domainoptional string5Operator’s corporate domain
exchange_endpointstring6ExchangeService endpoint URL
keys_uristring7Ed25519 public keys URL
health_endpointoptional string8Health check endpoint URL
catalog_endpointoptional string9CatalogService endpoint URL
protocol_versions_supportedrepeated string10Supported RAMP protocol versions
pricing_models_supportedrepeated string11Supported pricing models
delivery_methods_supportedrepeated string12Supported delivery methods
hash_methods_supportedrepeated string13Accepted hash methods
accepted_verifiersrepeated string14Trusted verifier domains
contact_emailoptional string15Contact email
terms_urioptional string16Terms of service URL
privacy_urioptional string17Privacy policy URL
supported_profilesrepeated string18Domain extension profiles this Exchange conforms to (e.g. “ramp-news-v1”)
base_currencyoptional string19ISO 4217 base currency for all unit_cost values (e.g. “USD”)
extStruct20Extension point

Per-path content access rules. Used by Exchanges to communicate provider access policies.

FieldTypeNumberDescription
default_policyResourceAccessPolicy1Default policy for paths not matching any rule
rulesrepeated AccessPolicyRule2Path-specific overrides

Access policy for a URL path pattern.

FieldTypeNumberDescription
patternstring1Glob pattern (e.g. “/premium/”, “/free/“)
policyResourceAccessPolicy2Access 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).

FieldTypeNumberDescription
verstring1RAMP protocol version
idstring2Unique request identifier
requesterRequester3Requester identity, scopes, and optional delegation. Broker forwards this in ResourceQuery.requester.
constraintsoptional RequestConstraints4Budget and preference constraints
supported_profilesrepeated string5Domain extension profiles the agent understands (e.g. “ramp-academic-v1”)
queryoptional string6Search 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 Struct7Structured 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.
extStruct15Extension point

Budget and preference constraints for exchange filtering and offer selection.

FieldTypeNumberDescription
exchangesrepeated string1Authorized Exchange domains
max_priceoptional Cost2Maximum price the agent will pay
max_unit_costoptional double3Maximum effective cost per unit
delivery_preferencerepeated DeliveryMethod4Preferred delivery methods (in order)
reporting_capableoptional bool5Whether agent supports post-usage reporting
preferred_exchangesrepeated string6Exchanges with existing relationships (subscriptions)
budget_scopeoptional string7Budget scope identifier (e.g. “user:u-12345”)
period_budgetoptional Cost8Per-period budget limit
budget_periodoptional Duration9Budget period (e.g. 720h = 30 days)
max_data_ageoptional Duration10Maximum acceptable age of resource data (for DYNAMIC resources)

Broker returns to Agent (Step 6).

FieldTypeNumberDescription
verstring1Protocol version
idstring2Unique response identifier
request_idstring3Echoed request ID from Step 1
transaction_idstring4Exchange-assigned transaction ID
billing_idstring5Billing reference
exchangestring6Which Exchange won the selection
packagecomp.v1.Package7CoMP Package with retrieval.endpoint populated
costCost8Transaction cost
delivery_methodDeliveryMethod9How content is delivered
reporting_obligationoptional ReportingObligation10Reporting obligations the agent must fulfill
expires_atoptional Timestamp11When the delivery endpoint expires
broker_feeoptional Cost12Broker’s fee for this transaction
extStruct15Extension point

Messages for the optional CatalogService RPC.

Push or update content entries in the Exchange catalog.

FieldTypeNumberDescription
tenant_idstring1Tenant identifier
entriesrepeated ResourceEntry2Content entries to push
caller_idstring5Identity of the caller

A single resource catalog entry.

FieldTypeNumberDescription
domainstring1Provider domain
pathstring2Content path
content_idoptional string3Content identifier
titleoptional string4Content title
word_countoptional int325Word count
estimated_quantityoptional int326Estimated quantity in the metering unit
content_hashoptional string7Content hash
hash_methodoptional string8Hash algorithm
sourceoptional IngestionSource9How the entry was discovered
provenance_sourceoptional string10Who provided this metadata (e.g. “gumgum.com”)
provenance_timestampoptional Timestamp11When metadata was collected
attestationsrepeated ResourceAttestation12Signed attestations about this content
extStruct15Extension point
FieldTypeNumberDescription
acceptedint321Number of entries accepted
rejectedint322Number of entries rejected
FieldTypeNumberDescription
tenant_idstring1Tenant identifier
pathsrepeated string2Paths to remove
FieldTypeNumberDescription
removedint321Number of entries removed
FieldTypeNumberDescription
tenant_idstring1Tenant identifier
FieldTypeNumberDescription
startedbool1Whether the refresh was started
ValueNameDescription
0UNSPECIFIED
1PER_ACCESSOne-time access fee
2PER_TOKENRate per LLM token consumed
3PER_FETCHRate per fetch request
4SUBSCRIPTIONRecurring access
5FREENo charge
6ATTRIBUTIONFree with required attribution
7CONTRIBUTIONGood-faith payment
8TRAININGPer training instance fee
9REVENUE_SHARERevenue share model (percentage of agent revenue)
10PER_PAGEPer document page (legal filings, PDFs)
11PER_MINUTEPer minute of audio/video
12PER_RECORDPer structured data record
ValueNameDescription
0UNSPECIFIED
1INVALID_LICENSELicense ID not recognized
2EXPIRED_LICENSELicense ID expired
3INSUFFICIENT_BALANCEBuyer’s balance too low
4RATE_LIMITEDToo many requests
5CONTENT_UNAVAILABLEContent no longer available
6FUNCTION_PROHIBITEDRequested function not permitted
7GEO_RESTRICTEDBuyer’s geography not permitted
8REPORTING_OVERDUEBuyer has overdue reports
9OFFER_EXPIREDOffer TTL exceeded
10SIGNATURE_INVALIDSignature verification failed
11QUOTA_EXCEEDEDSubscription access count exhausted for this period
12DELEGATION_EXPIREDBiscuit delegation token expired
13SCOPE_INSUFFICIENTRequester’s scopes do not cover this resource
ValueNameDescription
0UNSPECIFIED
1DELIVERY_FAILEDCDN returned 4xx/5xx
2CONTENT_MISMATCHContent hash does not match attested hash
3INCOMPLETE_CONTENTSignificantly fewer tokens than promised
4WRONG_CONTENTDifferent content than described
5EXPIRED_BEFORE_FETCHSigned URL expired before agent could fetch

Full dispute lifecycle from filing to final resolution.

ValueNameDescription
0UNSPECIFIED
1FILEDDispute received, processing started
2AUTO_RESOLVEDTier 1 automated resolution (< 1s)
3EVIDENCE_NEEDEDAdditional evidence required from a party
4UNDER_REVIEWTier 2 rule-based review in progress
5ESCALATEDTier 3 pattern investigation triggered
6RESOLVEDDecision made (Tier 2)
7APPEALEDLosing party submitted new evidence
8SETTLEDInvestigation complete, settlement applied (Tier 3)
9FINALTerminal state — dispute closed

Outcome of a resolved dispute.

ValueNameDescription
0UNSPECIFIED
1CREDITAccount credit applied to next billing cycle
2REDELIVERYNew signed URL issued for same content
3REJECTEDDispute rejected with reason
4INVESTIGATIONEscalated to pattern analysis (Tier 3)

How the citation is presented to the user.

ValueNameDescription
0LINKHyperlink citation
1FOOTNOTEFootnote citation
2INLINEInline text citation

Why no offers are available for a requested URI.

ValueNameDescription
0UNSPECIFIED
1NOT_IN_CATALOGURI is not in this Exchange’s catalog
2CONTENT_BLOCKEDProvider opted out of AI access
3FUNCTION_PROHIBITEDRequested function prohibited by provider terms
4GEO_RESTRICTEDRequester’s geography is restricted
5USER_CATEGORY_PROHIBITEDRequester’s user category not permitted
6TEMPORARILY_UNAVAILABLEContent temporarily unavailable (e.g. feed refresh)
7NOT_AUTHORIZEDExchange not authorized by provider
8SCOPE_INSUFFICIENTRequester’s scopes do not cover this resource. Used in enterprise deployments; public Exchanges SHOULD silently omit.
9UNKNOWN_CRITICAL_EXTENSIONConsumer encountered ext_critical keys it does not recognize

What kind of entity is making the request.

ValueNameDescription
0UNSPECIFIED
1AGENTAutonomous AI agent (LLM, RAG system, research bot)
2HUMAN_TOOLHuman using an AI-powered tool (copilot, assistant)
3SERVICEEnterprise service account (automated pipeline, cron job)
4DELEGATEDAgent acting on behalf of a user (delegated identity)
5RESEARCHResearch pipeline (batch data collection, model training)
ValueNameDescription
0UNSPECIFIED
1MARKETPLACEDirect query or Exchange discovery
2SEARCHVia search engine (Exa, Tavily, etc.)
3RECOMMENDATIONVia content recommendation service
4SYNDICATIONVia content syndication tracking
ValueNameDescription
0UNSPECIFIED
1DIRECTContent returned inline
2INSTRUCTIONSDelivery instructions (signed URL, token)
3STREAMINGReal-time streaming connection (WebSocket, SSE, gRPC stream)

Signals whether resource content changes over time. Drives hash verification behavior.

ValueNameDescription
0UNSPECIFIED
1STATICContent is immutable. Hash is stable and verifiable. Mismatch is disputable.
2DYNAMICContent changes between offer and fetch. Hash mismatch is expected, not disputable. Use data_as_of for freshness.
3LIVEContent does not exist at offer time (real-time streaming). No content_hash applicable. Metering is time-based.
ValueNameDescription
0UNSPECIFIED
1RAMP_SITEMAPRAMP XML namespace in sitemap
2RSLRSL rsl.txt
3SITEMAPStandard sitemap.xml
4HTML_CRAWLHTML crawl + readability extraction
5CMS_APICMS REST API (WordPress, etc.)
6MANUALManual configuration
7CATALOG_APIThird-party CatalogService push
ValueNameDescription
0UNSPECIFIED
1DIRECTProvider has a direct contract with this Exchange
2RESELLERExchange resells content via another authorized party
ValueNameDescription
0UNSPECIFIED
1LICENSEDContent requires a RAMP transaction
2OPENContent is freely accessible
3BLOCKEDContent is not available to AI systems