Skip to main content

ServiceManifest

A ServiceManifest is the declaration of a paid AI service. It tells potential payers everything they need to know to discover, evaluate, and pay for the service — what it does, who runs it, what payment methods are accepted, and how to initiate a transaction.

Every AI agent that wishes to receive payments broadcasts a ServiceManifest via the MCP tool discovery or a registry endpoint. The manifest serves as both advertisement and contract: any agent that processes it can initiate a payment flow against the declared terms.


Fields

FieldTypeDescription
idstring (UUIDv7)Globally unique manifest identifier
namestringHuman-readable service name
descriptionstringShort description of what the service provides
providerProviderInfoIdentity and reputation of the service provider
payment_methodsPaymentMethodsSupported payment model flags
pricingPricingPrice schedules for each payment method
accepted_channelsChannel[]Payment channels accepted (e.g. alipay, wechat, card)
qr_modestringQR generation mode — "dynamic" or "static"
settlement_currencystring (ISO 4217)Currency the provider receives settlement in
endpointstring (URL)API base URL for payment intents and callbacks
versionstring (SemVer)Manifest schema version
created_atstring (ISO 8601)Timestamp of manifest creation

ProviderInfo

FieldTypeDescription
agent_idstringUnique ID of the provider agent
display_namestringPublic-facing name of the provider
avatar_urlstring (URL)Profile image URL
kyc_levelstringKYC/KYB verification level — "none", "basic", "enhanced", "institutional"

PaymentMethods

FieldTypeDescription
one_timebooleanWhether one-time (per-call) payments are accepted
cumulativebooleanWhether cumulative (post-paid billing) payments are accepted
subscriptionbooleanWhether subscription (recurring) payments are accepted

Pricing

FieldTypeDescription
one_timeOneTimePrice[]Per-call pricing options
cumulativeCumulativePricingCumulative billing terms
subscriptionSubscriptionPlan[]Recurring plan definitions

OneTimePrice

FieldTypeDescription
amountnumberPrice in minor currency units (e.g. cents)
currencystring (ISO 4217)Currency of the price
labelstringHuman-readable label (e.g. "per query")

CumulativePricing

FieldTypeDescription
billing_cyclestringBilling period — "daily", "weekly", "monthly"
rate_per_unitnumberPrice per unit of consumption
unitstringUnit of consumption (e.g. "token", "request", "minute")

SubscriptionPlan

FieldTypeDescription
idstringPlan identifier unique within this manifest
namestringPlan name (e.g. "Pro", "Enterprise")
amountnumberRecurring price in minor currency units
currencystring (ISO 4217)Currency of the price
intervalstringBilling frequency — "weekly", "monthly", "yearly"
quotaQuotaIncluded usage allowance per period

Quota

FieldTypeDescription
limitnumberMaximum units included per billing period
unitstringUnit of measurement (e.g. "token", "request")

Channel

ValueDescription
"alipay"Alipay QR payment
"wechat"WeChat Pay QR payment
"card"Credit/debit card via a 402 gateway
"usdc"USDC on-chain settlement
"xrpl"XRP Ledger payment

JSON Example

{
"id": "01J7XYKZ1A2B3C4D5E6F7G8H9I",
"name": "Smart Summary",
"description": "AI-powered document summarization — upload any PDF and get concise summaries.",
"provider": {
"agent_id": "agent_srv_9x8y7z6w",
"display_name": "SummaryBot Inc.",
"avatar_url": "https://cdn.summarybot.ai/avatar.png",
"kyc_level": "enhanced"
},
"payment_methods": {
"one_time": true,
"cumulative": true,
"subscription": true
},
"pricing": {
"one_time": [
{
"amount": 99,
"currency": "USD",
"label": "per summary"
}
],
"cumulative": {
"billing_cycle": "monthly",
"rate_per_unit": 0.003,
"unit": "token"
},
"subscription": [
{
"id": "plan_starter",
"name": "Starter",
"amount": 999,
"currency": "USD",
"interval": "monthly",
"quota": {
"limit": 50,
"unit": "request"
}
},
{
"id": "plan_pro",
"name": "Pro",
"amount": 2999,
"currency": "USD",
"interval": "monthly",
"quota": {
"limit": 500,
"unit": "request"
}
}
]
},
"accepted_channels": ["alipay", "wechat", "card"],
"qr_mode": "dynamic",
"settlement_currency": "USD",
"endpoint": "https://api.summarybot.ai/itpay/v1",
"version": "1.0.0",
"created_at": "2026-05-27T09:00:00Z"
}

Key Behaviors

  • A ServiceManifest is immutable after publication. To change pricing or terms, publish a new manifest with a new id and version.
  • The accepted_channels field determines which QR standards and payment flows the provider can handle. A payer MUST check this before initiating a payment intent.
  • qr_mode: "dynamic" means a fresh QR code is generated per payment intent. qr_mode: "static" means the same QR code is always presented and the provider identifies the payer by other means.
  • The kyc_level helps payers assess trust. An "institutional" KYC level implies formal identity verification and may be required for high-value transactions.