Choose the input
For the shortest path, use the server's public Streamable HTTP endpoint. It must be HTTPS on port 443, use a DNS hostname and an explicit path, and contain no username, password, query, fragment, or encoded ambiguity. Private endpoints and endpoints that need credentials are not accepted by the free assessor.
If the endpoint is private, authenticated, or unavailable from the public internet, use your MCP client or server development tool to capture the complete tools/list response. The assessor also accepts the inner result object or the raw tools array.
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "get_customer",
"description": "Read one customer by ID",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"customer_id": {
"type": "string",
"description": "Stable customer identifier"
}
},
"required": ["customer_id"]
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}
}
]
}
}Submit definitions only. Do not include OAuth tokens, API keys, session cookies, production prompts, tool responses, or customer records.
Run the free assessment
Open console.null.select/assess. Use Public endpoint and choose Assess endpoint, or use Paste or upload JSON and choose Assess definition. No account is required. Submitted JSON accepts at most 1 MiB and 500 tools; endpoint observation accepts at most 100 tools across four pages.
You can also assess a public endpoint from a local script:
curl -sS https://console.null.select/api/assessments/mcp/endpoint \
-H 'Content-Type: application/json' \
--data '{"endpoint":"https://your-mcp-host.example/mcp"}' | jqEndpoint mode sends only MCP discovery metadata operations, calls no tool, and returns a versioned observation with the normalized origin and path, protocol version, declared server identity, tool count, catalog digest, and observation time. The endpoint URL and discovered definitions are not retained.
For a captured document, use the definition endpoint:
curl -sS https://console.null.select/api/assessments/mcp \
-H 'Content-Type: application/json' \
--data-binary @tools-list.json | jqThe report identifier is a stable digest of the normalized tool document. Equivalent pasted and remotely observed catalogs produce the same identifier, findings, severities, and tool summaries, which makes before-and-after reviews easier to compare.
Read evidence, not a magic score
Every finding has a stable code, severity, observed fact, explanation, repair, and exact document location. Start with critical and high findings, then review the tool surface as a set.
Protocol and schema: invalid names, missing object input schemas, or permissive arguments.
Metadata integrity: instruction-like descriptions, confusable names, and contradictory effect hints.
Credential and network exposure: secret-like parameters, header mirroring, and caller-selected destinations.
Retry posture: consequential tools with no credible idempotency or verification story.
Not observable is a result, not an error. Static tool metadata cannot prove authentication, policy enforcement, approval, audit completeness, or business-outcome verification.
Repair and assess again
Prefer small task-level tools over generic endpoint, shell, SQL, or code execution. Remove credentials from model-visible arguments. Close input schemas, bound values, describe effects plainly, and keep destinations in a server-side allowlist.
Annotations improve review, but the MCP specification treats them as untrusted unless the server is trusted. Do not let a readOnlyHint replace runtime authorization or a destructiveHint replace approval policy.
Managed gateway
Place reviewed remote reads behind the production boundary.
After the organization identity is bound, an authorized operator creates a named environment, selects its reviewed release, and can suspend or resume that environment independently. In Source review, the operator enters a public HTTPS MCP endpoint and stores its normalized catalog and deterministic assessment as an immutable revision. If that public source requires an HTTP bearer, the operator enters it through the environment's write-only credential path; the gateway encrypts it for that exact environment and source, returns metadata only, and applies rotation or removal on the next dispatch across replicas. For a source with standards-based OAuth metadata, an organization-wide operator configures its registered client and exact scopes. Each member then connects a personal upstream account for one environment and source through authorization code and PKCE S256. The encrypted grant is resolved only for that member's interactive MCP session, refresh is serialized across replicas, and disconnect denies the next call. Automation credentials never inherit or borrow personal upstream authority. An immediate or fixed-interval catalog check stores changed material in an immutable review queue with a semantic diff for server identity, assessment fields, tools, schemas, annotations, and findings. Checks never call tools, and observation alone never changes a reviewed revision, release candidate, credential, or runtime. An organization-wide operator accepts or dismisses each change with a recorded reason; only acceptance creates the next reviewed revision. The operator curates one to 25 tools across one to five current source revisions. Each member explicitly declares read-only and non-destructive behavior, preserves its exact source and upstream identity, and receives a unique reviewed public contract. Publication runs nine required input, authorization, output, destination, and evidence gates for each selected tool. Passed and failed attempts retain safe case outcomes, digests, and bounded dispatch facts without payloads. The complete candidate is published atomically as a signed inactive release only when every exact retained attempt passes, then activated in a separate confirmed action. Activating an earlier signed release performs an explicit rollback and adds another activation-history record. In the Controls workspace, the operator compares retained releases against immutable versioned profiles and binds one exact profile to the environment with a reason, confirmation, and current revision. The reviewed profile preserves the complete read-only boundary; the public-anonymous profile accepts only public tools with no upstream authority; the authenticated business profile accepts public, internal, or confidential tools with a reviewed shared bearer or member OAuth grant. The same evaluator blocks incompatible binding and activation and runs again before dispatch. Controls can also stop or resume the whole organization, one reviewed source across its active environments, one environment, release member, principal, or credential. Source stops remove only that source's members. The organization stop blocks managed discovery and execution while sign-in, administration, evidence reads, and resume remain available.
Which organization, principal, client, environment, and scopes does the connected session or automation credential resolve?
Which signed immutable bundle defines the tool, endpoint, limits, closed schemas, reviewed copy, data class, and assessment?
Which environment profile ID, version, digest, and binding revision applied; does the active release satisfy it; and does the caller hold the exact required scope?
Can the execution identifier, release digest, and audit-chain tip be verified, then followed to the exact immutable activation, environment revision, remote source revision, and candidate attempt? Can retained executions be found by exact environment, caller, credential, release, decision, outcome, tool, and time filters?
After activation, use Access to connect an interactive client through browser consent or issue a named, expiring automation credential. OAuth sessions bind the signed-in member, client, environment, and exact approved tools; their short-lived access tokens rotate within a bounded session that can be revoked on the next request. Automation credentials retain a separate lifecycle and explicit tool subset. Request managed access for the initial organization binding, or read the complete enforced workflow.
Production scope
Know the enforced boundary.
The public assessor reviews submitted MCP definitions or performs one bounded, unauthenticated metadata observation of a public endpoint. It calls no tool and retains neither the URL nor the definitions. The managed endpoint implements stateless MCP 2026-07-28 for reviewed read-only HTTPS tools with interactive OAuth sessions or expiring automation credentials, authorization-filtered discovery, named environments, signed releases, fixed public destinations, optional environment-and-source-bound upstream HTTP bearer authority, per-member upstream OAuth, closed input and output schemas, validated structured output, and a PostgreSQL-backed linked audit chain. Private sources, redirects, proxies, writes, provider-specific connectors, arbitrary upstream auth schemes, arbitrary code, and OpenAPI or collection import are excluded.
Ready