Discovery

Agent Pay status: Approve does not execute. Execution: not enabled. ACH settlement: not enabled. prepare_payment never moves money. Machine-readable: /docs/agents/status.json.

Everything an agent needs to find and connect to POINTS is public, unauthenticated, and on https://thepoints.io.

Connect

URLWhat it returns
/mcpThe MCP endpoint (Streamable HTTP). Without a token it returns HTTP 401 and a WWW-Authenticate header pointing to the protected-resource metadata.
/.well-known/oauth-protected-resourceThe resource (https://thepoints.io/mcp), its authorization server, and scopes_supported
/.well-known/oauth-authorization-serverAuthorization, token, registration, and revocation endpoints; PKCE S256; public clients only
/.well-known/openid-configurationThe same authorization server metadata, for clients that look there

Read the authorization, token, registration, and revocation endpoints from the metadata rather than hard-coding them.

Read

URLWhat it returns
/llms.txtIndex of the public site and docs for language models
/llms-full.txtEvery public docs page and the changelog as one Markdown file
/docs/agents/llms.txtThis section only
/docs/<page>.mdAny docs page as Markdown, for example /docs/agents/quickstart.md

Machine-readable state

URLWhat it returns
/docs/agents/status.jsonAgent Pay state, computed on each request: authorization, execution, approveExecutes, ACH settlement
/docs/catalog.jsonEvery POINTS product with its status
/changelog.jsonWhat shipped to production, by commit
/docs/agents/reference/mcp-tools.jsonMCP tools with scopes, annotations, and input schemas
/docs/agents/reference/scopes.jsonOAuth scopes and the tools that need them
/docs/agents/reference/statuses.jsonStatus values and their meaning
/docs/agents/reference/policy-vocabulary.jsonPolicy schema version, categories, matching rules, default caps
/docs/agents/reference/errors.jsonprepare_payment failure classes and protocol errors

The reference JSON is generated from the same code the MCP server runs. A connected client can also call tools/list and get_agent_pay_policy_vocabulary for the live values on its connection.

Read status.json before telling a user what an approval does. Today it reports "approveExecutes": false.