{
  "identity": {
    "server": {
      "name": "aiexchange-web-node:airegister.cyberfort.lv",
      "version": "0.2.0",
      "description": "AI LV Exchange web node. An EU AI Act compliance register that publishes callable tools to browser agents over WebMCP, rather than a remote MCP endpoint."
    },
    "operator": {
      "name": "Cyberfort SIA",
      "name_en": "Cyberfort Ltd",
      "registrationNumber": "40203459193",
      "vatNumber": "LV40203459193",
      "jurisdiction": "Latvia",
      "sector": "Private",
      "address": "Kojusalas iela 19-62, Rīga, LV-1019",
      "contact": "info@cyberfort.lv"
    },
    "did": "did:web:airegister.cyberfort.lv"
  },
  "framework": {
    "name": "MCPF",
    "version": "1.2",
    "layer": 2,
    "compliance": [
      "tool-based-discovery",
      "well-known-discovery",
      "challenge-response"
    ],
    "spec": "https://github.com/MCPTrustFramework/MCPF-specification"
  },
  "credentials": [
    {
      "type": "DelegationCredential",
      "issuer": "did:web:cyberfort.lv",
      "subject": "did:web:airegister.cyberfort.lv",
      "format": "jwt_vc",
      "statusList": "https://cyberfort.lv/status/credentials-2026",
      "statusListIndex": "5",
      "jwt": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vY3liZXJmb3J0Lmx2L2NvbnRleHRzL2RlbGVnYXRpb24tdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJEZWxlZ2F0aW9uQ3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJ0eXBlIjoiRGVsZWdhdGVkSWRlbnRpdHkiLCJwYXJlbnQiOiJkaWQ6d2ViOmN5YmVyZm9ydC5sdiIsInNjb3BlIjpbIlNlcnZpY2VJZGVudGl0eUNyZWRlbnRpYWwiXSwiZGVsZWdhYmxlIjpmYWxzZX0sImNyZWRlbnRpYWxTY2hlbWEiOlt7ImlkIjoiaHR0cHM6Ly9jeWJlcmZvcnQubHYvc2NoZW1hcy9kZWxlZ2F0aW9uLWNyZWRlbnRpYWwvMS4wL3NjaGVtYS5qc29uIiwidHlwZSI6Ikpzb25TY2hlbWEifV0sImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL2N5YmVyZm9ydC5sdi9zdGF0dXMvY3JlZGVudGlhbHMtMjAyNiM1IiwidHlwZSI6IkJpdHN0cmluZ1N0YXR1c0xpc3RFbnRyeSIsInN0YXR1c1B1cnBvc2UiOiJyZXZvY2F0aW9uIiwic3RhdHVzTGlzdEluZGV4IjoiNSIsInN0YXR1c0xpc3RDcmVkZW50aWFsIjoiaHR0cHM6Ly9jeWJlcmZvcnQubHYvc3RhdHVzL2NyZWRlbnRpYWxzLTIwMjYifX0sImlzc3VlciI6eyJuYW1lIjoiQ3liZXJmb3J0IFNJQSJ9LCJ2YWxpZEZyb20iOiIyMDI2LTA4LTMwVDEyOjIxOjA4LjY4MloiLCJzdWIiOiJkaWQ6d2ViOmFpcmVnaXN0ZXIuY3liZXJmb3J0Lmx2IiwibmJmIjoxNzg4MDkyNDY4LCJpc3MiOiJkaWQ6d2ViOmN5YmVyZm9ydC5sdiJ9.-oSjlQ5C_WDWU2-Db7ngQToyWB7kTti4jVG8eKlOycmqb2NlxA00lTbfhhMudjGuQlSvZYWrjJKxPG5zTY45uA"
    },
    {
      "type": "ServiceIdentityCredential",
      "issuer": "did:web:cyberfort.lv",
      "issuerName": "Cyberfort SIA",
      "subject": "did:web:airegister.cyberfort.lv",
      "format": "jwt_vc",
      "statusList": "https://cyberfort.lv/status/credentials-2026",
      "statusListIndex": "6",
      "jwt": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vY3liZXJmb3J0Lmx2L2NvbnRleHRzL3NlcnZpY2UtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTZXJ2aWNlSWRlbnRpdHlDcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7InR5cGUiOiJTZXJ2aWNlIiwic2VydmljZUVuZHBvaW50IjoiaHR0cHM6Ly9haXJlZ2lzdGVyLmN5YmVyZm9ydC5sdiIsIm9wZXJhdG9yIjoiZGlkOndlYjpjeWJlcmZvcnQubHYiLCJzZXJ2aWNlVHlwZSI6Ik1DUFNlcnZlciIsInByb3RvY29scyI6WyJ3ZWJtY3AiLCJtY3BmIl19LCJjcmVkZW50aWFsU2NoZW1hIjpbeyJpZCI6Imh0dHBzOi8vY3liZXJmb3J0Lmx2L3NjaGVtYXMvc2VydmljZS1pZGVudGl0eS1jcmVkZW50aWFsLzEuMC9zY2hlbWEuanNvbiIsInR5cGUiOiJKc29uU2NoZW1hIn1dLCJjcmVkZW50aWFsU3RhdHVzIjp7ImlkIjoiaHR0cHM6Ly9jeWJlcmZvcnQubHYvc3RhdHVzL2NyZWRlbnRpYWxzLTIwMjYjNiIsInR5cGUiOiJCaXRzdHJpbmdTdGF0dXNMaXN0RW50cnkiLCJzdGF0dXNQdXJwb3NlIjoicmV2b2NhdGlvbiIsInN0YXR1c0xpc3RJbmRleCI6IjYiLCJzdGF0dXNMaXN0Q3JlZGVudGlhbCI6Imh0dHBzOi8vY3liZXJmb3J0Lmx2L3N0YXR1cy9jcmVkZW50aWFscy0yMDI2In19LCJpc3N1ZXIiOnsibmFtZSI6IkN5YmVyZm9ydCBTSUEifSwidmFsaWRGcm9tIjoiMjAyNi0wOC0zMFQxMjoyMToyNy42NTBaIiwidmFsaWRVbnRpbCI6IjIwMjgtMDgtMjlUMTI6MjE6MjcuNjUwWiIsInN1YiI6ImRpZDp3ZWI6YWlyZWdpc3Rlci5jeWJlcmZvcnQubHYiLCJuYmYiOjE3ODgwOTI0ODcsImlzcyI6ImRpZDp3ZWI6Y3liZXJmb3J0Lmx2In0.qeDVHtc1obdR82poxJz-XK5ZkAEFwxqIle8CbhEX8MPmT98bpBa9Nm5vk-n4ImbB6kTSK96zUPDeeG2tbP3PTQ"
    },
    {
      "type": "OrganizationAccreditationCredential",
      "issuer": "did:web:veritrust.vc",
      "subject": "did:web:airegister.cyberfort.lv",
      "format": "jwt_vc",
      "statusList": "https://veritrust.vc/status/accreditations-2026",
      "statusListIndex": "14",
      "issuerDidDocument": "https://veritrust.vc/.well-known/did.json",
      "heldAt": "https://trust.cyberfort.lv/credentials/held/did:web:airegister.cyberfort.lv",
      "note": "Issued by a DIFFERENT party from the two credentials above: those are operator attestations by Cyberfort, this one is not. Verify the jwt against the key published at the issuer DID document, then check the status list live.",
      "jwt": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE4NTEyNjc3MDQsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly93M2lkLm9yZy9zZWN1cml0eS9zdWl0ZXMvandzLTIwMjAvdjEiLCJodHRwczovL3NjaGVtYS5vcmciLCJodHRwczovL3Zlcml0cnVzdC52Yy9jb250ZXh0cy9vcmctYWNjcmVkaXRhdGlvbi12MS5qc29ubGQiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIk9yZ2FuaXphdGlvbkFjY3JlZGl0YXRpb25DcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImFjY3JlZGl0YXRpb24iOnsidHlwZSI6IkJ1c2luZXNzVmVyaWZpY2F0aW9uIiwidmVyaWZpZWRBdHRyaWJ1dGVzIjpbImxlZ2FsTmFtZSIsInJlZ2lzdHJhdGlvbk51bWJlciIsImp1cmlzZGljdGlvbiJdLCJ2ZXJpZmljYXRpb25NZXRob2QiOiJPcGVyYXRvciBjb25maXJtYXRpb24iLCJ2ZXJpZmljYXRpb25EYXRlIjoiMjAyNi0wOC0zMCJ9LCJjb250cm9sbGVyIjoiZGlkOndlYjphaXJlZ2lzdGVyLmN5YmVyZm9ydC5sdiJ9LCJjcmVkZW50aWFsU2NoZW1hIjp7ImlkIjoiaHR0cHM6Ly92ZXJpdHJ1c3QudmMvc2NoZW1hcy9Pcmdhbml6YXRpb25BY2NyZWRpdGF0aW9uQ3JlZGVudGlhbC12MS5qc29uIiwidHlwZSI6Ikpzb25TY2hlbWFWYWxpZGF0b3IyMDE4In0sImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL3Zlcml0cnVzdC52Yy9zdGF0dXMvYWNjcmVkaXRhdGlvbnMtMjAyNiMxNCIsInR5cGUiOiJCaXRzdHJpbmdTdGF0dXNMaXN0RW50cnkiLCJzdGF0dXNQdXJwb3NlIjoicmV2b2NhdGlvbiIsInN0YXR1c0xpc3RJbmRleCI6IjE0Iiwic3RhdHVzTGlzdENyZWRlbnRpYWwiOiJodHRwczovL3Zlcml0cnVzdC52Yy9zdGF0dXMvYWNjcmVkaXRhdGlvbnMtMjAyNiJ9fSwiaXNzdWVyIjp7Im5hbWUiOiJWZXJpVHJ1c3QifSwic3ViIjoiZGlkOndlYjphaXJlZ2lzdGVyLmN5YmVyZm9ydC5sdiIsImp0aSI6InVybjp1dWlkOjkxMzlhZjY4LTA2OGMtNDlhYS1hZWJlLTkxNjEyYmExMzcwMSIsIm5iZiI6MTc4ODEwOTMwNCwiaXNzIjoiZGlkOndlYjp2ZXJpdHJ1c3QudmMifQ.I6llKOrwwc_L318sD_qMl7t_OAwMNqUOlDFgnELQQ2a0Vrlt5gw7_AGqMdhwH96dAA1AuYjpicPg2Ww4-w4zdw"
    }
  ],
  "verification": {
    "mcp_manifest": "https://airegister.cyberfort.lv/.well-known/mcp/manifest.json",
    "did_document": "https://airegister.cyberfort.lv/.well-known/did.json",
    "jwks_uri": "https://cyberfort.lv/.well-known/jwks.json",
    "challenge_endpoint": "https://airegister.cyberfort.lv/.well-known/mcp/challenge",
    "trust_registry": "https://registry.pppa.lv",
    "operator_register": "https://info.ur.gov.lv/",
    "llms_txt": "https://airegister.cyberfort.lv/llms.txt",
    "issuer_did_document": "https://cyberfort.lv/.well-known/did.json",
    "revocation_status": "https://cyberfort.lv/status/credentials-2026",
    "challenge_algorithm": "ES256",
    "held_credentials": "https://trust.cyberfort.lv/credentials/held/did:web:airegister.cyberfort.lv"
  },
  "transport": {
    "type": "webmcp",
    "spec": "https://github.com/webmachinelearning/webmcp",
    "binding": "document.modelContext, with navigator.modelContext as a fallback for user agents that shipped the earlier spelling",
    "clientNote": "These tools are visible only to an agent that has the page open in a browser implementing WebMCP. There is no remote endpoint and nothing to install. Tools do not carry across pages: each page registers its own set. An agent that cannot execute page script sees nothing, which is why this document and /llms.txt are readable without script.",
    "toolPages": [
      {
        "url": "https://airegister.cyberfort.lv/",
        "description": "Landing page. Orientation tools only.",
        "tools": [
          "identify",
          "describe-capabilities",
          "open-demo-register"
        ]
      },
      {
        "url": "https://airegister.cyberfort.lv/demo",
        "description": "Public demonstration register, fictional data, no sign-in.",
        "tools": [
          "identify",
          "list-ai-systems",
          "get-ai-system",
          "get-compliance-overview",
          "explain-risk-classification",
          "find-compliance-gaps",
          "show-register-view",
          "open-ai-system",
          "go-to-section",
          "set-interface-language",
          "propose-register-entry"
        ]
      }
    ],
    "writePolicy": "No tool writes to the register. propose-register-entry renders a draft for a person to accept or reject in the page; nothing is entered on an agent's authority alone."
  },
  "_note": "This node has its own DID, did:web:airegister.cyberfort.lv, holds the corresponding P-256 private key itself, and will prove it: POST a base64 challenge to challenge_endpoint and verify the returned signature against the key published at did_document. That is proof of key control at request time, not an assertion — anyone can copy a did.json, nobody can produce this signature without the key. Subordination to Cyberfort SIA is asserted twice, as did:web requires: this document names did:web:cyberfort.lv as controller, and the issuer signed a DelegationCredential naming this DID as subject. The ServiceIdentityCredential binds this endpoint to Cyberfort SIA and is revocable through the status list. What is still NOT claimed: this node holds no participant credential and is not accredited by any third party — the issuer and the operator are the same legal person, so treat these credentials as operator attestation backed by proven key control, not as independent verification."
}
