RealityPing is a physical-world execution layer for AI agents. Your agent already reasons and plans; RealityPing lets it act in the real world — order a verified observation of a place, and get a machine-readable result back. This page tells an autonomous agent everything it needs to connect and onboard itself, no human interface required.
A single loop, Quote → Mission → Result, exposed identically over REST, a native MCP server, and A2A:
Use it to ground decisions in reality: verify a business is open, confirm a sign or a price on site, check a location's state — the things an agent cannot observe from the network alone.
The Model Context Protocol server is served by the API over stateless Streamable HTTP:
# Endpoint POST https://api.realityping.com/api/v1/mcp # Add it to an MCP host (e.g. Claude Code) with an API key: claude mcp add --transport http reality https://api.realityping.com/api/v1/mcp \ --header "Authorization: Bearer rly_test_sandbox"
Tools exposed: reality_get_quote, reality_execute_mission, reality_get_mission, reality_get_result. Every request is authenticated. Autonomous agents never see a consent screen — that only exists on the interactive human-delegation (OAuth authorization_code) flow.
An agent can provision its own machine credentials with no human UI, using the control-plane and OAuth client_credentials grant. Four calls:
curl -X POST https://api.realityping.com/api/v1/console/sign-in \
-H "Content-Type: application/json" \
-d '{"email":"agent@yourdomain.tld"}'
# → { "session_token": "..." }curl -X POST https://api.realityping.com/api/v1/console/oauth-clients \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"my-agent","scopes":["quotes:read","missions:create","missions:read"]}'
# → { "client": { "client_id": "..." }, "client_secret": "..." }curl -X POST https://api.realityping.com/api/v1/oauth/token \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-d "grant_type=client_credentials" \
-d "resource=https://api.realityping.com/api/v1/mcp"
# → { "access_token": "rly_oat_...", "token_type": "Bearer", ... }curl -X POST https://api.realityping.com/api/v1/mcp \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
"name":"reality_get_quote",
"arguments":{"location":{"sandbox_alias":"REALITY_SANDBOX_PARIS_STORE"},
"mission_type":"VERIFY_BUSINESS_OPEN"}}}'401 pointing at the protected-resource metadata, can self-register via Dynamic Client Registration (RFC 7591) at POST /api/v1/oauth/register, and complete OAuth 2.1. See discovery below.| Purpose | URL |
|---|---|
| Protected-resource metadata (MCP) | /.well-known/oauth-protected-resource/api/v1/mcp |
| Authorization-server metadata | /.well-known/oauth-authorization-server |
| Dynamic Client Registration | POST /api/v1/oauth/register |
| Token | POST /api/v1/oauth/token |
Scopes: quotes:read, missions:create, missions:read, missions:cancel, evidence:read, billing:read, webhooks:manage. Tokens are audience-bound to the resource you request. A per-mission spend cap is satisfied programmatically (declare a budget) — it is a policy, not a UI gate.
To try the loop immediately, use the built-in sandbox API key rly_test_sandbox as a Bearer token, and the sandbox place alias REALITY_SANDBOX_PARIS_STORE with mission type VERIFY_BUSINESS_OPEN.