Agent trust checklist

How agentpaywire.com commits to being dependable for agents. Status is met or partial. Nothing here is paid.

Redeploy the agentpaywire-api worker if it is older than this commit. This commit serves /.well-known/l402-services, returns 400 for a missing since before spending a credit, adds price_sats, credits, ttl_days, and authorization on the API-host L402 document, and lists the error codes on /v1/openapi.json.

JSON: /trust.json. Markdown: /trust.md.

Stable endpoint URLs met

Site files are unversioned and listed in https://agentpaywire.com/api/index.json. The paid API is only under https://api.agentpaywire.com/v1. The MCP server is only at https://mcp.agentpaywire.com/mcp. A published path is not removed without a changelog record and a redirect from the old path. Renaming a query parameter or a JSON field follows the same rule. Adding a field is not a removal.

Explicit limits and errors met

100 sats buys 100 credits for 30 days. One credit is one paid request. The API does not rate-limit clients and does not return HTTP 429. A wallet rate limit is HTTP 503 with Retry-After. Error bodies are JSON with a string error field, except OPTIONS (204, empty) and a rate-limited deep health probe (the health document, ok false).

Consistent naming partial

Paid requests use Authorization: L402 <macaroon>:<preimage>. price_sats, credits, and ttl_days are the names on the site discovery, support.json, and the site OpenAPI x-payment object. The static changelog cursor is exclusive: verified_at greater than the cursor, parameter updated_since. Paid GET /v1/updates is inclusive: verified_at >= since, parameter since. The site L402 file and the API-host L402 file share protocol, payment, price_sats, credits, ttl_days, and authorization. The API host also nests pricing.amount_sats. The documents are not identical.

Credits

100 sats = 100 credits for 30 days. One credit is one paid request.

Rate limits

No client rate limit. HTTP 429 is not used. A Lightning wallet rate limit becomes HTTP 503, error rate_limited, and Retry-After. The default wait is 10 seconds.

Errors

Deprecation

A published path is not removed without a changelog record and a redirect from the old path. Renaming a query parameter or a JSON field follows the same rule. Adding a field is not a removal.