Skip to content

The check inventory

scout runs 81 checks across 9 phases.

80 of those are fixed, and 1 is a family whose id is built at run time — one check per value the run encounters, marked * below.

This file is generated from the source: every check is created through (*Session).check(id, title), and this table is those call sites. CI fails when it drifts, so the figure scout publishes is the figure it implements.

A check may be reached from more than one branch — a handshake can fail in several ways and report the same id. The count is of distinct ids, because that is what a reader sees in a report.

net — 6 checks

Check What it looks for
net.dns Hostname resolves
net.scheme Endpoint uses HTTPS
net.tcp TCP connection
net.tls TLS handshake and certificate
net.tls.cert Certificate validity window
net.tls.version TLS version is 1.2 or newer

discovery — 14 checks

Check What it looks for
discovery.as Authorization server metadata (RFC 8414 / OIDC)
discovery.as.grants Grant types advertised
discovery.as.https Authorization server uses HTTPS
discovery.as.pkce PKCE S256 advertised
discovery.assemble Assemble discovery
discovery.challenge WWW-Authenticate challenge
discovery.challenge.scope Challenge advertises required scope
discovery.creds_unused Credentials supplied to an open server
discovery.first_contact Unauthenticated first contact
discovery.override Discovery bypassed by --token-url
discovery.override.build Override endpoints
discovery.prm Protected resource metadata
discovery.prm.resource PRM resource matches endpoint
discovery.registration Client registration path

auth — 8 checks

Check What it looks for
auth.mode Credentials
auth.registration Client identity
auth.rejects_garbage Server rejects an invalid token
auth.source.* (title computed at run time) — one per value encountered
auth.token Token acquisition
auth.token.expiry Token lifetime
auth.token.scope Granted scope covers requested scope
auth.token.type Token type

handshake — 8 checks

Check What it looks for
handshake.capabilities Capabilities advertised
handshake.initialize initialize succeeds
handshake.instructions Server instructions
handshake.protocol_era Protocol generation
handshake.protocol_version Negotiated protocol version
handshake.server_info Server identifies itself
handshake.session Mcp-Session-Id issued
handshake.stateless Stateless session setup

protocol — 11 checks

Check What it looks for
protocol.accept_header Request without Accept header
protocol.bogus_session Unknown session id is rejected
protocol.get_stream GET on the MCP endpoint
protocol.id_echo Response id matches request id
protocol.invalid_params tools/call without a name is rejected
protocol.malformed_json Malformed JSON is rejected
protocol.ping (title computed at run time)
protocol.routing_headers Mirrored routing headers are validated
protocol.unknown_method Unknown method returns -32601
protocol.unknown_tool Unknown tool is reported
protocol.version_header Bad MCP-Protocol-Version is rejected

catalog — 19 checks

Check What it looks for
catalog.empty Server exposes something
catalog.names.confusable Names use a single script
catalog.prompts.descriptions Prompts and arguments are described
catalog.prompts.list prompts/list
catalog.resources.list resources/list
catalog.resources.mime Resources declare mimeType
catalog.resources.templates resources/templates/list
catalog.resources.uris Resource URIs are absolute
catalog.text.comments Catalog text carries no hidden comments
catalog.text.hidden Catalog text has nothing hidden in it
catalog.text.instructions Catalog text describes rather than instructs
catalog.text.secret_paths Catalog text names no credential locations
catalog.tools.annotations Tools declare behaviour annotations
catalog.tools.descriptions Every tool has a useful description
catalog.tools.input_schema inputSchema is a JSON Schema object
catalog.tools.list tools/list
catalog.tools.output_schema Tools declare outputSchema
catalog.tools.title Tools have a human title
catalog.tools.unique Tool names are unique

execution — 6 checks

Check What it looks for
execution.content Results validate against outputSchema
execution.policy Safety policy
execution.prompts Prompt rendering
execution.resources Resource reads
execution.tools Tool invocations
execution.validation Tools reject missing required arguments

performance — 6 checks

Check What it looks for
performance.concurrency (title computed at run time)
performance.ping (title computed at run time)
performance.rate_limit Server rate-limits an unthrottled burst
performance.throttle Burst was throttled
performance.tools Tool latency profile
performance.warmup Cold vs warm call

resilience — 3 checks

Check What it looks for
resilience.session_reinit Client recovers from a lost session
resilience.stateless Requests do not depend on the connection
resilience.token_refresh Token source can renew