{"serverId":"mcp-registry/com.policylayer/registry","tools":[{"name":"check_mcp_server","fixed":{"name":"check_mcp_server","description":"Check an MCP server against the PolicyLayer registry BEFORE installing or allowing it. Accepts a registry slug, an npm package name (scoped or not), a remote server URL (https://…), or a server name. Returns the full published record: identity verification with its evidence, risk grade, auth posture, freshness, and the tool surface listed riskiest-first. A server the registry does not know is queued for scanning by this very call — check back shortly.","inputSchema":{"type":"object","required":["server"],"properties":{"server":{"type":"string","description":"Registry slug, npm package name (e.g. @acme/mcp-server), remote URL, or server name."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":194,"tokensAfter":194},{"name":"check_mcp_stack","fixed":{"name":"check_mcp_stack","description":"Check a whole MCP stack against the PolicyLayer registry in one call — up to 25 servers, each given as candidate identifiers (npm package name, registry slug, or remote URL) tried in order until one resolves. Returns the published record for every hit — plus a deterministic verdict (attention signals and a suggested action) — and the lookup status for every miss; counts, grades and flagged tools come from the published records only. Costs one rate-limit unit per server.","inputSchema":{"type":"object","required":["servers"],"properties":{"servers":{"type":"array","items":{"type":"object","required":["candidates"],"properties":{"name":{"type":"string","description":"Your label for this server (e.g. its config key) — echoed back on the result."},"candidates":{"type":"array","items":{"type":"string"},"maxItems":5,"description":"Identifiers to try in order: npm package name, registry slug, or remote URL. Most package-like first."}}},"maxItems":25,"description":"One entry per server in the stack."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":293,"tokensAfter":293},{"name":"check_tool","fixed":{"name":"check_tool","description":"One tool's full risk classification on a published MCP server: category, severity, risk analysis and evidence, OWASP classes, parameter schema and the recommended policy default. Use when deciding whether to allow a specific tool call, e.g. \"should execute_sql on this server be permitted?\"","inputSchema":{"type":"object","required":["server","tool"],"properties":{"tool":{"type":"string","description":"Tool name as the server declares it."},"server":{"type":"string","description":"Registry slug or npm package name of the server."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"get_change_events","fixed":{"name":"get_change_events","description":"The registry change feed: tool-surface drift, auth-posture flips, impostor flags, version bumps — every event the freshness watchers emit, id-cursored so a consumer resumes exactly where it stopped. Requires a Registry Licence key (Authorization: Bearer plr_...); self-serve at https://policylayer.com/registry/pricing.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Max events (1-1000, default 200)."},"after_id":{"type":"number","description":"Return events with id greater than this cursor (default 0)."},"severity":{"enum":["info","notice","warning","critical"],"type":"string","description":"Minimum severity: that level and above."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":201,"tokensAfter":201},{"name":"search_registry","fixed":{"name":"search_registry","description":"Search the PolicyLayer registry of published MCP servers by name, slug or package substring. Returns candidate matches with risk grade, identity confidence (verified / unverified / mismatch — mismatch means it claims to be an official server with no verifiable link to the brand) and tool count — follow up with check_mcp_server on the match you meant.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"number","description":"Max matches to return (1-20, default 10)."},"query":{"type":"string","description":"Substring to match against slug, name and packages."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":179,"tokensAfter":179}],"toolsChanged":5,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}