Skip to content

ramp.json Example

The ramp.json file is served at /.well-known/ramp.json on the provider’s domain. It declares which Exchanges are authorized to sell the provider’s resources — like ads.txt for AI resource access.

{
"ver": "1.0",
"provider": "techprovider.com",
"contact": "licensing@techprovider.com",
"catalog_contributors": [
{
"domain": "doubleverify.com",
"relationship": "verifier"
},
{
"domain": "gumgum.com",
"relationship": "verifier"
}
],
"marketplaces": [
{
"domain": "marketplace.ssp-alpha.com",
"endpoint": "https://marketplace.ssp-alpha.com/v1",
"relationship": "DIRECT"
},
{
"domain": "marketplace.ssp-beta.com",
"endpoint": "https://marketplace.ssp-beta.com/v1",
"relationship": "RESELLER"
}
]
}
FieldTypeRequiredDescription
verstringYesRAMP protocol version
providerstringYesCanonical domain of the provider
contactstringNoContact email for licensing inquiries
catalog_contributorsarrayNoAuthorized third-party catalog pushers
catalog_contributors[].domainstringYesCanonical domain of the contributor (e.g., doubleverify.com)
catalog_contributors[].relationshipstringYesRelationship type: verifier, marketplace, etc.
marketplacesarrayYesAuthorized Exchanges for this provider
marketplaces[].domainstringYesCanonical domain of the Exchange
marketplaces[].endpointstringYesRAMP ExchangeService endpoint URL
marketplaces[].relationshipstringYesDIRECT or RESELLER (mirrors ads.txt)

The agent checks /.well-known/ramp.json before attempting to access content:

1. Agent wants content from techprovider.com
2. GET https://techprovider.com/.well-known/ramp.json
3. Finds Exchange endpoint: marketplace.ssp-alpha.com/v1
4. Calls DiscoverResources → gets Offers with pricing
5. Calls ExecuteTransaction → gets signed URL
6. Fetches content from CDN

If the agent doesn’t know about RAMP and tries to crawl directly:

1. Agent hits techprovider.com/premium/article
2. Edge function returns 403 + X-Content-Rules header
3. Agent discovers ramp.json from the header
4. Follows standard RAMP flow from step 2 above
RelationshipDescriptionAd-Tech Equivalent
DIRECTProvider has a direct contract with this Exchangeads.txt DIRECT
RESELLERExchange resells content via another authorized partyads.txt RESELLER

The Exchange periodically re-fetches ramp.json for each provider’s domain. If the Exchange is removed from a provider’s ramp.json, the tenant is revoked and offers stop being served. This provides ongoing verification, not just onboarding.

The ramp.json structure maps to the ProviderManifest message in ramp/v1/ramp.proto:

message ProviderManifest {
string ver = 1;
string provider = 2;
optional string contact = 3;
repeated AuthorizedExchange marketplaces = 4;
repeated CatalogContributor catalog_contributors = 5;
}
message AuthorizedExchange {
string domain = 1;
string endpoint = 2;
ProviderRelationship relationship = 3;
}
// Third party authorized to push catalog metadata on behalf of a provider.
message CatalogContributor {
string domain = 1; // e.g., "doubleverify.com"
string relationship = 2; // e.g., "verifier", "marketplace"
}
enum ProviderRelationship {
PROVIDER_RELATIONSHIP_UNSPECIFIED = 0;
PROVIDER_RELATIONSHIP_DIRECT = 1;
PROVIDER_RELATIONSHIP_RESELLER = 2;
}