{
  "name": "Trulioo Agent Workspace",
  "description": "Trulioo's Relay agent - the hosted agent workspace/control plane that runs research, workflow, and verification tasks on a user's behalf.",
  "supported_interfaces": [
    {
      "url": "https://relay.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.eyJpc3MiOiJodHRwczovL2lkZW50aXR5LnRydWxpb28uY29tIiwic3ViIjoiOWI3OTcxZDkxOTY4Y2UyNjlkYTA4YWNhMWNiYmIzNmFhNjY1YjBlYTcyZTY1NzhhODdhYjg0ZWFhYjRhNDM5ZiIsImlhdCI6MTc4ODEyMTg4OSwiZXhwIjoxNzk1ODk3ODg4LCJyYWlsIjoiYTJhIiwidmVyaWZpZWQiOnRydWUsInZlcmlmaWVkX2FzX29mIjoiMjAyNi0wOC0zMFQyMDozMToyOS44MTE4MzI0OTBaIiwiYWxsb3dlZF9zY29wZXMiOlsicmVzZWFyY2gucnVuIiwid29ya2Zsb3cucnVuIiwidmVyaWZpY2F0aW9uLnJ1biJdLCJpc3N1ZXIiOiJodHRwczovL2lkZW50aXR5LnRydWxpb28uY29tIiwiZmluZ2VycHJpbnQiOiI5Yjc5NzFkOTE5NjhjZTI2OWRhMDhhY2ExY2JiYjM2YWE2NjViMGVhNzJlNjU3OGE4N2FiODRlYWFiNGE0MzlmIiwiYWdlbnRfaWQiOiJhZ3RfMDFtMHhrNTdnYnl4NXE0ZWtzbjgzZWQ3dmciLCJidWlsZF9pZCI6ImJsZF8wMW0xYTV4ZXkxMDVhOXFoOGRlYXl5OWE2eiIsInByb2dyYW1tZSI6eyJwcm9ncmFtbWUiOiJreWIiLCJ2ZXJpZmllZF9hc19vZiI6IjIwMjYtMDgtMTlUMTU6MDM6MzUuMTAyMzc1MjQ4WiJ9LCJtYW5kYXRlX2lkIjoibW5kXzAxbTFhNXhlejA3OGMzczNrenh5ODJxNG10IiwiY3JlZGVudGlhbF9zdGF0dXMiOnsiaWQiOiJodHRwczovL2lkZW50aXR5LnRydWxpb28uY29tL2t5YS9zdGF0dXMvbGlzdC8xIzI3ODA2IiwidHlwZSI6IkJpdHN0cmluZ1N0YXR1c0xpc3RFbnRyeSIsInN0YXR1c1B1cnBvc2UiOiJyZXZvY2F0aW9uIiwic3RhdHVzTGlzdEluZGV4IjoiMjc4MDYiLCJzdGF0dXNMaXN0Q3JlZGVudGlhbCI6Imh0dHBzOi8vaWRlbnRpdHkudHJ1bGlvby5jb20va3lhL3N0YXR1cy9saXN0LzEifSwiY29kZV9kaWdlc3QiOiJzaGEyNTY6NTE0MWM1ZDEzYjEyMTZkYjlhYjNkNjE2ZDJkZWMzZWFiMzM2OWIxNzA2ODM0Njk5ZWY1N2JjOTQ1YmFjYjliOCJ9.pgBl69XDUn9_UIrbH9jqiIDtNTz9Yp7BHKyzvwWYQ1IPks0GDzmyjAa4PJHqNi5qfPf5j0fP1pE7gbVafKy8Bw",
          "display": {
            "verified": true,
            "verified_as_of": "2026-08-30T20:31:29.811832490Z",
            "allowed_scopes": [
              "research.run",
              "workflow.run",
              "verification.run"
            ],
            "issuer": "https://identity.trulioo.com",
            "fingerprint": "9b7971d91968ce269da08aca1cbbb36aa665b0ea72e6578a87ab84eaab4a439f",
            "agent_id": "agt_01m0xk57gbyx5q4eksn83ed7vg",
            "build_id": "bld_01m1a5xey105a9qh8deayy9a6z",
            "code_digest": "sha256:5141c5d13b1216db9ab3d616d2dec3eab3369b1706834699ef57bc945bacb9b8"
          },
          "fingerprint": "9b7971d91968ce269da08aca1cbbb36aa665b0ea72e6578a87ab84eaab4a439f",
          "attestation_url": "https://identity.trulioo.com/kya/attestation/9b7971d91968ce269da08aca1cbbb36aa665b0ea72e6578a87ab84eaab4a439f"
        }
      }
    ]
  },
  "default_input_modes": [
    "text/plain",
    "application/json"
  ],
  "default_output_modes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "handoff",
      "name": "Task handoff",
      "description": "Accept a task handoff into a granted workspace.",
      "tags": [
        "a2a",
        "handoff"
      ]
    },
    {
      "id": "query",
      "name": "Workspace query",
      "description": "Read-only query of granted workspace state and knowledge.",
      "tags": [
        "a2a",
        "query"
      ]
    },
    {
      "id": "status",
      "name": "Status update",
      "description": "Receive a status or artifact update for a known task.",
      "tags": [
        "a2a",
        "status"
      ]
    }
  ],
  "code_digest": "sha256:5141c5d13b1216db9ab3d616d2dec3eab3369b1706834699ef57bc945bacb9b8",
  "_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/9b7971d91968ce269da08aca1cbbb36aa665b0ea72e6578a87ab84eaab4a439f - 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. Relay's interface requires authentication (it answers 401 unauthenticated), which is expected: reachability is not public access.",
  "agent_key": {
    "alg": "EdDSA",
    "crv": "Ed25519",
    "kid": "seed-trulioo-agent-workspace",
    "kty": "OKP",
    "x": "0vmJXw49BShuJkk_paPongOT7iIowZGv39VJmpBbwKg"
  }
}
