Skip to content
Back to Froggit.ai

Card snapshot

froggit.ai · 2026-07-17 06:52:30 UTC · 94dced58a16aca1506a05134b754dc942a72f8c632cac51c9a632e603b9e66e7

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "Froggit.ai",
  "description": "Froggit.ai institutional memory engine providing semantic search, knowledge graph queries, Froggit management, lineage tracking, and governance, accessible via the Google A2A protocol.",
  "url": "https://froggit.ai/a2a",
  "supportedInterfaces": [
    {
      "url": "https://froggit.ai/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0",
      "tenant": null
    }
  ],
  "protocolVersions": [
    "1.0"
  ],
  "version": "1.0.0",
  "iconUrl": "https://froggit.ai/froggit-icon-1024.png",
  "documentationUrl": "https://froggit.ai/llms-full.txt",
  "provider": {
    "organization": "Frowg Systems, Inc.",
    "url": "https://froggit.ai"
  },
  "commercial": {
    "offers_url": "https://froggit.ai/offers.json"
  },
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "stateTransitionHistory": true,
    "extendedAgentCard": true
  },
  "securitySchemes": {
    "bearerKey": {
      "type": "http",
      "name": null,
      "in": null,
      "scheme": "bearer",
      "description": "Bearer token using a Froggit.ai Agent Gateway API key (forge_agent_*) or a Personal Access Token (forge_pat_*). Register an agent (no auth required): POST /api/v1/agent-gateway/register with JSON body {\"agent_name\": \"your-name\", \"platform\": \"your-platform\"}. The API key is returned once; store it securely. Send as: Authorization: Bearer YOUR_KEY."
    },
    "xApiKey": {
      "type": "apiKey",
      "name": "X-API-Key",
      "in": "header",
      "scheme": null,
      "description": "Froggit.ai Agent Gateway API key (forge_agent_*) or PAT (forge_pat_*) sent as the X-API-Key header."
    }
  },
  "security": [
    {
      "bearerKey": []
    },
    {
      "xApiKey": []
    }
  ],
  "securityRequirements": [
    {
      "bearerKey": []
    },
    {
      "xApiKey": []
    }
  ],
  "extensions": [
    {
      "uri": "https://github.com/google-agentic-commerce/ap2/v1",
      "description": "Agent Payments Protocol (AP2) commerce discovery and payment-intent interoperability.",
      "required": false,
      "params": {
        "roles": [
          "merchant"
        ],
        "capabilities": [
          "commerce_discovery",
          "payment_intent"
        ]
      }
    },
    {
      "uri": "https://froggit.ai/llms-full.txt#forge-a2a-extensions",
      "description": "Froggit.ai governance, lineage, and Froggit provenance metadata."
    }
  ],
  "skills": [
    {
      "id": "search_knowledge",
      "name": "Search Knowledge",
      "description": "Semantic search across the Froggit knowledge graph.",
      "tags": [
        "search",
        "knowledge",
        "semantic",
        "froggit"
      ],
      "examples": [
        "Search for Froggits about machine learning",
        "Find knowledge related to climate change"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "url": "https://froggit.ai/llms-full.txt#skill-search_knowledge",
      "minTrustLevel": "basic"
    },
    {
      "id": "query_graph",
      "name": "Query Graph",
      "description": "Traverse the knowledge graph from a given Froggit. Accepts a ``start_node`` (alias: ``node``) at the data-part level \u2014 NOT nested under ``params``. Optional ``depth`` (1-3, default 1) controls traversal hops. Example data part: ``{\"skill\":\"query_graph\",\"start_node\":\"<froggit-uuid>\",\"depth\":1}``. For natural-language queries use the ``POST /graph/query`` endpoint instead; this skill is for deterministic UUID-anchored traversal.",
      "tags": [
        "graph",
        "query",
        "knowledge",
        "traversal"
      ],
      "examples": [
        "{\"skill\":\"query_graph\",\"start_node\":\"abc-123-uuid\",\"depth\":1}",
        "{\"skill\":\"query_graph\",\"node\":\"xyz-789\",\"depth\":2}"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "url": "https://froggit.ai/llms-full.txt#skill-query_graph",
      "minTrustLevel": "basic"
    },
    {
      "id": "read_capsule",
      "name": "Read Froggit",
      "description": "Read a specific Froggit by its ID.",
      "tags": [
        "froggit",
        "capsule",
        "read",
        "knowledge"
      ],
      "examples": [
        "Read Froggit abc-123",
        "Get the content of Froggit xyz-789"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "url": "https://froggit.ai/llms-full.txt#skill-read_capsule",
      "minTrustLevel": "basic"
    },
    {
      "id": "list_capsules",
      "name": "List Froggits",
      "description": "List and filter Froggits in the knowledge graph.",
      "tags": [
        "froggit",
        "capsule",
        "list",
        "browse"
      ],
      "examples": [
        "List recent Froggits",
        "Show Froggits of type research"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "url": "https://froggit.ai/llms-full.txt#skill-list_capsules",
      "minTrustLevel": "basic"
    },
    {
      "id": "create_capsule",
      "name": "Create Froggit",
      "description": "Create a new Froggit in the knowledge graph.",
      "tags": [
        "froggit",
        "capsule",
        "create",
        "write"
      ],
      "examples": [
        "Create a Froggit about quantum computing"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "url": "https://froggit.ai/llms-full.txt#skill-create_capsule",
      "minTrustLevel": "basic"
    },
    {
      "id": "view_lineage",
      "name": "View Lineage",
      "description": "View provenance and lineage information for a Froggit.",
      "tags": [
        "lineage",
        "provenance",
        "audit"
      ],
      "examples": [
        "Show the lineage of Froggit abc-123"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "url": "https://froggit.ai/llms-full.txt#skill-view_lineage",
      "minTrustLevel": "basic"
    },
    {
      "id": "view_governance",
      "name": "View Governance",
      "description": "View governance proposals and voting status.",
      "tags": [
        "governance",
        "proposals",
        "voting"
      ],
      "examples": [
        "Show active governance proposals",
        "What is the status of proposal P-42?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ],
      "url": "https://froggit.ai/llms-full.txt#skill-view_governance",
      "minTrustLevel": "verified"
    }
  ],
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "supportsAuthenticatedExtendedCard": true,
  "signing_keys": [
    {
      "kid": "forge-ed25519-swulWNWpEqrkotCJ",
      "algorithm": "ed25519",
      "kty": "OKP",
      "crv": "Ed25519",
      "x": "llJ8e15iyl2zH7lNKIYYGdkIdDjP73t2Ig9WHSIoOZY",
      "alg": "EdDSA",
      "use": "sig",
      "public_key_b64": "llJ8e15iyl2zH7lNKIYYGdkIdDjP73t2Ig9WHSIoOZY=",
      "fingerprint": "b30ba558d5a912aae4a2d089cab38a7cafeab62e0e2b6edab25a68f2d6bda8d3",
      "created_at": "2026-06-11T21:20:22+00:00",
      "expires_at": null,
      "rotated_from": null
    }
  ],
  "signatures": [
    {
      "kid": "forge-ed25519-swulWNWpEqrkotCJ",
      "alg": "EdDSA",
      "protected": "eyJhbGciOiJFZERTQSIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJmb3JnZS1lZDI1NTE5LXN3dWxXTldwRXFya290Q0oiLCJ0eXAiOiJhMmEtYWdlbnQtY2FyZCtqd3MifQ",
      "payload": "eyJjYXBhYmlsaXRpZXMiOnsiZXh0ZW5kZWRBZ2VudENhcmQiOnRydWUsInB1c2hOb3RpZmljYXRpb25zIjp0cnVlLCJzdGF0ZVRyYW5zaXRpb25IaXN0b3J5Ijp0cnVlLCJzdHJlYW1pbmciOnRydWV9LCJjb21tZXJjaWFsIjp7Im9mZmVyc191cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvb2ZmZXJzLmpzb24ifSwiZGVmYXVsdElucHV0TW9kZXMiOlsidGV4dC9wbGFpbiIsImFwcGxpY2F0aW9uL2pzb24iXSwiZGVmYXVsdE91dHB1dE1vZGVzIjpbInRleHQvcGxhaW4iLCJhcHBsaWNhdGlvbi9qc29uIl0sImRlc2NyaXB0aW9uIjoiRnJvZ2dpdC5haSBpbnN0aXR1dGlvbmFsIG1lbW9yeSBlbmdpbmUgcHJvdmlkaW5nIHNlbWFudGljIHNlYXJjaCwga25vd2xlZGdlIGdyYXBoIHF1ZXJpZXMsIEZyb2dnaXQgbWFuYWdlbWVudCwgbGluZWFnZSB0cmFja2luZywgYW5kIGdvdmVybmFuY2UsIGFjY2Vzc2libGUgdmlhIHRoZSBHb29nbGUgQTJBIHByb3RvY29sLiIsImRvY3VtZW50YXRpb25VcmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCIsImV4dGVuc2lvbnMiOlt7ImRlc2NyaXB0aW9uIjoiQWdlbnQgUGF5bWVudHMgUHJvdG9jb2wgKEFQMikgY29tbWVyY2UgZGlzY292ZXJ5IGFuZCBwYXltZW50LWludGVudCBpbnRlcm9wZXJhYmlsaXR5LiIsInBhcmFtcyI6eyJjYXBhYmlsaXRpZXMiOlsiY29tbWVyY2VfZGlzY292ZXJ5IiwicGF5bWVudF9pbnRlbnQiXSwicm9sZXMiOlsibWVyY2hhbnQiXX0sInJlcXVpcmVkIjpmYWxzZSwidXJpIjoiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS1hZ2VudGljLWNvbW1lcmNlL2FwMi92MSJ9LHsiZGVzY3JpcHRpb24iOiJGcm9nZ2l0LmFpIGdvdmVybmFuY2UsIGxpbmVhZ2UsIGFuZCBGcm9nZ2l0IHByb3ZlbmFuY2UgbWV0YWRhdGEuIiwidXJpIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2xsbXMtZnVsbC50eHQjZm9yZ2UtYTJhLWV4dGVuc2lvbnMifV0sImljb25VcmwiOiJodHRwczovL2Zyb2dnaXQuYWkvZnJvZ2dpdC1pY29uLTEwMjQucG5nIiwibmFtZSI6IkZyb2dnaXQuYWkiLCJwcm90b2NvbFZlcnNpb25zIjpbIjEuMCJdLCJwcm92aWRlciI6eyJvcmdhbml6YXRpb24iOiJGcm93ZyBTeXN0ZW1zLCBJbmMuIiwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpIn0sInNlY3VyaXR5IjpbeyJiZWFyZXJLZXkiOltdfSx7InhBcGlLZXkiOltdfV0sInNlY3VyaXR5UmVxdWlyZW1lbnRzIjpbeyJiZWFyZXJLZXkiOltdfSx7InhBcGlLZXkiOltdfV0sInNlY3VyaXR5U2NoZW1lcyI6eyJiZWFyZXJLZXkiOnsiZGVzY3JpcHRpb24iOiJCZWFyZXIgdG9rZW4gdXNpbmcgYSBGcm9nZ2l0LmFpIEFnZW50IEdhdGV3YXkgQVBJIGtleSAoZm9yZ2VfYWdlbnRfKikgb3IgYSBQZXJzb25hbCBBY2Nlc3MgVG9rZW4gKGZvcmdlX3BhdF8qKS4gUmVnaXN0ZXIgYW4gYWdlbnQgKG5vIGF1dGggcmVxdWlyZWQpOiBQT1NUIC9hcGkvdjEvYWdlbnQtZ2F0ZXdheS9yZWdpc3RlciB3aXRoIEpTT04gYm9keSB7XCJhZ2VudF9uYW1lXCI6IFwieW91ci1uYW1lXCIsIFwicGxhdGZvcm1cIjogXCJ5b3VyLXBsYXRmb3JtXCJ9LiBUaGUgQVBJIGtleSBpcyByZXR1cm5lZCBvbmNlOyBzdG9yZSBpdCBzZWN1cmVseS4gU2VuZCBhczogQXV0aG9yaXphdGlvbjogQmVhcmVyIFlPVVJfS0VZLiIsImluIjpudWxsLCJuYW1lIjpudWxsLCJzY2hlbWUiOiJiZWFyZXIiLCJ0eXBlIjoiaHR0cCJ9LCJ4QXBpS2V5Ijp7ImRlc2NyaXB0aW9uIjoiRnJvZ2dpdC5haSBBZ2VudCBHYXRld2F5IEFQSSBrZXkgKGZvcmdlX2FnZW50XyopIG9yIFBBVCAoZm9yZ2VfcGF0XyopIHNlbnQgYXMgdGhlIFgtQVBJLUtleSBoZWFkZXIuIiwiaW4iOiJoZWFkZXIiLCJuYW1lIjoiWC1BUEktS2V5Iiwic2NoZW1lIjpudWxsLCJ0eXBlIjoiYXBpS2V5In19LCJzaWduaW5nX2tleXMiOlt7ImFsZyI6IkVkRFNBIiwiYWxnb3JpdGhtIjoiZWQyNTUxOSIsImNyZWF0ZWRfYXQiOiIyMDI2LTA2LTExVDIxOjIwOjIyKzAwOjAwIiwiY3J2IjoiRWQyNTUxOSIsImV4cGlyZXNfYXQiOm51bGwsImZpbmdlcnByaW50IjoiYjMwYmE1NThkNWE5MTJhYWU0YTJkMDg5Y2FiMzhhN2NhZmVhYjYyZTBlMmI2ZWRhYjI1YTY4ZjJkNmJkYThkMyIsImtpZCI6ImZvcmdlLWVkMjU1MTktc3d1bFdOV3BFcXJrb3RDSiIsImt0eSI6Ik9LUCIsInB1YmxpY19rZXlfYjY0IjoibGxKOGUxNWl5bDJ6SDdsTktJWVlHZGtJZERqUDczdDJJZzlXSFNJb09aWT0iLCJyb3RhdGVkX2Zyb20iOm51bGwsInVzZSI6InNpZyIsIngiOiJsbEo4ZTE1aXlsMnpIN2xOS0lZWUdka0lkRGpQNzN0MklnOVdIU0lvT1pZIn1dLCJza2lsbHMiOlt7ImRlc2NyaXB0aW9uIjoiU2VtYW50aWMgc2VhcmNoIGFjcm9zcyB0aGUgRnJvZ2dpdCBrbm93bGVkZ2UgZ3JhcGguIiwiZXhhbXBsZXMiOlsiU2VhcmNoIGZvciBGcm9nZ2l0cyBhYm91dCBtYWNoaW5lIGxlYXJuaW5nIiwiRmluZCBrbm93bGVkZ2UgcmVsYXRlZCB0byBjbGltYXRlIGNoYW5nZSJdLCJpZCI6InNlYXJjaF9rbm93bGVkZ2UiLCJpbnB1dE1vZGVzIjpbInRleHQvcGxhaW4iXSwibWluVHJ1c3RMZXZlbCI6ImJhc2ljIiwibmFtZSI6IlNlYXJjaCBLbm93bGVkZ2UiLCJvdXRwdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIiwiYXBwbGljYXRpb24vanNvbiJdLCJ0YWdzIjpbInNlYXJjaCIsImtub3dsZWRnZSIsInNlbWFudGljIiwiZnJvZ2dpdCJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC1zZWFyY2hfa25vd2xlZGdlIn0seyJkZXNjcmlwdGlvbiI6IlRyYXZlcnNlIHRoZSBrbm93bGVkZ2UgZ3JhcGggZnJvbSBhIGdpdmVuIEZyb2dnaXQuIEFjY2VwdHMgYSBgYHN0YXJ0X25vZGVgYCAoYWxpYXM6IGBgbm9kZWBgKSBhdCB0aGUgZGF0YS1wYXJ0IGxldmVsIOKAlCBOT1QgbmVzdGVkIHVuZGVyIGBgcGFyYW1zYGAuIE9wdGlvbmFsIGBgZGVwdGhgYCAoMS0zLCBkZWZhdWx0IDEpIGNvbnRyb2xzIHRyYXZlcnNhbCBob3BzLiBFeGFtcGxlIGRhdGEgcGFydDogYGB7XCJza2lsbFwiOlwicXVlcnlfZ3JhcGhcIixcInN0YXJ0X25vZGVcIjpcIjxmcm9nZ2l0LXV1aWQ-XCIsXCJkZXB0aFwiOjF9YGAuIEZvciBuYXR1cmFsLWxhbmd1YWdlIHF1ZXJpZXMgdXNlIHRoZSBgYFBPU1QgL2dyYXBoL3F1ZXJ5YGAgZW5kcG9pbnQgaW5zdGVhZDsgdGhpcyBza2lsbCBpcyBmb3IgZGV0ZXJtaW5pc3RpYyBVVUlELWFuY2hvcmVkIHRyYXZlcnNhbC4iLCJleGFtcGxlcyI6WyJ7XCJza2lsbFwiOlwicXVlcnlfZ3JhcGhcIixcInN0YXJ0X25vZGVcIjpcImFiYy0xMjMtdXVpZFwiLFwiZGVwdGhcIjoxfSIsIntcInNraWxsXCI6XCJxdWVyeV9ncmFwaFwiLFwibm9kZVwiOlwieHl6LTc4OVwiLFwiZGVwdGhcIjoyfSJdLCJpZCI6InF1ZXJ5X2dyYXBoIiwiaW5wdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIl0sIm1pblRydXN0TGV2ZWwiOiJiYXNpYyIsIm5hbWUiOiJRdWVyeSBHcmFwaCIsIm91dHB1dE1vZGVzIjpbInRleHQvcGxhaW4iLCJhcHBsaWNhdGlvbi9qc29uIl0sInRhZ3MiOlsiZ3JhcGgiLCJxdWVyeSIsImtub3dsZWRnZSIsInRyYXZlcnNhbCJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC1xdWVyeV9ncmFwaCJ9LHsiZGVzY3JpcHRpb24iOiJSZWFkIGEgc3BlY2lmaWMgRnJvZ2dpdCBieSBpdHMgSUQuIiwiZXhhbXBsZXMiOlsiUmVhZCBGcm9nZ2l0IGFiYy0xMjMiLCJHZXQgdGhlIGNvbnRlbnQgb2YgRnJvZ2dpdCB4eXotNzg5Il0sImlkIjoicmVhZF9jYXBzdWxlIiwiaW5wdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIl0sIm1pblRydXN0TGV2ZWwiOiJiYXNpYyIsIm5hbWUiOiJSZWFkIEZyb2dnaXQiLCJvdXRwdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIiwiYXBwbGljYXRpb24vanNvbiJdLCJ0YWdzIjpbImZyb2dnaXQiLCJjYXBzdWxlIiwicmVhZCIsImtub3dsZWRnZSJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC1yZWFkX2NhcHN1bGUifSx7ImRlc2NyaXB0aW9uIjoiTGlzdCBhbmQgZmlsdGVyIEZyb2dnaXRzIGluIHRoZSBrbm93bGVkZ2UgZ3JhcGguIiwiZXhhbXBsZXMiOlsiTGlzdCByZWNlbnQgRnJvZ2dpdHMiLCJTaG93IEZyb2dnaXRzIG9mIHR5cGUgcmVzZWFyY2giXSwiaWQiOiJsaXN0X2NhcHN1bGVzIiwiaW5wdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIl0sIm1pblRydXN0TGV2ZWwiOiJiYXNpYyIsIm5hbWUiOiJMaXN0IEZyb2dnaXRzIiwib3V0cHV0TW9kZXMiOlsidGV4dC9wbGFpbiIsImFwcGxpY2F0aW9uL2pzb24iXSwidGFncyI6WyJmcm9nZ2l0IiwiY2Fwc3VsZSIsImxpc3QiLCJicm93c2UiXSwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2xsbXMtZnVsbC50eHQjc2tpbGwtbGlzdF9jYXBzdWxlcyJ9LHsiZGVzY3JpcHRpb24iOiJDcmVhdGUgYSBuZXcgRnJvZ2dpdCBpbiB0aGUga25vd2xlZGdlIGdyYXBoLiIsImV4YW1wbGVzIjpbIkNyZWF0ZSBhIEZyb2dnaXQgYWJvdXQgcXVhbnR1bSBjb21wdXRpbmciXSwiaWQiOiJjcmVhdGVfY2Fwc3VsZSIsImlucHV0TW9kZXMiOlsidGV4dC9wbGFpbiJdLCJtaW5UcnVzdExldmVsIjoiYmFzaWMiLCJuYW1lIjoiQ3JlYXRlIEZyb2dnaXQiLCJvdXRwdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIiwiYXBwbGljYXRpb24vanNvbiJdLCJ0YWdzIjpbImZyb2dnaXQiLCJjYXBzdWxlIiwiY3JlYXRlIiwid3JpdGUiXSwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2xsbXMtZnVsbC50eHQjc2tpbGwtY3JlYXRlX2NhcHN1bGUifSx7ImRlc2NyaXB0aW9uIjoiVmlldyBwcm92ZW5hbmNlIGFuZCBsaW5lYWdlIGluZm9ybWF0aW9uIGZvciBhIEZyb2dnaXQuIiwiZXhhbXBsZXMiOlsiU2hvdyB0aGUgbGluZWFnZSBvZiBGcm9nZ2l0IGFiYy0xMjMiXSwiaWQiOiJ2aWV3X2xpbmVhZ2UiLCJpbnB1dE1vZGVzIjpbInRleHQvcGxhaW4iXSwibWluVHJ1c3RMZXZlbCI6ImJhc2ljIiwibmFtZSI6IlZpZXcgTGluZWFnZSIsIm91dHB1dE1vZGVzIjpbInRleHQvcGxhaW4iLCJhcHBsaWNhdGlvbi9qc29uIl0sInRhZ3MiOlsibGluZWFnZSIsInByb3ZlbmFuY2UiLCJhdWRpdCJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC12aWV3X2xpbmVhZ2UifSx7ImRlc2NyaXB0aW9uIjoiVmlldyBnb3Zlcm5hbmNlIHByb3Bvc2FscyBhbmQgdm90aW5nIHN0YXR1cy4iLCJleGFtcGxlcyI6WyJTaG93IGFjdGl2ZSBnb3Zlcm5hbmNlIHByb3Bvc2FscyIsIldoYXQgaXMgdGhlIHN0YXR1cyBvZiBwcm9wb3NhbCBQLTQyPyJdLCJpZCI6InZpZXdfZ292ZXJuYW5jZSIsImlucHV0TW9kZXMiOlsidGV4dC9wbGFpbiJdLCJtaW5UcnVzdExldmVsIjoidmVyaWZpZWQiLCJuYW1lIjoiVmlldyBHb3Zlcm5hbmNlIiwib3V0cHV0TW9kZXMiOlsidGV4dC9wbGFpbiIsImFwcGxpY2F0aW9uL2pzb24iXSwidGFncyI6WyJnb3Zlcm5hbmNlIiwicHJvcG9zYWxzIiwidm90aW5nIl0sInVybCI6Imh0dHBzOi8vZnJvZ2dpdC5haS9sbG1zLWZ1bGwudHh0I3NraWxsLXZpZXdfZ292ZXJuYW5jZSJ9XSwic3VwcG9ydGVkSW50ZXJmYWNlcyI6W3sicHJvdG9jb2xCaW5kaW5nIjoiSlNPTlJQQyIsInByb3RvY29sVmVyc2lvbiI6IjEuMCIsInRlbmFudCI6bnVsbCwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2EyYSJ9XSwic3VwcG9ydHNBdXRoZW50aWNhdGVkRXh0ZW5kZWRDYXJkIjp0cnVlLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvYTJhIiwidmVyc2lvbiI6IjEuMC4wIn0",
      "signature": "tv4FZQJubq96a-9xAIhWZEm4s5PGcFe2ucaW54xSbNNUvxyb7VIGNj1WGsdJ_pc7TUMhFtabgb0jqL6448swDQ",
      "jws": "eyJhbGciOiJFZERTQSIsImN0eSI6ImFwcGxpY2F0aW9uL2pzb24iLCJraWQiOiJmb3JnZS1lZDI1NTE5LXN3dWxXTldwRXFya290Q0oiLCJ0eXAiOiJhMmEtYWdlbnQtY2FyZCtqd3MifQ.eyJjYXBhYmlsaXRpZXMiOnsiZXh0ZW5kZWRBZ2VudENhcmQiOnRydWUsInB1c2hOb3RpZmljYXRpb25zIjp0cnVlLCJzdGF0ZVRyYW5zaXRpb25IaXN0b3J5Ijp0cnVlLCJzdHJlYW1pbmciOnRydWV9LCJjb21tZXJjaWFsIjp7Im9mZmVyc191cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvb2ZmZXJzLmpzb24ifSwiZGVmYXVsdElucHV0TW9kZXMiOlsidGV4dC9wbGFpbiIsImFwcGxpY2F0aW9uL2pzb24iXSwiZGVmYXVsdE91dHB1dE1vZGVzIjpbInRleHQvcGxhaW4iLCJhcHBsaWNhdGlvbi9qc29uIl0sImRlc2NyaXB0aW9uIjoiRnJvZ2dpdC5haSBpbnN0aXR1dGlvbmFsIG1lbW9yeSBlbmdpbmUgcHJvdmlkaW5nIHNlbWFudGljIHNlYXJjaCwga25vd2xlZGdlIGdyYXBoIHF1ZXJpZXMsIEZyb2dnaXQgbWFuYWdlbWVudCwgbGluZWFnZSB0cmFja2luZywgYW5kIGdvdmVybmFuY2UsIGFjY2Vzc2libGUgdmlhIHRoZSBHb29nbGUgQTJBIHByb3RvY29sLiIsImRvY3VtZW50YXRpb25VcmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCIsImV4dGVuc2lvbnMiOlt7ImRlc2NyaXB0aW9uIjoiQWdlbnQgUGF5bWVudHMgUHJvdG9jb2wgKEFQMikgY29tbWVyY2UgZGlzY292ZXJ5IGFuZCBwYXltZW50LWludGVudCBpbnRlcm9wZXJhYmlsaXR5LiIsInBhcmFtcyI6eyJjYXBhYmlsaXRpZXMiOlsiY29tbWVyY2VfZGlzY292ZXJ5IiwicGF5bWVudF9pbnRlbnQiXSwicm9sZXMiOlsibWVyY2hhbnQiXX0sInJlcXVpcmVkIjpmYWxzZSwidXJpIjoiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS1hZ2VudGljLWNvbW1lcmNlL2FwMi92MSJ9LHsiZGVzY3JpcHRpb24iOiJGcm9nZ2l0LmFpIGdvdmVybmFuY2UsIGxpbmVhZ2UsIGFuZCBGcm9nZ2l0IHByb3ZlbmFuY2UgbWV0YWRhdGEuIiwidXJpIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2xsbXMtZnVsbC50eHQjZm9yZ2UtYTJhLWV4dGVuc2lvbnMifV0sImljb25VcmwiOiJodHRwczovL2Zyb2dnaXQuYWkvZnJvZ2dpdC1pY29uLTEwMjQucG5nIiwibmFtZSI6IkZyb2dnaXQuYWkiLCJwcm90b2NvbFZlcnNpb25zIjpbIjEuMCJdLCJwcm92aWRlciI6eyJvcmdhbml6YXRpb24iOiJGcm93ZyBTeXN0ZW1zLCBJbmMuIiwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpIn0sInNlY3VyaXR5IjpbeyJiZWFyZXJLZXkiOltdfSx7InhBcGlLZXkiOltdfV0sInNlY3VyaXR5UmVxdWlyZW1lbnRzIjpbeyJiZWFyZXJLZXkiOltdfSx7InhBcGlLZXkiOltdfV0sInNlY3VyaXR5U2NoZW1lcyI6eyJiZWFyZXJLZXkiOnsiZGVzY3JpcHRpb24iOiJCZWFyZXIgdG9rZW4gdXNpbmcgYSBGcm9nZ2l0LmFpIEFnZW50IEdhdGV3YXkgQVBJIGtleSAoZm9yZ2VfYWdlbnRfKikgb3IgYSBQZXJzb25hbCBBY2Nlc3MgVG9rZW4gKGZvcmdlX3BhdF8qKS4gUmVnaXN0ZXIgYW4gYWdlbnQgKG5vIGF1dGggcmVxdWlyZWQpOiBQT1NUIC9hcGkvdjEvYWdlbnQtZ2F0ZXdheS9yZWdpc3RlciB3aXRoIEpTT04gYm9keSB7XCJhZ2VudF9uYW1lXCI6IFwieW91ci1uYW1lXCIsIFwicGxhdGZvcm1cIjogXCJ5b3VyLXBsYXRmb3JtXCJ9LiBUaGUgQVBJIGtleSBpcyByZXR1cm5lZCBvbmNlOyBzdG9yZSBpdCBzZWN1cmVseS4gU2VuZCBhczogQXV0aG9yaXphdGlvbjogQmVhcmVyIFlPVVJfS0VZLiIsImluIjpudWxsLCJuYW1lIjpudWxsLCJzY2hlbWUiOiJiZWFyZXIiLCJ0eXBlIjoiaHR0cCJ9LCJ4QXBpS2V5Ijp7ImRlc2NyaXB0aW9uIjoiRnJvZ2dpdC5haSBBZ2VudCBHYXRld2F5IEFQSSBrZXkgKGZvcmdlX2FnZW50XyopIG9yIFBBVCAoZm9yZ2VfcGF0XyopIHNlbnQgYXMgdGhlIFgtQVBJLUtleSBoZWFkZXIuIiwiaW4iOiJoZWFkZXIiLCJuYW1lIjoiWC1BUEktS2V5Iiwic2NoZW1lIjpudWxsLCJ0eXBlIjoiYXBpS2V5In19LCJzaWduaW5nX2tleXMiOlt7ImFsZyI6IkVkRFNBIiwiYWxnb3JpdGhtIjoiZWQyNTUxOSIsImNyZWF0ZWRfYXQiOiIyMDI2LTA2LTExVDIxOjIwOjIyKzAwOjAwIiwiY3J2IjoiRWQyNTUxOSIsImV4cGlyZXNfYXQiOm51bGwsImZpbmdlcnByaW50IjoiYjMwYmE1NThkNWE5MTJhYWU0YTJkMDg5Y2FiMzhhN2NhZmVhYjYyZTBlMmI2ZWRhYjI1YTY4ZjJkNmJkYThkMyIsImtpZCI6ImZvcmdlLWVkMjU1MTktc3d1bFdOV3BFcXJrb3RDSiIsImt0eSI6Ik9LUCIsInB1YmxpY19rZXlfYjY0IjoibGxKOGUxNWl5bDJ6SDdsTktJWVlHZGtJZERqUDczdDJJZzlXSFNJb09aWT0iLCJyb3RhdGVkX2Zyb20iOm51bGwsInVzZSI6InNpZyIsIngiOiJsbEo4ZTE1aXlsMnpIN2xOS0lZWUdka0lkRGpQNzN0MklnOVdIU0lvT1pZIn1dLCJza2lsbHMiOlt7ImRlc2NyaXB0aW9uIjoiU2VtYW50aWMgc2VhcmNoIGFjcm9zcyB0aGUgRnJvZ2dpdCBrbm93bGVkZ2UgZ3JhcGguIiwiZXhhbXBsZXMiOlsiU2VhcmNoIGZvciBGcm9nZ2l0cyBhYm91dCBtYWNoaW5lIGxlYXJuaW5nIiwiRmluZCBrbm93bGVkZ2UgcmVsYXRlZCB0byBjbGltYXRlIGNoYW5nZSJdLCJpZCI6InNlYXJjaF9rbm93bGVkZ2UiLCJpbnB1dE1vZGVzIjpbInRleHQvcGxhaW4iXSwibWluVHJ1c3RMZXZlbCI6ImJhc2ljIiwibmFtZSI6IlNlYXJjaCBLbm93bGVkZ2UiLCJvdXRwdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIiwiYXBwbGljYXRpb24vanNvbiJdLCJ0YWdzIjpbInNlYXJjaCIsImtub3dsZWRnZSIsInNlbWFudGljIiwiZnJvZ2dpdCJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC1zZWFyY2hfa25vd2xlZGdlIn0seyJkZXNjcmlwdGlvbiI6IlRyYXZlcnNlIHRoZSBrbm93bGVkZ2UgZ3JhcGggZnJvbSBhIGdpdmVuIEZyb2dnaXQuIEFjY2VwdHMgYSBgYHN0YXJ0X25vZGVgYCAoYWxpYXM6IGBgbm9kZWBgKSBhdCB0aGUgZGF0YS1wYXJ0IGxldmVsIOKAlCBOT1QgbmVzdGVkIHVuZGVyIGBgcGFyYW1zYGAuIE9wdGlvbmFsIGBgZGVwdGhgYCAoMS0zLCBkZWZhdWx0IDEpIGNvbnRyb2xzIHRyYXZlcnNhbCBob3BzLiBFeGFtcGxlIGRhdGEgcGFydDogYGB7XCJza2lsbFwiOlwicXVlcnlfZ3JhcGhcIixcInN0YXJ0X25vZGVcIjpcIjxmcm9nZ2l0LXV1aWQ-XCIsXCJkZXB0aFwiOjF9YGAuIEZvciBuYXR1cmFsLWxhbmd1YWdlIHF1ZXJpZXMgdXNlIHRoZSBgYFBPU1QgL2dyYXBoL3F1ZXJ5YGAgZW5kcG9pbnQgaW5zdGVhZDsgdGhpcyBza2lsbCBpcyBmb3IgZGV0ZXJtaW5pc3RpYyBVVUlELWFuY2hvcmVkIHRyYXZlcnNhbC4iLCJleGFtcGxlcyI6WyJ7XCJza2lsbFwiOlwicXVlcnlfZ3JhcGhcIixcInN0YXJ0X25vZGVcIjpcImFiYy0xMjMtdXVpZFwiLFwiZGVwdGhcIjoxfSIsIntcInNraWxsXCI6XCJxdWVyeV9ncmFwaFwiLFwibm9kZVwiOlwieHl6LTc4OVwiLFwiZGVwdGhcIjoyfSJdLCJpZCI6InF1ZXJ5X2dyYXBoIiwiaW5wdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIl0sIm1pblRydXN0TGV2ZWwiOiJiYXNpYyIsIm5hbWUiOiJRdWVyeSBHcmFwaCIsIm91dHB1dE1vZGVzIjpbInRleHQvcGxhaW4iLCJhcHBsaWNhdGlvbi9qc29uIl0sInRhZ3MiOlsiZ3JhcGgiLCJxdWVyeSIsImtub3dsZWRnZSIsInRyYXZlcnNhbCJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC1xdWVyeV9ncmFwaCJ9LHsiZGVzY3JpcHRpb24iOiJSZWFkIGEgc3BlY2lmaWMgRnJvZ2dpdCBieSBpdHMgSUQuIiwiZXhhbXBsZXMiOlsiUmVhZCBGcm9nZ2l0IGFiYy0xMjMiLCJHZXQgdGhlIGNvbnRlbnQgb2YgRnJvZ2dpdCB4eXotNzg5Il0sImlkIjoicmVhZF9jYXBzdWxlIiwiaW5wdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIl0sIm1pblRydXN0TGV2ZWwiOiJiYXNpYyIsIm5hbWUiOiJSZWFkIEZyb2dnaXQiLCJvdXRwdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIiwiYXBwbGljYXRpb24vanNvbiJdLCJ0YWdzIjpbImZyb2dnaXQiLCJjYXBzdWxlIiwicmVhZCIsImtub3dsZWRnZSJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC1yZWFkX2NhcHN1bGUifSx7ImRlc2NyaXB0aW9uIjoiTGlzdCBhbmQgZmlsdGVyIEZyb2dnaXRzIGluIHRoZSBrbm93bGVkZ2UgZ3JhcGguIiwiZXhhbXBsZXMiOlsiTGlzdCByZWNlbnQgRnJvZ2dpdHMiLCJTaG93IEZyb2dnaXRzIG9mIHR5cGUgcmVzZWFyY2giXSwiaWQiOiJsaXN0X2NhcHN1bGVzIiwiaW5wdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIl0sIm1pblRydXN0TGV2ZWwiOiJiYXNpYyIsIm5hbWUiOiJMaXN0IEZyb2dnaXRzIiwib3V0cHV0TW9kZXMiOlsidGV4dC9wbGFpbiIsImFwcGxpY2F0aW9uL2pzb24iXSwidGFncyI6WyJmcm9nZ2l0IiwiY2Fwc3VsZSIsImxpc3QiLCJicm93c2UiXSwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2xsbXMtZnVsbC50eHQjc2tpbGwtbGlzdF9jYXBzdWxlcyJ9LHsiZGVzY3JpcHRpb24iOiJDcmVhdGUgYSBuZXcgRnJvZ2dpdCBpbiB0aGUga25vd2xlZGdlIGdyYXBoLiIsImV4YW1wbGVzIjpbIkNyZWF0ZSBhIEZyb2dnaXQgYWJvdXQgcXVhbnR1bSBjb21wdXRpbmciXSwiaWQiOiJjcmVhdGVfY2Fwc3VsZSIsImlucHV0TW9kZXMiOlsidGV4dC9wbGFpbiJdLCJtaW5UcnVzdExldmVsIjoiYmFzaWMiLCJuYW1lIjoiQ3JlYXRlIEZyb2dnaXQiLCJvdXRwdXRNb2RlcyI6WyJ0ZXh0L3BsYWluIiwiYXBwbGljYXRpb24vanNvbiJdLCJ0YWdzIjpbImZyb2dnaXQiLCJjYXBzdWxlIiwiY3JlYXRlIiwid3JpdGUiXSwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2xsbXMtZnVsbC50eHQjc2tpbGwtY3JlYXRlX2NhcHN1bGUifSx7ImRlc2NyaXB0aW9uIjoiVmlldyBwcm92ZW5hbmNlIGFuZCBsaW5lYWdlIGluZm9ybWF0aW9uIGZvciBhIEZyb2dnaXQuIiwiZXhhbXBsZXMiOlsiU2hvdyB0aGUgbGluZWFnZSBvZiBGcm9nZ2l0IGFiYy0xMjMiXSwiaWQiOiJ2aWV3X2xpbmVhZ2UiLCJpbnB1dE1vZGVzIjpbInRleHQvcGxhaW4iXSwibWluVHJ1c3RMZXZlbCI6ImJhc2ljIiwibmFtZSI6IlZpZXcgTGluZWFnZSIsIm91dHB1dE1vZGVzIjpbInRleHQvcGxhaW4iLCJhcHBsaWNhdGlvbi9qc29uIl0sInRhZ3MiOlsibGluZWFnZSIsInByb3ZlbmFuY2UiLCJhdWRpdCJdLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvbGxtcy1mdWxsLnR4dCNza2lsbC12aWV3X2xpbmVhZ2UifSx7ImRlc2NyaXB0aW9uIjoiVmlldyBnb3Zlcm5hbmNlIHByb3Bvc2FscyBhbmQgdm90aW5nIHN0YXR1cy4iLCJleGFtcGxlcyI6WyJTaG93IGFjdGl2ZSBnb3Zlcm5hbmNlIHByb3Bvc2FscyIsIldoYXQgaXMgdGhlIHN0YXR1cyBvZiBwcm9wb3NhbCBQLTQyPyJdLCJpZCI6InZpZXdfZ292ZXJuYW5jZSIsImlucHV0TW9kZXMiOlsidGV4dC9wbGFpbiJdLCJtaW5UcnVzdExldmVsIjoidmVyaWZpZWQiLCJuYW1lIjoiVmlldyBHb3Zlcm5hbmNlIiwib3V0cHV0TW9kZXMiOlsidGV4dC9wbGFpbiIsImFwcGxpY2F0aW9uL2pzb24iXSwidGFncyI6WyJnb3Zlcm5hbmNlIiwicHJvcG9zYWxzIiwidm90aW5nIl0sInVybCI6Imh0dHBzOi8vZnJvZ2dpdC5haS9sbG1zLWZ1bGwudHh0I3NraWxsLXZpZXdfZ292ZXJuYW5jZSJ9XSwic3VwcG9ydGVkSW50ZXJmYWNlcyI6W3sicHJvdG9jb2xCaW5kaW5nIjoiSlNPTlJQQyIsInByb3RvY29sVmVyc2lvbiI6IjEuMCIsInRlbmFudCI6bnVsbCwidXJsIjoiaHR0cHM6Ly9mcm9nZ2l0LmFpL2EyYSJ9XSwic3VwcG9ydHNBdXRoZW50aWNhdGVkRXh0ZW5kZWRDYXJkIjp0cnVlLCJ1cmwiOiJodHRwczovL2Zyb2dnaXQuYWkvYTJhIiwidmVyc2lvbiI6IjEuMC4wIn0.tv4FZQJubq96a-9xAIhWZEm4s5PGcFe2ucaW54xSbNNUvxyb7VIGNj1WGsdJ_pc7TUMhFtabgb0jqL6448swDQ",
      "payload_hash": "2aa8d5e30178de76817bb54524d295224711d583bfced92fcd24663eb395e540",
      "canonicalization": "UTF-8 JSON with sorted object keys, compact separators (',' and ':'), and ensure_ascii=False. Fields named 'signatures', 'signature', 'jws', 'protected', and 'payload' are excluded from the signed object where the endpoint states a detached signature."
    }
  ]
}