← mcp-scorecard

The checks

22 checks across security, agent-readiness, and protocol quality. Run any subset with --profile.

Security

mutation_gatingMutation gating

State-changing tools must document/guard side effects so agents do not mutate blindly.

privacy_modesPrivacy modes

A privacy_mode parameter lets agents request non-sensitive responses.

web_httpsHTTPS / TLS

Plaintext HTTP exposes tokens and tool traffic to interception.

web_security_headersSecurity headers

HSTS/CSP/X-Content-Type-Options harden the server against common web attacks.

web_auth_postureAuth posture declared

Agents cannot connect safely if they cannot tell whether/how to authenticate.

web_oauth_discoveryOAuth discovery

Standard OAuth metadata lets agents programmatically obtain access.

web_exposed_pathsNo exposed secrets

A public /.git or /.env leaks source history and live credentials — critical.

web_cors_postureCORS posture

Wildcard + credentials CORS is a classic data-exfiltration misconfiguration.

Agent-readiness

agent_manifestAgent manifest

recommended_first_calls tells an agent how to start — the onboarding contract.

manifest_discoverabilityManifest discoverability

Standard discovery tools (capabilities, inventory) let agents self-orient.

web_llms_txtllms.txt

A concise machine summary tells LLMs what the server is and how to use it.

web_mcp_server_cardMCP Server Card

The /.well-known card is how agents discover the server, transport and tools.

web_agent_skillsAgent Skills index

The skills discovery index lets agents find and verify your capabilities.

web_api_catalogAPI catalog (RFC 9727)

A standard catalog points agents to your OpenAPI, docs and status.

web_robots_signalsrobots + AI signals

Explicit AI-bot rules + Content-Signal declare how agents may use your content.

web_structured_dataStructured metadata

JSON-LD, OpenGraph and Markdown-for-Agents make the page machine-legible.

Protocol quality

schema_validitySchema validity

Agents reject or mis-call tools whose input schemas are invalid or missing.

tool_namingTool naming

Consistent snake_case verb_noun names make tools predictable for models to select.

tool_descriptionsTool descriptions

Rich descriptions are the only thing a model has to decide when/how to call a tool.

annotationsAnnotations

readOnly/destructive hints let agents reason about safety before calling.

resourcesResources advertised

Exposing resources lets agents pull context without bespoke tool calls.

smoke_testSmoke test

A smoke script proves the server actually boots — the baseline of trust.