From stripe-mpp
Implements MPP service discovery: extends OpenAPI with x-service-info metadata and x-payment-info pricing, creates llms.txt for AI agents to autonomously find and pay for APIs.
npx claudepluginhub orcaqubits/agentic-commerce-skills-plugins --plugin stripe-mppThis skill is limited to using the following tools:
**Fetch live docs**:
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Acquire memory dumps from live systems/VMs and analyze with Volatility 3 for processes, networks, DLLs, injections in incident response or malware hunts.
Provides x86-64/ARM disassembly patterns, calling conventions, control flow recognition for static analysis of executables and compiled binaries.
Fetch live docs:
https://paymentauth.org/draft-payment-discovery-00.html for the canonical service discovery specificationmpp service discovery openapi x-payment-info llms.txt for implementation examplessite:mpp.dev directory for the MPP payments directory and listing requirementshttps://mpp.dev/overview for discovery-related documentationMPP service discovery allows AI agents to autonomously find, understand, and pay for HTTP services. It uses two mechanisms:
Services publish an OpenAPI 3.x document with two custom extensions:
{
"openapi": "3.0.0",
"info": { "title": "My Paid API", "version": "1.0.0" },
"x-service-info": {
"categories": ["compute", "data", "media"],
"docs": {
"apiReference": "https://api.example.com/docs",
"homepage": "https://example.com",
"llms": "https://api.example.com/llms.txt"
}
}
}
{
"paths": {
"/api/data": {
"get": {
"summary": "Get premium data",
"x-payment-info": {
"intent": "charge",
"method": "tempo",
"amount": "100",
"currency": "0x20C000000000000000000000b9537d11c60E8b50",
"description": "$0.01 per request"
},
"responses": {
"200": { "description": "Premium data" },
"402": { "description": "Payment required" }
}
}
}
}
}
| Field | Required | Description |
|---|---|---|
intent | Yes | "charge" or "session" |
method | Yes | Payment method (e.g., "tempo", "stripe") |
amount | No | Price (null for dynamic pricing) |
currency | Yes | Currency identifier (contract address for crypto, code for fiat) |
description | No | Human-readable pricing description |
amount can be null for dynamic pricing — the 402 challenge remains authoritativeCache-Control: max-age=300A text file (analogous to robots.txt) describing the service for autonomous agents:
# My Paid API
> AI-powered data analysis service
## Endpoints
- GET /api/analyze — Analyze data ($0.05/request, Tempo USDC)
- GET /api/summarize — Summarize text ($0.02/request, Tempo USDC)
## Pricing
All prices in USDC. Volume discounts available via session payments.
## Authentication
Payments via MPP (HTTP 402). No API key required.
## Contact
support@example.com
Services can be listed in the MPP payments directory (100+ services):
x-payment-infoapp.get('/openapi.json', (c) => {
return c.json({
openapi: '3.0.0',
info: { title: 'My API', version: '1.0.0' },
'x-service-info': {
categories: ['data'],
docs: { llms: 'https://api.example.com/llms.txt' },
},
paths: {
'/api/data': {
get: {
summary: 'Get data',
'x-payment-info': {
intent: 'charge',
method: 'tempo',
amount: '100',
currency: '0x20C000000000000000000000b9537d11c60E8b50',
description: '$0.01 per request',
},
responses: {
'200': { description: 'Data returned' },
'402': { description: 'Payment required' },
},
},
},
},
});
});
app.get('/llms.txt', (c) => {
return c.text(`# My API\n> Premium data service\n\n## Endpoints\n...`);
});
openapi.json and llms.txt for maximum discoverabilityCache-Control: max-age=300 on discovery endpointsdescription fields for human-readable pricingFetch the latest service discovery specification from paymentauth.org for exact extension schemas, directory listing requirements, and llms.txt format before implementing.