{
  "schema": "iitr-scan/v0.5",
  "target": "isittrustready.ai",
  "scannedAt": "2026-06-17T12:00:08.324Z",
  "rubricVersion": "0.6.1",
  "subjectType": "website",
  "score": 100,
  "grade": "A+",
  "establishedScore": 100,
  "establishedGrade": "A+",
  "categories": [
    {
      "id": "identity",
      "title": "Verifiable identity",
      "weight": 0.25,
      "score": 100,
      "applicable": true,
      "checks": [
        {
          "id": "identity.agent-card",
          "category": "identity",
          "title": "Publishes an A2A agent card",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://a2a-protocol.org/latest/specification/",
          "evidencePath": "/.well-known/agent-card.json",
          "detail": "agent card present with a name and declared capabilities"
        },
        {
          "id": "identity.agent-card-signed",
          "category": "identity",
          "title": "Agent card is cryptographically verifiable (signed / DID / VC)",
          "status": "pass",
          "maturity": "emerging",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.w3.org/TR/vc-data-model-2.0/",
          "evidencePath": "/.well-known/agent-card.json",
          "detail": "agent card carries a cryptographic signature / proof / DID binding"
        },
        {
          "id": "identity.mcp-server-card",
          "category": "identity",
          "title": "Publishes an MCP server card (if it runs MCP)",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://modelcontextprotocol.io/",
          "evidencePath": "/.well-known/mcp/server-card.json",
          "detail": "MCP server card present with name and advertised tools"
        },
        {
          "id": "mcp.identity.server-info",
          "category": "identity",
          "title": "initialize advertises server identity",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://modelcontextprotocol.io/specification",
          "detail": "serverInfo name+version and instructions present"
        },
        {
          "id": "mcp.identity.signed-artifacts",
          "category": "identity",
          "title": "Exposes cryptographically verifiable artifacts",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.w3.org/TR/vc-data-integrity/",
          "detail": "2 signed resource(s) verified"
        }
      ]
    },
    {
      "id": "alignment",
      "title": "Alignment & values",
      "weight": 0.2,
      "score": 100,
      "applicable": true,
      "checks": [
        {
          "id": "alignment.card",
          "category": "alignment",
          "title": "Publishes an alignment / values card",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://github.com/mnemom/aap",
          "evidencePath": "/.well-known/alignment-card.json",
          "detail": "alignment card declares values plus scope/refusals"
        },
        {
          "id": "alignment.capabilities",
          "category": "alignment",
          "title": "Declared capabilities are present and coherent",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://a2a-protocol.org/latest/specification/",
          "evidencePath": "/.well-known/agent-card.json",
          "detail": "agent card enumerates concrete capabilities/skills"
        },
        {
          "id": "mcp.alignment.card",
          "category": "alignment",
          "title": "Declares values / scope (alignment card or equivalent)",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://a2a-protocol.org/latest/specification/",
          "detail": "values + scope/refusals declared"
        },
        {
          "id": "mcp.alignment.known-limitations",
          "category": "alignment",
          "title": "Declares known limitations / non-goals",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://isittrustready.ai/non-goals.json",
          "detail": "known limitations / non-goals declared"
        },
        {
          "id": "mcp.honesty.descriptions-accurate",
          "category": "alignment",
          "title": "Tools do what they say (output matches declared schema)",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://json-schema.org/",
          "detail": "all 2 tool outputs validating against their schema ok"
        }
      ]
    },
    {
      "id": "attestation",
      "title": "Attestation & provenance",
      "weight": 0.2,
      "score": 100,
      "applicable": true,
      "checks": [
        {
          "id": "attestation.signed",
          "category": "attestation",
          "title": "Publishes signed attestations / verifiable credentials",
          "status": "pass",
          "maturity": "emerging",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.w3.org/TR/vc-data-model-2.0/",
          "evidencePath": "/.well-known/attestations.json",
          "detail": "publishes signed attestations / verifiable credentials"
        },
        {
          "id": "attestation.provenance",
          "category": "attestation",
          "title": "Build / behaviour provenance (Sigstore / SLSA)",
          "status": "pass",
          "maturity": "emerging",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://slsa.dev/",
          "evidencePath": "/.well-known/provenance.json",
          "detail": "publishes signed SLSA/in-toto provenance"
        },
        {
          "id": "mcp.provenance.attestation",
          "category": "attestation",
          "title": "Offers verifiable provenance / attestation",
          "status": "pass",
          "maturity": "emerging",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://modelcontextprotocol.io/specification",
          "detail": "provenance verifies"
        }
      ]
    },
    {
      "id": "accountability",
      "title": "Accountability",
      "weight": 0.2,
      "score": 100,
      "applicable": true,
      "checks": [
        {
          "id": "accountability.security-txt",
          "category": "accountability",
          "title": "Serves security.txt",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.rfc-editor.org/rfc/rfc9116",
          "evidencePath": "/.well-known/security.txt",
          "detail": "security.txt served with Contact and Expires"
        },
        {
          "id": "accountability.status",
          "category": "accountability",
          "title": "Publishes a dated, signed re-verification status",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://www.mnemom.ai/for-agents/",
          "evidencePath": "/agent-readiness-status.json",
          "detail": "publishes a dated, machine-readable verification status"
        },
        {
          "id": "accountability.advisories",
          "category": "accountability",
          "title": "Publishes advisories / a STIX IoC feed",
          "status": "pass",
          "maturity": "emerging",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://oasis-open.github.io/cti-documentation/stix/intro",
          "evidencePath": "/.well-known/advisories.json",
          "detail": "STIX bundle published (1 objects)"
        },
        {
          "id": "mcp.accountability.tamper-evidence",
          "category": "accountability",
          "title": "Verification discriminates real from tampered",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.w3.org/TR/vc-data-integrity/",
          "detail": "verify rejects tampered input"
        },
        {
          "id": "mcp.accountability.error-hygiene",
          "category": "accountability",
          "title": "Well-formed errors, no internal leakage",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.jsonrpc.org/specification",
          "detail": "well-formed JSON-RPC errors, no internal leakage"
        },
        {
          "id": "mcp.accountability.cache-transparency",
          "category": "accountability",
          "title": "Discloses caching / freshness honestly",
          "status": "na",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://modelcontextprotocol.io/specification",
          "detail": "no caching observed to disclose"
        },
        {
          "id": "mcp.accountability.maintainer-contact",
          "category": "accountability",
          "title": "Accountable maintainer contact",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://github.com/modelcontextprotocol/registry",
          "detail": "reachable maintainer contact published"
        }
      ]
    },
    {
      "id": "delegation",
      "title": "Delegation & auth",
      "weight": 0.15,
      "score": 100,
      "applicable": true,
      "checks": [
        {
          "id": "delegation.protected-resource",
          "category": "delegation",
          "title": "OAuth protected-resource metadata",
          "status": "na",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.rfc-editor.org/rfc/rfc9728",
          "evidencePath": "/.well-known/oauth-protected-resource",
          "detail": "not applicable — service declares no delegated/OAuth authorization"
        },
        {
          "id": "delegation.auth-server",
          "category": "delegation",
          "title": "OAuth authorization-server metadata",
          "status": "na",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.rfc-editor.org/rfc/rfc8414",
          "evidencePath": "/.well-known/oauth-authorization-server",
          "detail": "not applicable — service declares no delegated/OAuth authorization"
        },
        {
          "id": "delegation.auth-doc",
          "category": "delegation",
          "title": "Documents agent authentication",
          "status": "pass",
          "maturity": "emerging",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://github.com/workos/auth.md",
          "evidencePath": "/auth.md",
          "detail": "publishes a substantive agent authentication guide"
        },
        {
          "id": "mcp.auth.prm",
          "category": "delegation",
          "title": "Serves coherent RFC 9728 protected-resource metadata",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.rfc-editor.org/rfc/rfc9728",
          "detail": "PRM coherent (resource + authorization_servers)"
        },
        {
          "id": "mcp.auth.fail-closed",
          "category": "delegation",
          "title": "Authed / write tools fail closed",
          "status": "pass",
          "maturity": "established",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.rfc-editor.org/rfc/rfc9728",
          "detail": "authed tool returns 401 + WWW-Authenticate"
        },
        {
          "id": "mcp.auth.least-privilege-reads",
          "category": "delegation",
          "title": "Public reads leak no private/owner data",
          "status": "pass",
          "maturity": "established",
          "basis": "convention",
          "scoringContribution": "scored",
          "specUrl": "https://modelcontextprotocol.io/specification",
          "detail": "8 anon read(s) leak no private fields"
        },
        {
          "id": "mcp.auth.dcr-loopback",
          "category": "delegation",
          "title": "Dynamic Client Registration handles loopback safely",
          "status": "pass",
          "maturity": "emerging",
          "basis": "standard",
          "scoringContribution": "scored",
          "specUrl": "https://www.rfc-editor.org/rfc/rfc8252",
          "detail": "loopback accepted, non-loopback rejected"
        }
      ]
    }
  ],
  "access": {
    "axis": "access",
    "version": "0.6.1",
    "score": 100,
    "grade": "A+",
    "establishedScore": 100,
    "establishedGrade": "A+",
    "applicable": true,
    "categories": [
      {
        "id": "crawl-discoverability",
        "title": "Crawl discoverability",
        "weight": 0.25,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "access.robots_present",
            "category": "crawl-discoverability",
            "title": "Serves a parseable robots.txt",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://www.rfc-editor.org/rfc/rfc9309.html",
            "evidencePath": "/robots.txt",
            "detail": "serves a parseable robots.txt"
          },
          {
            "id": "access.sitemap",
            "category": "crawl-discoverability",
            "title": "Publishes a sitemap",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://www.sitemaps.org/protocol.html",
            "evidencePath": "/sitemap.xml",
            "detail": "serves a sitemap (valid XML / sitemap index)"
          },
          {
            "id": "access.link_headers",
            "category": "crawl-discoverability",
            "title": "Emits HTTP Link relations",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://www.rfc-editor.org/rfc/rfc8288.html",
            "evidencePath": "/",
            "detail": "emits 4 HTTP Link relation(s)"
          }
        ]
      },
      {
        "id": "content-access",
        "title": "Agent content access",
        "weight": 0.2,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "access.markdown_negotiation",
            "category": "content-access",
            "title": "Serves markdown via content negotiation",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://blog.cloudflare.com/agent-readiness/",
            "evidencePath": "/ [Accept: text/markdown]",
            "detail": "serves text/markdown via content negotiation"
          },
          {
            "id": "access.llms_txt",
            "category": "content-access",
            "title": "Publishes an llms.txt index",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://llmstxt.org/",
            "evidencePath": "/llms.txt",
            "detail": "publishes /llms.txt with an H1 title"
          },
          {
            "id": "access.structured_data",
            "category": "content-access",
            "title": "Embeds structured data (JSON-LD / OpenGraph)",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://schema.org/",
            "evidencePath": "/",
            "detail": "embeds schema.org JSON-LD (Organization, WebApplication)"
          }
        ]
      },
      {
        "id": "ai-access-policy",
        "title": "AI access policy",
        "weight": 0.15,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "access.ai_bot_rules",
            "category": "ai-access-policy",
            "title": "Declares explicit AI-bot rules",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://www.rfc-editor.org/rfc/rfc9309.html",
            "evidencePath": "/robots.txt",
            "detail": "declares explicit rules for 15 known AI crawler(s): amazonbot, anthropic-ai, applebot-extended, bytespider, ccbot, chatgpt-user, claude-user, claudebot, cohere-ai, google-extended, gptbot, meta-externalagent, oai-searchbot, perplexity-user, perplexitybot"
          },
          {
            "id": "access.content_signals",
            "category": "ai-access-policy",
            "title": "Publishes Content Signals",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://contentsignals.org/",
            "evidencePath": "/robots.txt",
            "detail": "publishes Content Signals (ai-train / ai-input / search)"
          }
        ]
      },
      {
        "id": "capability-discovery",
        "title": "Capability discovery",
        "weight": 0.25,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "access.api_catalog",
            "category": "capability-discovery",
            "title": "Publishes an API catalog",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://www.rfc-editor.org/rfc/rfc9727.html",
            "evidencePath": "/.well-known/api-catalog",
            "detail": "publishes an RFC 9727 API catalog (linkset+json) with ≥1 link"
          },
          {
            "id": "access.openapi",
            "category": "capability-discovery",
            "title": "Publishes an OpenAPI document",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://spec.openapis.org/oas/latest.html",
            "evidencePath": "/openapi.json",
            "detail": "publishes a discoverable OpenAPI document (v3.1.0) at https://isittrustready.ai/openapi.json"
          },
          {
            "id": "access.mcp_server_card",
            "category": "capability-discovery",
            "title": "Publishes an MCP server card",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://modelcontextprotocol.io/",
            "evidencePath": "/.well-known/mcp/server-card.json",
            "detail": "MCP server card present with name and advertised tools"
          },
          {
            "id": "access.agent_entrypoint",
            "category": "capability-discovery",
            "title": "Foregrounds the primary agent channel (agents.txt → MCP)",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://llmstxt.org/",
            "evidencePath": "/agents.txt",
            "detail": "/agents.txt foregrounds the MCP channel (references the MCP endpoint / server card)"
          },
          {
            "id": "access.dns_aid",
            "category": "capability-discovery",
            "title": "DNS-AID agent discovery (DNSSEC-validated)",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/",
            "evidencePath": "_index._agents",
            "detail": "DNS-AID record published and DNSSEC-validated at _index._agents.isittrustready.ai"
          }
        ]
      },
      {
        "id": "authorization-discovery",
        "title": "Authorization discovery",
        "weight": 0.15,
        "score": 0,
        "applicable": false,
        "checks": [
          {
            "id": "access.oauth_protected_resource",
            "category": "authorization-discovery",
            "title": "OAuth protected-resource metadata",
            "status": "na",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://www.rfc-editor.org/rfc/rfc9728",
            "evidencePath": "/.well-known/oauth-protected-resource",
            "detail": "not applicable — service declares no delegated/OAuth authorization"
          },
          {
            "id": "access.oauth_as_metadata",
            "category": "authorization-discovery",
            "title": "OAuth authorization-server metadata",
            "status": "na",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://www.rfc-editor.org/rfc/rfc8414",
            "evidencePath": "/.well-known/oauth-authorization-server",
            "detail": "not applicable — service declares no delegated/OAuth authorization"
          }
        ]
      },
      {
        "id": "mcp-protocol-hygiene",
        "title": "Protocol hygiene",
        "weight": 0.35,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "mcp.proto.initialize",
            "category": "mcp-protocol-hygiene",
            "title": "initialize returns protocolVersion + capabilities",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "protocolVersion + capabilities advertised"
          },
          {
            "id": "mcp.proto.capabilities-honest",
            "category": "mcp-protocol-hygiene",
            "title": "Advertised capabilities are actually served",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "advertised capabilities are all served"
          },
          {
            "id": "mcp.proto.lists-well-formed",
            "category": "mcp-protocol-hygiene",
            "title": "tools/resources/prompts lists are well-formed",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "floor",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "all 69 tools with name + inputSchema ok"
          }
        ]
      },
      {
        "id": "mcp-discoverability",
        "title": "Discoverability",
        "weight": 0.4,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "mcp.disco.orientation",
            "category": "mcp-discoverability",
            "title": "Zero-auth orientation for arriving agents",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "zero-auth orientation with a surface map"
          },
          {
            "id": "mcp.disco.agent-native-docs",
            "category": "mcp-discoverability",
            "title": "agents.txt / llms.txt surface the server door",
            "status": "fail",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://llmstxt.org/",
            "detail": "no agents.txt / llms.txt",
            "fixPrompt": "Publish `/agents.txt` and/or `/llms.txt` (and an agent-native markdown root) that name your MCP endpoint URL and orientation entrypoint in the first screenful, so an arriving agent finds the door without guessing. Verify: `curl -s <site>/agents.txt` (or /llms.txt) references your /mcp endpoint near the top. Spec: https://llmstxt.org/"
          },
          {
            "id": "mcp.disco.executable-examples",
            "category": "mcp-discoverability",
            "title": "Example calls execute verbatim, anonymously",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "all 5 examples running verbatim ok"
          },
          {
            "id": "mcp.disco.canonical-home",
            "category": "mcp-discoverability",
            "title": "One canonical public home, resolvable from the registry",
            "status": "pass",
            "maturity": "established",
            "basis": "convention",
            "scoringContribution": "floor",
            "specUrl": "https://github.com/modelcontextprotocol/registry",
            "detail": "canonical home with server.json + connect + auth, resolvable from registry"
          }
        ]
      },
      {
        "id": "mcp-breadth",
        "title": "Breadth of publishing",
        "weight": 0.25,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "mcp.breadth.canonical-registry",
            "category": "mcp-breadth",
            "title": "Meaningful presence in the canonical MCP registry",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "upside-only",
            "specUrl": "https://registry.modelcontextprotocol.io/",
            "detail": "present in the canonical MCP registry"
          }
        ]
      }
    ]
  },
  "mcp": {
    "axis": "mcp",
    "version": "0.6.1",
    "score": 100,
    "grade": "A+",
    "establishedScore": 100,
    "establishedGrade": "A+",
    "applicable": true,
    "categories": [
      {
        "id": "mcp-tool-schema-quality",
        "title": "Tool & schema quality",
        "weight": 0.4,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "mcp.cap.tool-descriptions",
            "category": "mcp-tool-schema-quality",
            "title": "Every tool has a meaningful description",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "scored",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "all 69 tools with a description ok"
          },
          {
            "id": "mcp.cap.param-descriptions",
            "category": "mcp-tool-schema-quality",
            "title": "Every input parameter is described",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "scored",
            "specUrl": "https://json-schema.org/",
            "detail": "all 65 parameterized tools with described params ok"
          },
          {
            "id": "mcp.cap.output-schemas",
            "category": "mcp-tool-schema-quality",
            "title": "Every tool declares a real outputSchema",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "scored",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "all 69 tools declaring an outputSchema ok"
          },
          {
            "id": "mcp.cap.typed-bodies",
            "category": "mcp-tool-schema-quality",
            "title": "Typed request bodies (no opaque blobs)",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "scored",
            "specUrl": "https://json-schema.org/",
            "detail": "all 69 tools with typed (non-opaque) bodies ok"
          },
          {
            "id": "mcp.cap.titles",
            "category": "mcp-tool-schema-quality",
            "title": "Tools carry human-readable titles",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "scored",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "all 69 tools with a title ok"
          }
        ]
      },
      {
        "id": "mcp-annotations",
        "title": "Annotations",
        "weight": 0.3,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "mcp.cap.annotations-present",
            "category": "mcp-annotations",
            "title": "Tools carry behaviour annotations",
            "status": "pass",
            "maturity": "established",
            "basis": "standard",
            "scoringContribution": "scored",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "all 69 tools with all four behaviour annotations ok"
          },
          {
            "id": "mcp.cap.annotations-justified",
            "category": "mcp-annotations",
            "title": "Annotations are accurate",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "scored",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "69 annotated tools are self-consistent"
          }
        ]
      },
      {
        "id": "mcp-metadata",
        "title": "Server metadata",
        "weight": 0.3,
        "score": 100,
        "applicable": true,
        "checks": [
          {
            "id": "mcp.cap.server-metadata",
            "category": "mcp-metadata",
            "title": "Complete server metadata",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "scored",
            "specUrl": "https://github.com/modelcontextprotocol/registry",
            "detail": "name + description + homepage + icon"
          },
          {
            "id": "mcp.cap.naming",
            "category": "mcp-metadata",
            "title": "Consistent tool naming (preferences flagged, not penalized)",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "scored",
            "specUrl": "https://modelcontextprotocol.io/specification",
            "detail": "tool names follow one consistent scheme"
          },
          {
            "id": "mcp.cap.config-ux",
            "category": "mcp-metadata",
            "title": "Clear configuration UX",
            "status": "pass",
            "maturity": "emerging",
            "basis": "convention",
            "scoringContribution": "scored",
            "specUrl": "https://github.com/modelcontextprotocol/registry",
            "detail": "required configuration declared with defaults"
          }
        ]
      }
    ],
    "scoredVia": "api.mnemom.ai/mcp — canonical alias of api.isittrustready.ai/mcp (identical backend; our scanner can't fetch its own zone's route without hairpinning)"
  },
  "composite": {
    "score": 100,
    "grade": "A+"
  },
  "verification": {
    "alg": "Ed25519",
    "kid": "94502b2b7235c986",
    "jwks": "https://api.isittrustready.ai/jwk",
    "canonicalization": "Remove fields [signature, cached, permalink, verification] if present; serialize the rest as deterministic JSON (object keys sorted by UTF-16 code unit, undefined dropped, arrays in order, primitives via standard JSON.stringify — RFC 8785 JCS-equivalent for this value space); UTF-8 encode; Ed25519-verify the base64 signature.value against the jwks key selected by kid."
  },
  "signature": {
    "alg": "Ed25519",
    "publicKeyId": "94502b2b7235c986",
    "value": "eggYruDI4LmnExQyo53kOssWLIRhzvXOB8A5mOLozAGDDnssZrspOzaD3HsbeMvs1cEjjTdsbDYvXc/bxn1dBA==",
    "signedAt": "2026-06-17T12:00:08.324Z"
  },
  "permalink": "https://api.isittrustready.ai/r/isittrustready.ai/3c0f96ca55eeaf80"
}