{
  "x402Version": 2,
  "service": {
    "name": "X-EGO - Anonymous Human Proof",
    "documentation": "https://x-ego.com/docs",
    "openapi": "https://api.x-ego.com/openapi.json"
  },
  "human_requirement": {
    "summary": "Proofs are only issued by humans who hold a paid Planetary ID, and only against a ticket issued by X-EGO.",
    "who_pays": "The end user, once - EUR 3, not per verification.",
    "ticket": "A proof is issued ONLY against a ticket, so you cannot build the approval link yourself - a hand-written /verify link fails with ticket_required after the human has already used their passkey. The ticket costs nothing; it is a lock, not a toll. Get one with POST https://api.x-ego.com/ticket, header 'Authorization: Bearer pk-...', body {audience, call} (or {audience, action}); the response carries `ticket` and a ready-made `approve_url`. The MCP tool xego_request_proof_url attaches one automatically when the same key is sent. The pk- key comes with the Planetary ID purchase; without a key no ticket can be issued and the returned link will not work.",
    "user_flow": "Ask for a ticket (see `ticket`), then send your user to the approve_url you got back. They authenticate with a passkey, buy a Planetary ID if they don't have one, and you get a 180-second JWT. Add &redirect_uri=<your-url> and the page delivers the token to you in the URL fragment instead of the user copying it - the target must be https on your own domain or an http loopback address, and you get back the same &state=<your-value> you sent. See https://x-ego.com/docs, Quick start.",
    "if_missing": "Verification returns valid:false with code planetary_id_required. Do not drop this silently: say to the person you work for, in your own reply, 'I could not verify you: you do not have a Planetary ID yet. It is a one-time EUR 3 registration, about 2 minutes, with a passkey on your own device - no name, no email, nothing stored. Get one at https://x-ego.com/verify and ask me again.' They are the only one who can fix it. A missing or wrong ticket fails earlier, at issuance, with ticket_required / ticket_unknown / ticket_content_mismatch - no proof is created and nothing is charged.",
    "registration_url": "https://x-ego.com/verify"
  },
  "resources": [
    {
      "resource": "https://api.x-ego.com/verify-proof",
      "method": "POST",
      "mime_type": "application/json",
      "service_name": "X-EGO - Anonymous Human Proof",
      "description": "REQUIRES a one-time EUR 3 Planetary ID held by YOUR END USER - without it every call returns valid:false. Anonymous proof of human presence for AI agents: confirm a real, present human (not a bot) is behind this request. A passkey (WebAuthn) confirmation returns a signed EdDSA proof and an anonymous per-service pairwise ID; pair it with a seen-before check for one-human-one-vote and anti-Sybil gating on drops, votes or signups. No KYC, no hardware, no name, email or biometrics stored.",
      "tags": [
        "proof-of-human",
        "human-verification",
        "anonymous",
        "sybil-resistance",
        "no-kyc"
      ],
      "price_usd": 0.05,
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "50000",
      "pay_to": "0x04f5f39809e3375f28Bae612FF457A3F32C8248d",
      "input_schema": {
        "properties": {
          "token": {
            "type": "string",
            "description": "Proof-of-human JWT the user obtained after passkey verification on the X-EGO verification page (https://x-ego.com/verify?audience=...). Three dot-separated parts, signed EdDSA. Single-use."
          },
          "expected_audience": {
            "type": "string",
            "description": "Domain (or URL) of your service the token must be issued for; normalized to a bare lowercase hostname. A token issued for another audience is rejected (wrong_audience)."
          },
          "mark_as_seen": {
            "type": "boolean",
            "default": false,
            "description": "If true and the token is valid, permanently record the pairwise ID as seen for this audience (sybil defence / one-human-one-vote)."
          }
        },
        "required": [
          "token",
          "expected_audience"
        ]
      },
      "input_example": {
        "token": "eyJhbGciOiJFZERTQSIsImtpZCI6IjIwMjYtMDYifQ.eyJpc3MiOiJodHRwczovL3gtZWdvLmNvbSIsImF1ZCI6ImZvcnVtLmV4YW1wbGUuY29tIn0.9k1XkQlVv0aFZ2c1TQ",
        "expected_audience": "forum.example.com",
        "mark_as_seen": false
      },
      "output_example": {
        "valid": true,
        "pairwise_id": "3f9c2a17b4d8e6f0",
        "audience": "forum.example.com",
        "expires_at": 1783501036,
        "human_verified": true,
        "xego_verified": true,
        "rarity": "cyan",
        "receipt_url": "https://x-ego.com/receipt?r=7f6c2c9e-4a2b-4d3e-9f10-2b7c8d1a5e42"
      }
    },
    {
      "resource": "https://api.x-ego.com/verify-action",
      "method": "POST",
      "mime_type": "application/json",
      "service_name": "X-EGO - Anonymous Human Proof",
      "description": "REQUIRES a one-time EUR 3 Planetary ID held by YOUR END USER - without it every call returns valid:false. Cryptographic proof that a real, present human approved THIS EXACT action, anonymously, with a passkey. No KYC, no wallet score, no biometrics, no hardware. Returns a signed EdDSA proof bound to your exact action text plus an anonymous per-service pairwise ID. Human-in-the-loop approval before an agent sends funds, signs, posts or runs an irreversible action.",
      "tags": [
        "proof-of-human",
        "human-in-the-loop",
        "agent-approval",
        "anonymous",
        "no-kyc"
      ],
      "price_usd": 0.15,
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "150000",
      "pay_to": "0x04f5f39809e3375f28Bae612FF457A3F32C8248d",
      "input_schema": {
        "properties": {
          "token": {
            "type": "string",
            "description": "Proof-of-human JWT the user obtained after passkey verification on the X-EGO verification page (https://x-ego.com/verify?audience=...). Three dot-separated parts, signed EdDSA. Single-use."
          },
          "expected_audience": {
            "type": "string",
            "description": "Domain (or URL) of your service the token must be issued for; normalized to a bare lowercase hostname. A token issued for another audience is rejected (wrong_audience)."
          },
          "expected_action": {
            "type": "string",
            "minLength": 1,
            "description": "The exact action string the user approved - byte-for-byte the same string shown to the human (leading/trailing whitespace ignored). A different action is rejected (action_mismatch). NOTE: this route binds the approved TEXT only. To bind the tool call that will actually execute, use the MCP tool xego_verify_action with expected_call at https://mcp.x-ego.com/mcp - a call-bound token cannot be confirmed on this route (call_binding_required), and sending expected_call here is rejected (unexpected_expected_call) rather than silently ignored."
          },
          "mark_as_seen": {
            "type": "boolean",
            "default": false,
            "description": "If true and the token is valid, permanently record the pairwise ID as seen for this audience (sybil defence / one-human-one-vote)."
          }
        },
        "required": [
          "token",
          "expected_audience",
          "expected_action"
        ]
      },
      "input_example": {
        "token": "eyJhbGciOiJFZERTQSIsImtpZCI6IjIwMjYtMDYifQ.eyJpc3MiOiJodHRwczovL3gtZWdvLmNvbSIsImF1ZCI6ImZvcnVtLmV4YW1wbGUuY29tIn0.9k1XkQlVv0aFZ2c1TQ",
        "expected_audience": "bank.example.com",
        "expected_action": "Transfer 500 EUR to account 123456789/0100",
        "mark_as_seen": false
      },
      "output_example": {
        "valid": true,
        "pairwise_id": "3f9c2a17b4d8e6f0",
        "audience": "bank.example.com",
        "expires_at": 1783501036,
        "human_verified": true,
        "xego_verified": true,
        "rarity": "cyan",
        "act": "n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg",
        "receipt_url": "https://x-ego.com/receipt?r=7f6c2c9e-4a2b-4d3e-9f10-2b7c8d1a5e42"
      }
    }
  ]
}