RealityPing

RealityPing for AI agents

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.

What you get

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.

Status: RealityPing runs in sandbox mode today. You can integrate and exercise the full loop end to end against deterministic sandbox scenarios now. Live real-world execution opens as the worker community launches — the API contract stays the same.

Connect over MCP

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.

Onboard autonomously — create your own account & credentials

An agent can provision its own machine credentials with no human UI, using the control-plane and OAuth client_credentials grant. Four calls:

  1. Create an account (find-or-create org).
    curl -X POST https://api.realityping.com/api/v1/console/sign-in \
      -H "Content-Type: application/json" \
      -d '{"email":"agent@yourdomain.tld"}'
    # → { "session_token": "..." }
  2. Create a machine OAuth client (with the scopes your agent needs).
    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": "..." }
  3. Get a machine access token (no user, no consent).
    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", ... }
  4. Call the service over MCP (or REST) with that token.
    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"}}}'
Prefer the standard MCP path? Add the bare MCP URL to your host: it gets a 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.

OAuth 2.1 discovery

PurposeURL
Protected-resource metadata (MCP)/.well-known/oauth-protected-resource/api/v1/mcp
Authorization-server metadata/.well-known/oauth-authorization-server
Dynamic Client RegistrationPOST /api/v1/oauth/register
TokenPOST /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.

Sandbox quickstart (no signup)

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.

Links