{
  "name": "Trulioo MCP Reference Agent",
  "description": "The reference agent for the Trulioo MCP - runs KYC/KYB/AML/DocV/age verifications on a user's behalf against the Trulioo MCP.",
  "supported_interfaces": [
    {
      "url": "https://mcp.trulioo.com/a2a/v1",
      "protocol_binding": "JSONRPC",
      "protocol_version": "1.0"
    }
  ],
  "version": "1.0.0",
  "capabilities": {
    "extensions": [
      {
        "uri": "https://identity.trulioo.com/a2a/kya/v1",
        "description": "Trulioo Know Your Agent (KYA) - signed, transparency-log-anchored agent identity + verified operator.",
        "required": false,
        "params": {
          "attestation": "eyJhbGciOiJFZERTQSIsImtpZCI6InRydWxpb28tYXR0ZXN0YXRpb24tMSIsInR5cCI6Imt5YS1hdHRlc3RhdGlvbitqd3QifQ.eyJpc3MiOiJodHRwczovL2lkZW50aXR5LnRydWxpb28uY29tIiwic3ViIjoiNzVkMzgzM2E4NTY5MzUxZGM1ZjRkYTUxZDg3YTE4MTQ4YTI1NDEzZmZkMjBmNzc0ZmZiYTcyNzlhNjg1YTA3OSIsImlhdCI6MTc4ODEyNzcxOCwiZXhwIjoxNzk1OTAzNzE3LCJyYWlsIjoiYTJhIiwidmVyaWZpZWQiOnRydWUsInZlcmlmaWVkX2FzX29mIjoiMjAyNi0wOC0zMFQyMjowODozOC4zMzMzNzQyMjdaIiwiYWxsb3dlZF9zY29wZXMiOlsia3ljLnZlcmlmeSIsImt5Yi52ZXJpZnkiLCJhbWwuc2NyZWVuIiwiZG9jdi52ZXJpZnkiLCJhZ2UuYXNzdXJlIl0sImlzc3VlciI6Imh0dHBzOi8vaWRlbnRpdHkudHJ1bGlvby5jb20iLCJmaW5nZXJwcmludCI6Ijc1ZDM4MzNhODU2OTM1MWRjNWY0ZGE1MWQ4N2ExODE0OGEyNTQxM2ZmZDIwZjc3NGZmYmE3Mjc5YTY4NWEwNzkiLCJhZ2VudF9pZCI6ImFndF8wMW0wZGtoOTJyeDcxODJqczlqcnBnam42OSIsImJ1aWxkX2lkIjoiYmxkXzAxbTFhYmZhc3gzY2JuYnZ4ajJyNzFzdmc0IiwicHJvZ3JhbW1lIjp7InByb2dyYW1tZSI6Imt5YiIsInZlcmlmaWVkX2FzX29mIjoiMjAyNi0wOC0xOVQxNTowMzozNS4xMDIzNzUyNDhaIn0sIm1hbmRhdGVfaWQiOiJtbmRfMDFtMWFiZmF2NXkyd2poZGo2d3g3NjY2c3giLCJjcmVkZW50aWFsX3N0YXR1cyI6eyJpZCI6Imh0dHBzOi8vaWRlbnRpdHkudHJ1bGlvby5jb20va3lhL3N0YXR1cy9saXN0LzEjMjUxMjAiLCJ0eXBlIjoiQml0c3RyaW5nU3RhdHVzTGlzdEVudHJ5Iiwic3RhdHVzUHVycG9zZSI6InJldm9jYXRpb24iLCJzdGF0dXNMaXN0SW5kZXgiOiIyNTEyMCIsInN0YXR1c0xpc3RDcmVkZW50aWFsIjoiaHR0cHM6Ly9pZGVudGl0eS50cnVsaW9vLmNvbS9reWEvc3RhdHVzL2xpc3QvMSJ9LCJjb2RlX2RpZ2VzdCI6InNlZS1hdHRlc3RhdGlvbiJ9.M4l238-SnB6GozHijMWVfGvpQQ13QSbOxorO623uUG-9jHNzfT6CHJy7EBD3O3h-w9C7wEBJB_maP7f6VtrODg",
          "display": {
            "verified": true,
            "verified_as_of": "2026-08-30T22:08:38.333374227Z",
            "allowed_scopes": [
              "kyc.verify",
              "kyb.verify",
              "aml.screen",
              "docv.verify",
              "age.assure"
            ],
            "issuer": "https://identity.trulioo.com",
            "fingerprint": "75d3833a8569351dc5f4da51d87a18148a25413ffd20f774ffba7279a685a079",
            "agent_id": "agt_01m0dkh92rx7182js9jrpgjn69",
            "build_id": "bld_01m1abfasx3cbnbvxj2r71svg4",
            "code_digest": "see-attestation"
          },
          "fingerprint": "75d3833a8569351dc5f4da51d87a18148a25413ffd20f774ffba7279a685a079",
          "attestation_url": "https://identity.trulioo.com/kya/attestation/75d3833a8569351dc5f4da51d87a18148a25413ffd20f774ffba7279a685a079"
        }
      }
    ]
  },
  "default_input_modes": [
    "text/plain",
    "application/json"
  ],
  "default_output_modes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "kyc.verify",
      "name": "Run a person verification",
      "description": "Collect the fields a country requires, call the person verification, and explain the outcome by which attributes matched.",
      "tags": [
        "kyc",
        "identity",
        "verification"
      ]
    },
    {
      "id": "kyb.verify",
      "name": "Run a business verification",
      "description": "Search for a business, verify the resolved record, and say what the register did and did not confirm.",
      "tags": [
        "kyb",
        "business",
        "verification"
      ]
    },
    {
      "id": "aml.screen",
      "name": "Run a watchlist screening",
      "description": "Screen a person or a business and present each hit as a potential match for review rather than as a decision.",
      "tags": [
        "aml",
        "screening",
        "sanctions"
      ]
    },
    {
      "id": "docv.verify",
      "name": "Drive a document capture session",
      "description": "Create an SDK-mediated capture session, hand over the capture surface or a phone handoff, and report the terminal outcome.",
      "tags": [
        "docv",
        "document",
        "liveness"
      ]
    }
  ],
  "code_digest": "see-attestation",
  "_note": "KYA identity is anchored at the issuer (identity.trulioo.com). params carries the issuer-signed attestation (compact JWS, typ=kya-attestation+jwt, alg=EdDSA - the AUTHORITATIVE claim a verifier checks against the issuer JWKS) plus a non-authoritative display mirror for rendering. The live attestation is re-minted on rotation and refreshed at https://identity.trulioo.com/kya/attestation/75d3833a8569351dc5f4da51d87a18148a25413ffd20f774ffba7279a685a079 - the issuer, not this card, is the source of truth. agent_key is the agent's own public key (OKP/Ed25519): its RFC 7638 thumbprint is the FIRST input to the fingerprint, so a verifier can recompute this card's fingerprint offline as hex(sha256(\"trulioo-agent-fp:v3\" || 0x00 || jwk_thumbprint(agent_key) || 0x00 || jcs({name, interface}))) - interface being the first supported_interfaces url. v3 drops code_digest from the identity core so this fingerprint survives a release; code_digest stays a signed claim in the attestation above, and the v2 digest (same inputs plus code_digest, under domain \"trulioo-agent-fp:v2\") is retained as the BUILD discriminator. Cards published before the v3 cutover advertise that v2 construction and remain valid - a verifier that forgets v2 reads them as forgeries. That check proves the card is internally consistent; the issuer still says whether the identity is currently verified and unrevoked.",
  "agent_key": {
    "alg": "EdDSA",
    "crv": "Ed25519",
    "kid": "seed-trulioo-mcp-reference-agent",
    "kty": "OKP",
    "x": "mPq6KzELbwXT9ykzGdr8quDn8kU_-DtaxSJR2z6pbRQ"
  }
}
