The MCP server that vets MCP servers: identity, risk grade and per-tool risk before you install.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Registry slug, npm package name (e.g. @acme/mcp-server), remote URL, or server name.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| server* | string | Registry slug, npm package name (e.g. @acme/mcp-server), remote URL, or server name. |
{
"type": "object",
"required": [
"server"
],
"properties": {
"server": {
"type": "string",
"description": "Registry slug, npm package name (e.g. @acme/mcp-server), remote URL, or server name."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| servers* | array | One entry per server in the stack. |
{
"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."
}
}
}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?"
| Argument | Type | Description |
|---|---|---|
| tool* | string | Tool name as the server declares it. |
| server* | string | Registry slug or npm package name of the server. |
{
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max events (1-1000, default 200). |
| after_id | number | Return events with id greater than this cursor (default 0). |
| severity | string | Minimum severity: that level and above. |
{
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max matches to return (1-20, default 10). |
| query* | string | Substring to match against slug, name and packages. |
{
"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."
}
}
}