AgentAvow MCP
AgentAvow provides signed, offline-verifiable safety scores for MCP servers, packages, and tools. It checks if a tool is safe to connect, offering a trust score (0-100), adoption score, and findings. Agents can use this server to verify the safety of connections before interacting with external resources.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://agentavow.com/mcpWhat its tools do
8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to agentavow.com ·
- Passed Endpoint is on the registry namespace domain ·
- Warning Advertises resources/templates/list but does not implement it
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Check if a GitHub repo or package is safe to connect
- Verify safety scores for MCP servers offline
- Gate CI and agents on safety grades
- Browse a catalog of scanned tools
Source and maintenance
Protocol and capabilities
- Server
- agentavow-trust 0.16.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 8 advertised
- Resources
- 2 advertised
- Resource templates
- Not advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
scan_repo — Scan a GitHub repo
Scan a public GitHub repository with AgentAvow and return whether it is safe for an agent to connect to: one of three answers with its reason (Safe to connect, Review before you connect, or Do not connect), a 0-100 trust score, an adoption score from real usage (stars), the findings behind it (with where and how to fix), and a signed, offline-verifiable attestation. Read-only, no account. Calls the AgentAvow public API at agentavow.com.
{
"type": "object",
"required": [
"repo"
],
"properties": {
"repo": {
"type": "string",
"maxLength": 214,
"description": "Repo as 'owner/name' (e.g. 'vercel/next.js'), or just the name when 'owner' is given separately."
},
"force": {
"type": "boolean",
"description": "Re-scan now instead of returning the cached verdict (results cache ~1h). Use after the target has changed."
},
"owner": {
"type": "string",
"maxLength": 214,
"description": "Repo owner (optional if 'repo' is already 'owner/name')."
}
}
}{
"type": "object",
"required": [
"target",
"target_type",
"decision",
"decision_final",
"decision_reason",
"trust_score",
"verdict",
"report_url"
],
"properties": {
"high": {
"type": "integer",
"minimum": 0,
"description": "High findings, static and sandbox."
},
"tier": {
"type": [
"string",
"null"
],
"description": "Trust tier for the score (detail, not the headline)."
},
"cached": {
"type": "boolean",
"description": "Served from the ~1h cache."
},
"signed": {
"type": "boolean",
"description": "True when a signed (Ed25519/JWS) attestation backs this."
},
"target": {
"type": "string",
"description": "What was scanned, as given."
},
"install": {
"type": [
"string",
"null"
],
"description": "Install command, only when nothing blocks it."
},
"sandbox": {
"type": [
"object",
"null"
],
"description": "What the behavioral sandbox observed; null if it does not apply."
},
"verdict": {
"enum": [
"safe",
"needs_review"
],
"type": "string",
"description": "Binary form of the decision, kept for older clients."
},
"adoption": {
"type": [
"object",
"null"
],
"properties": {
"unit": {
"type": "string"
},
"count": {
"type": "integer"
},
"score_0_100": {
"type": "integer"
}
},
"description": "The adoption score: real usage (downloads per week, stars or installs). Never changes the decision."
},
"critical": {
"type": "integer",
"minimum": 0,
"description": "Critical findings, static and sandbox."
},
"decision": {
"enum": [
"safe",
"review",
"do_not_connect"
],
"type": "string",
"description": "The answer to lead with: safe = Safe to connect, review = Review before you connect, do_not_connect = Do not connect."
},
"incident": {
"type": [
"object",
"null"
],
"description": "Known past compromise (context only, never scored)."
},
"certified": {
"type": "boolean",
"description": "Matches the signed attestation's certified.eligible."
},
"subscores": {
"type": "object",
"description": "Per-category 0-100 scores behind the trust score.",
"additionalProperties": {
"type": [
"number",
"null"
]
}
},
"deprecated": {
"type": [
"string",
"null"
],
"description": "The maintainer's deprecation notice, or null."
},
"report_url": {
"type": "string",
"description": "Full report page."
},
"scanned_at": {
"type": [
"string",
"null"
],
"description": "When the scan ran (ISO 8601, UTC)."
},
"verify_url": {
"type": "string",
"description": "How to verify offline."
},
"not_checked": {
"type": "array",
"items": {
"type": "string"
},
"description": "Plain-English notes for what the scan could not read or check (empty when it read everything). Say these alongside the answer."
},
"target_type": {
"type": "string",
"description": "github, npm, pypi, crates, docker, hf, or mcp."
},
"trust_score": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Trust score, 0-100. Evidence under the decision."
},
"published_at": {
"type": [
"string",
"null"
],
"description": "When that version was published."
},
"top_findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"what": {
"type": [
"string",
"null"
],
"description": "What was found."
},
"count": {
"type": "integer",
"description": "How many times it occurs."
},
"where": {
"type": [
"string",
"null"
],
"description": "File and line, if file-based."
},
"severity": {
"type": [
"string",
"null"
],
"description": "critical, high, medium, or low."
},
"remediation": {
"type": [
"string",
"null"
],
"description": "How to fix it."
}
}
},
"description": "Up to five most important findings."
},
"coverage_gaps": {
"type": "object",
"description": "Machine form of not_checked: gap kinds (e.g. tool_list_paged, oversized_files) with a flag or count. Empty when nothing was skipped."
},
"certified_mark": {
"type": "boolean",
"description": "Certified and safe: show the Certified mark."
},
"decision_final": {
"type": "boolean",
"description": "False while the behavioral sandbox is still running; the decision can still change."
},
"findings_total": {
"type": "integer",
"minimum": 0,
"description": "All findings, every severity."
},
"rescan_pending": {
"type": "boolean",
"description": "A fresh scan was started; this is the previous result."
},
"verdict_reason": {
"type": "string",
"description": "Machine reason for the binary verdict, e.g. clean, clean_partial (clean, but not everything was read), blocking_findings, thin_coverage."
},
"decision_reason": {
"type": "string",
"description": "One sentence naming what decided it."
},
"package_version": {
"type": [
"string",
"null"
],
"description": "Package version scanned."
},
"report_json_url": {
"type": "string",
"description": "The full verdict as JSON."
},
"static_findings_total": {
"type": "integer",
"minimum": 0,
"description": "Findings from static analysis only."
},
"advisories_affecting_version": {
"type": "array",
"items": {
"type": "object"
},
"description": "Published advisories that affect this version."
}
}
}{
"title": "Scan a GitHub repo",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}scan_package — Scan a package
Scan a published package (npm, PyPI, crates, Docker, or Hugging Face) with AgentAvow. Returns one of three answers with its reason (Safe to connect, Review before you connect, or Do not connect), a 0-100 trust score, an adoption score from real usage (downloads per week), findings with remediation, and a signed attestation. Also reports published advisories that affect the scanned version, the maintainer's deprecation notice, repo-vs-artifact drift (files shipped that aren't in the source), and AgentAvow's behavioral sandbox results when available. Scans the latest version unless `version` (or a pin in the name) names one. Read-only; calls agentavow.com.
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 214,
"description": "Package name, e.g. 'chalk' (or 'org/model' for hf)."
},
"force": {
"type": "boolean",
"description": "Re-scan now instead of returning the cached verdict (results cache ~1h). Use after a new version ships."
},
"surface": {
"type": "string",
"description": "Alias for registry."
},
"version": {
"type": "string",
"maxLength": 64,
"description": "Exact version to scan, e.g. '5.3.0'. Optional: the latest version by default. A pin in the name ('chalk@5.3.0', 'requests==2.32.5') works too."
},
"registry": {
"type": "string",
"description": "Package registry: npm, pypi, crates, docker, or hf."
},
"ecosystem": {
"type": "string",
"description": "Alias for registry."
}
}
}{
"type": "object",
"required": [
"target",
"target_type",
"decision",
"decision_final",
"decision_reason",
"trust_score",
"verdict",
"report_url"
],
"properties": {
"high": {
"type": "integer",
"minimum": 0,
"description": "High findings, static and sandbox."
},
"tier": {
"type": [
"string",
"null"
],
"description": "Trust tier for the score (detail, not the headline)."
},
"cached": {
"type": "boolean",
"description": "Served from the ~1h cache."
},
"signed": {
"type": "boolean",
"description": "True when a signed (Ed25519/JWS) attestation backs this."
},
"target": {
"type": "string",
"description": "What was scanned, as given."
},
"install": {
"type": [
"string",
"null"
],
"description": "Install command, only when nothing blocks it."
},
"sandbox": {
"type": [
"object",
"null"
],
"description": "What the behavioral sandbox observed; null if it does not apply."
},
"verdict": {
"enum": [
"safe",
"needs_review"
],
"type": "string",
"description": "Binary form of the decision, kept for older clients."
},
"adoption": {
"type": [
"object",
"null"
],
"properties": {
"unit": {
"type": "string"
},
"count": {
"type": "integer"
},
"score_0_100": {
"type": "integer"
}
},
"description": "The adoption score: real usage (downloads per week, stars or installs). Never changes the decision."
},
"critical": {
"type": "integer",
"minimum": 0,
"description": "Critical findings, static and sandbox."
},
"decision": {
"enum": [
"safe",
"review",
"do_not_connect"
],
"type": "string",
"description": "The answer to lead with: safe = Safe to connect, review = Review before you connect, do_not_connect = Do not connect."
},
"incident": {
"type": [
"object",
"null"
],
"description": "Known past compromise (context only, never scored)."
},
"certified": {
"type": "boolean",
"description": "Matches the signed attestation's certified.eligible."
},
"subscores": {
"type": "object",
"description": "Per-category 0-100 scores behind the trust score.",
"additionalProperties": {
"type": [
"number",
"null"
]
}
},
"deprecated": {
"type": [
"string",
"null"
],
"description": "The maintainer's deprecation notice, or null."
},
"report_url": {
"type": "string",
"description": "Full report page."
},
"scanned_at": {
"type": [
"string",
"null"
],
"description": "When the scan ran (ISO 8601, UTC)."
},
"verify_url": {
"type": "string",
"description": "How to verify offline."
},
"not_checked": {
"type": "array",
"items": {
"type": "string"
},
"description": "Plain-English notes for what the scan could not read or check (empty when it read everything). Say these alongside the answer."
},
"target_type": {
"type": "string",
"description": "github, npm, pypi, crates, docker, hf, or mcp."
},
"trust_score": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Trust score, 0-100. Evidence under the decision."
},
"published_at": {
"type": [
"string",
"null"
],
"description": "When that version was published."
},
"top_findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"what": {
"type": [
"string",
"null"
],
"description": "What was found."
},
"count": {
"type": "integer",
"description": "How many times it occurs."
},
"where": {
"type": [
"string",
"null"
],
"description": "File and line, if file-based."
},
"severity": {
"type": [
"string",
"null"
],
"description": "critical, high, medium, or low."
},
"remediation": {
"type": [
"string",
"null"
],
"description": "How to fix it."
}
}
},
"description": "Up to five most important findings."
},
"coverage_gaps": {
"type": "object",
"description": "Machine form of not_checked: gap kinds (e.g. tool_list_paged, oversized_files) with a flag or count. Empty when nothing was skipped."
},
"certified_mark": {
"type": "boolean",
"description": "Certified and safe: show the Certified mark."
},
"decision_final": {
"type": "boolean",
"description": "False while the behavioral sandbox is still running; the decision can still change."
},
"findings_total": {
"type": "integer",
"minimum": 0,
"description": "All findings, every severity."
},
"rescan_pending": {
"type": "boolean",
"description": "A fresh scan was started; this is the previous result."
},
"verdict_reason": {
"type": "string",
"description": "Machine reason for the binary verdict, e.g. clean, clean_partial (clean, but not everything was read), blocking_findings, thin_coverage."
},
"decision_reason": {
"type": "string",
"description": "One sentence naming what decided it."
},
"package_version": {
"type": [
"string",
"null"
],
"description": "Package version scanned."
},
"report_json_url": {
"type": "string",
"description": "The full verdict as JSON."
},
"static_findings_total": {
"type": "integer",
"minimum": 0,
"description": "Findings from static analysis only."
},
"advisories_affecting_version": {
"type": "array",
"items": {
"type": "object"
},
"description": "Published advisories that affect this version."
}
}
}{
"title": "Scan a package",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}scan_mcp_server — Scan an MCP server
Scan a live MCP server's tool definitions for tool-poisoning, prompt-injection, invisible-unicode, and manifest-execution risks before your agent connects to it. Returns one of three answers with its reason (Safe to connect, Review before you connect, or Do not connect), a 0-100 trust score, findings, and a signed attestation. Read-only; calls the agentavow.com public API.
{
"type": "object",
"required": [
"endpoint_url"
],
"properties": {
"force": {
"type": "boolean",
"description": "Re-scan now instead of returning the cached verdict (results cache ~1h)."
},
"endpoint_url": {
"type": "string",
"maxLength": 512,
"description": "The MCP server's https:// URL."
}
}
}{
"type": "object",
"required": [
"target",
"target_type",
"decision",
"decision_final",
"decision_reason",
"trust_score",
"verdict",
"report_url"
],
"properties": {
"high": {
"type": "integer",
"minimum": 0,
"description": "High findings, static and sandbox."
},
"tier": {
"type": [
"string",
"null"
],
"description": "Trust tier for the score (detail, not the headline)."
},
"cached": {
"type": "boolean",
"description": "Served from the ~1h cache."
},
"signed": {
"type": "boolean",
"description": "True when a signed (Ed25519/JWS) attestation backs this."
},
"target": {
"type": "string",
"description": "What was scanned, as given."
},
"install": {
"type": [
"string",
"null"
],
"description": "Install command, only when nothing blocks it."
},
"sandbox": {
"type": [
"object",
"null"
],
"description": "What the behavioral sandbox observed; null if it does not apply."
},
"verdict": {
"enum": [
"safe",
"needs_review"
],
"type": "string",
"description": "Binary form of the decision, kept for older clients."
},
"adoption": {
"type": [
"object",
"null"
],
"properties": {
"unit": {
"type": "string"
},
"count": {
"type": "integer"
},
"score_0_100": {
"type": "integer"
}
},
"description": "The adoption score: real usage (downloads per week, stars or installs). Never changes the decision."
},
"critical": {
"type": "integer",
"minimum": 0,
"description": "Critical findings, static and sandbox."
},
"decision": {
"enum": [
"safe",
"review",
"do_not_connect"
],
"type": "string",
"description": "The answer to lead with: safe = Safe to connect, review = Review before you connect, do_not_connect = Do not connect."
},
"incident": {
"type": [
"object",
"null"
],
"description": "Known past compromise (context only, never scored)."
},
"certified": {
"type": "boolean",
"description": "Matches the signed attestation's certified.eligible."
},
"subscores": {
"type": "object",
"description": "Per-category 0-100 scores behind the trust score.",
"additionalProperties": {
"type": [
"number",
"null"
]
}
},
"deprecated": {
"type": [
"string",
"null"
],
"description": "The maintainer's deprecation notice, or null."
},
"report_url": {
"type": "string",
"description": "Full report page."
},
"scanned_at": {
"type": [
"string",
"null"
],
"description": "When the scan ran (ISO 8601, UTC)."
},
"verify_url": {
"type": "string",
"description": "How to verify offline."
},
"not_checked": {
"type": "array",
"items": {
"type": "string"
},
"description": "Plain-English notes for what the scan could not read or check (empty when it read everything). Say these alongside the answer."
},
"target_type": {
"type": "string",
"description": "github, npm, pypi, crates, docker, hf, or mcp."
},
"trust_score": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Trust score, 0-100. Evidence under the decision."
},
"published_at": {
"type": [
"string",
"null"
],
"description": "When that version was published."
},
"top_findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"what": {
"type": [
"string",
"null"
],
"description": "What was found."
},
"count": {
"type": "integer",
"description": "How many times it occurs."
},
"where": {
"type": [
"string",
"null"
],
"description": "File and line, if file-based."
},
"severity": {
"type": [
"string",
"null"
],
"description": "critical, high, medium, or low."
},
"remediation": {
"type": [
"string",
"null"
],
"description": "How to fix it."
}
}
},
"description": "Up to five most important findings."
},
"coverage_gaps": {
"type": "object",
"description": "Machine form of not_checked: gap kinds (e.g. tool_list_paged, oversized_files) with a flag or count. Empty when nothing was skipped."
},
"certified_mark": {
"type": "boolean",
"description": "Certified and safe: show the Certified mark."
},
"decision_final": {
"type": "boolean",
"description": "False while the behavioral sandbox is still running; the decision can still change."
},
"findings_total": {
"type": "integer",
"minimum": 0,
"description": "All findings, every severity."
},
"rescan_pending": {
"type": "boolean",
"description": "A fresh scan was started; this is the previous result."
},
"verdict_reason": {
"type": "string",
"description": "Machine reason for the binary verdict, e.g. clean, clean_partial (clean, but not everything was read), blocking_findings, thin_coverage."
},
"decision_reason": {
"type": "string",
"description": "One sentence naming what decided it."
},
"package_version": {
"type": [
"string",
"null"
],
"description": "Package version scanned."
},
"report_json_url": {
"type": "string",
"description": "The full verdict as JSON."
},
"static_findings_total": {
"type": "integer",
"minimum": 0,
"description": "Findings from static analysis only."
},
"advisories_affecting_version": {
"type": "array",
"items": {
"type": "object"
},
"description": "Published advisories that affect this version."
}
}
}{
"title": "Scan an MCP server",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}verify_trust — Verify an entity's trust score
Verify an AgentAvow entity's trust score. Returns trust_score (0-1), trust_score_pct (0-100), trust_tier, and whether it meets a minimum threshold. Read-only, no auth. Use before interacting with an unknown agent.
{
"type": "object",
"required": [
"entity_id"
],
"properties": {
"entity_id": {
"type": "string",
"maxLength": 64,
"description": "UUID of a registered AgentAvow entity (resolve one with lookup_identity; unknown ids return guidance, not an error)."
},
"min_trust": {
"type": "number",
"default": 0.3,
"description": "Min score, 0-1."
}
}
}{
"title": "Verify an entity's trust score",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}check_interaction_safety — Check interaction safety
Check whether it is safe to interact with another agent by trust threshold. Thresholds: delegate 0.6, trade 0.5, collaborate 0.4, follow 0.1. Returns is_safe, risk_level, the score, and a recommendation. Read-only, no auth.
{
"type": "object",
"required": [
"target_entity_id",
"interaction_type"
],
"properties": {
"interaction_type": {
"enum": [
"delegate",
"trade",
"collaborate",
"follow"
],
"type": "string"
},
"target_entity_id": {
"type": "string",
"maxLength": 64,
"description": "UUID of a registered target entity (resolve one with lookup_identity)."
}
}
}{
"title": "Check interaction safety",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}lookup_identity — Look up an agent or tool
Look up an AgentAvow entity by W3C DID or display name. Returns the entity's id, name, type, trust score and tier. Read-only, no auth. Use to resolve an identity before checking its trust.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"pattern": "^[\\w .:/@#+-]{1,200}$",
"maxLength": 200,
"description": "A did:web:... or a display name."
}
}
}{
"title": "Look up an agent or tool",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_trust_badge — Get a trust badge
Get an embeddable AgentAvow trust badge (SVG) for an entity, with ready-to-paste Markdown and HTML. The badge auto-updates as the score changes. Read-only, no auth.
{
"type": "object",
"required": [
"entity_id"
],
"properties": {
"entity_id": {
"type": "string",
"maxLength": 64,
"description": "UUID of a registered AgentAvow entity (resolve one with lookup_identity)."
}
}
}{
"title": "Get a trust badge",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}about_agentavow — About AgentAvow
What AgentAvow is, which tool to use for what, how to read a verdict, and example scans. Call this for an overview or when getting started. No input, read-only.
{
"type": "object",
"properties": {}
}{
"title": "About AgentAvow",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
2 advertised
agentavow_get_started — AgentAvow: get started
What AgentAvow checks and how to read a verdict, with examples.
agentavow_check_my_connections — AgentAvow: check my connections
Grade the other MCP servers and connectors enabled in this conversation and say which to review first.
Resources
2 advertised
AgentAvow trust card
Interactive trust card rendered from a scan result.
ui://agentavow/trust-card-v14.htmlAgentAvow trust card (previous version)
Interactive trust card rendered from a scan result.
ui://agentavow/trust-card-v13.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 600 ms
- 95th percentile latency
- 600 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 600 ms · metadata changed · 8 tool(s), 2 resource(s), 2 prompt(s); warnings: Advertises resources/templates/list but does not implement it
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http agentavow-mcp https://agentavow.com/mcpCodex
codex mcp add agentavow-mcp --url https://agentavow.com/mcpCursor
{
"mcpServers": {
"agentavow-mcp": {
"url": "https://agentavow.com/mcp"
}
}
}Cline
{
"mcpServers": {
"agentavow-mcp": {
"type": "streamableHttp",
"url": "https://agentavow.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"agentavow-mcp": {
"type": "http",
"url": "https://agentavow.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http agentavow-mcp https://agentavow.com/mcpClaude Desktop
https://agentavow.com/mcpWindsurf
{
"mcpServers": {
"agentavow-mcp": {
"serverUrl": "https://agentavow.com/mcp"
}
}
}Let your agent find its tools
Find servers like AgentAvow MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other developer tools servers
Do you run AgentAvow MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.