sampleStatic preview rendered from mock data. No server was scanned.
Passive scan summary

https://example-mcp.agentreserve.dev/mcp

Scanned Apr 26, 2026 · 14:32 UTC · streamable-http

Public passive · 8 tools · 11 of 15 rules passed · auth required· 4R · 2W · 1D

Why this verdict

The signals that drove the score, in plain language.

  1. 01One destructive tool (delete_document) is advertised on the public surface.
  2. 02Two tools are missing input schemas.
  3. 03One tool can reach arbitrary external network destinations.
Top findinghigh

No destructive tools in the public surface

No advertised tool matches destructive data verbs (delete, drop, purge, wipe, destroy, truncate). Destructive actions are typically irreversible and should be exposed under explicit, scoped authorization rather than a default `tools/list`.

View rule

Recommended actions

What to do before you connect this server.

Recommended next actions

  • high
    Review 1 destructive tool before connecting agents

    Tools flagged destructive: delete_document. Confirm each is intentional and bounded.

  • high
    Fix 1 high-severity rule failure

    Failing rules at HIGH or CRITICAL severity: no_public_destructive_tools.

  • low
    Improve tool schema and description quality

    Of 8 tools: 2 without input schema. Missing metadata weakens passive risk inference and confuses agents.

Category breakdown

Six trust dimensions, each tagged Observed, Inferred, or Derived.

Observed

Transport & endpoint hygiene

All transport checks passed.

100%

5/5 passed

Observed

MCP protocol hygiene

Two tools omit input schemas.

80%

4/5 passed · 1 failed

Observed

Auth discovery posture

OAuth metadata reachable; safe grant types only.

100%

2/2 passed

Inferred

Capability risk

Destructive, network, and PII signals on the public surface.

0%

0/3 passed · 3 failed

Observed

Transparency & operability

All eight tools have descriptions.

100%

1/1 passed

Tool risk surface

Per-tool capability and risk inferred from each tool’s name, description, and schema. No tool was invoked.

never invokedAgentReserve enumerated these tools via tools/list but never called tools/call. Risk and capability badges below are inferred from each tool’s name, description and input schema — not from runtime behaviour.
ToolClassSchemaCapabilities & evidence
delete_document
Permanently delete a document.
destructiveyes
  • deletename: deletehigh · high
create_document
Create a new document in the user's library.
writeyes
  • writename: createmedium · high
update_document
Update an existing document. Accepts free-form string body.
writemissing
  • writename: updatemedium · high
run_workflow
Run a named server-side workflow.
unknownmissing
fetch_url
Fetch the contents of an arbitrary URL.
readyes
  • networkname: urlhigh · high
list_users
List workspace users, including email addresses.
readyes
  • PIIdescription: emailmedium · medium
get_document
Fetch a single document by id.
readyesno high-risk indicators
search_documents
Full-text search across the user's document library.
readyesno high-risk indicators

Findings

Per-rule evidence, then the full rule list. Failing rules first.

Evidence per failing rule

  • Evidence
    {
      "destructiveTools": [
        {
          "toolName": "delete_document",
          "match": "delete",
          "source": "name"
        }
      ]
    }
    Limitation
    • The probe is unauthenticated by design and cannot tell whether these tools would actually execute without further auth. They may be gated server-side at call time. The rule reflects the principle that gating *visibility* is part of layered defence — but a flagged server is not necessarily exploitable.
    Remediation

    Move destructive tools off the public `tools/list` and behind an explicit, scoped authorization step — or split the server into a read-only public endpoint and an authenticated admin endpoint.

  • mediumAll tools declare an input schemafailexpand for evidence
    Evidence
    {
      "withSchema": 6,
      "total": 8,
      "missing": [
        "update_document",
        "run_workflow"
      ]
    }
    Limitation
    • Tool poisoning is fundamentally a behavioural property. The scanner sees only the advertised surface, not actual call behaviour. A well-described tool can still be poisoned at runtime; a poorly-described tool can still be benign. This rule flags the *reviewability* prerequisite, not the attack itself.
    Remediation

    Define a JSON Schema for each tool's arguments — at minimum `type: "object"` with named properties and `required` — so callers can validate inputs without invoking the tool.

  • Evidence
    {
      "networkAccessTools": [
        {
          "toolName": "fetch_url",
          "match": "url",
          "source": "name"
        }
      ]
    }
    Limitation

    Inferred from a passive probe — AgentReserve never invoked the tool or sent credentials, so behaviour at call time is not observed.

    Remediation

    Replace generic fetch tools with purpose-scoped ones that hit specific upstreams under an allow-list. If an unrestricted fetch is intentional, expose it only behind authentication.

  • lowTool surface does not mention PIIfailexpand for evidence
    Evidence
    {
      "piiTools": [
        {
          "toolName": "list_users",
          "match": "email",
          "source": "description"
        }
      ]
    }
    Limitation
    • Keyword-based heuristic. Genuinely PII-handling tools (e.g. `update_email_preferences`) will be flagged identically to careless leakage; the rule's intent is to surface the question 'is the data minimization story documented?', not to declare the tool defective.
    Remediation

    Where PII handling is required, document the data minimization, retention, and access controls in the tool description; otherwise remove the PII references from the public schema.

Standards alignment

MCP protocol

pass

Server identity, protocol version, and TLS transport — the MCP-level signals a client needs before it talks to the server.

Linked rules (3)
Standard requirements (5)
  • MCP HTTP endpoint is reached over TLSMUST

    MCP Authorization spec — 'Authorization servers and resource servers MUST be served over HTTPS'; matches OWASP ASVS V9 transport requirements.

  • Endpoint advertises HSTSBEST_PRACTICE

    RFC 6797 — HTTP Strict Transport Security; OWASP ASVS V9.1.

  • MCP HTTP transports must be reached over HTTPS when authorization is in useMUST

    MCP Authorization spec — 'Authorization endpoints and resource endpoints MUST be served over HTTPS.'

  • Server must advertise an MCP protocol version on initializeMUST

    MCP base specification — `initialize` result schema requires `protocolVersion`; authorization profile assumes negotiated version.

  • Server should identify itself via serverInfo on initializeSHOULD

    MCP base specification — `initialize` result schema includes `serverInfo { name, version }`.

MCP authorization

unknown

Whether the server cooperates with the MCP authorization profile when authorization is in use.

Linked rules (1)
Standard requirements (2)
  • Bearer tokens must travel in the Authorization header, not the query stringMUST

    MCP Authorization spec — bearer token usage; defers to RFC 6750 §2 ('Authentication Schemes'), §2.3 forbids URI query parameter tokens for new applications.

  • Auth-required servers should advertise protected-resource metadataSHOULD

    MCP Authorization spec — discovery section; references RFC 9728 (OAuth 2.0 Protected Resource Metadata) at `/.well-known/oauth-protected-resource`.

OAuth protected resource metadata

not observed

RFC 9728 — does the server publish a `/.well-known/oauth-protected-resource` document, and does it name the right authorization servers?

No scoring rule currently evaluates this standard. The requirement is documented for reference.

Standard requirements (4)
  • Protected resource metadata is published at the well-known URLSHOULD

    RFC 9728 §3 — Protected Resource Metadata Request; documents at `/.well-known/oauth-protected-resource[/<path>]`.

  • Protected resource metadata `resource` matches the MCP serverMUST

    RFC 9728 §2 — `resource` parameter; resource URI must identify the protected resource itself.

  • Protected resource metadata lists at least one authorization serverSHOULD

    RFC 9728 §2 — `authorization_servers` array.

  • Signed metadata, when present, is validMAY

    RFC 9728 §3.2 — `signed_metadata` JWT.

OAuth authorization server metadata

not observed

RFC 8414 / OpenID Connect Discovery — does the authorization server publish `/.well-known/oauth-authorization-server` with the required endpoints?

No scoring rule currently evaluates this standard. The requirement is documented for reference.

Standard requirements (6)
  • Authorization server publishes metadata documentSHOULD

    RFC 8414 §3 — Authorization Server Metadata Request, served at `/.well-known/oauth-authorization-server`.

  • Authorization server metadata `issuer` matches the discovery URLMUST

    RFC 8414 §2 — `issuer` field; §3.3 — validation rules.

  • Authorization server metadata advertises an `authorization_endpoint`MUST

    RFC 8414 §2 — `authorization_endpoint`.

  • Authorization server metadata advertises a `token_endpoint`MUST

    RFC 8414 §2 — `token_endpoint`.

  • Authorization server metadata advertises a `jwks_uri`SHOULD

    RFC 8414 §2 — `jwks_uri`.

  • Authorization server advertises a `registration_endpoint` if it supports DCRMAY

    RFC 8414 §2 — `registration_endpoint`; RFC 7591 — Dynamic Client Registration.

OAuth security best practices

unknown

RFC 9700 — current OAuth security guidance: PKCE, no implicit grant, audience-restricted tokens, careful redirect URIs.

Linked rules (1)
Standard requirements (4)
  • Authorization server metadata does not surface obviously risky redirect URIsBEST_PRACTICE

    RFC 9700 §2.1.1 — Redirect URI validation; §4.1 — Open redirector mitigation.

  • Authorization server should support authorization code + PKCE for public clientsMUST

    RFC 9700 §2.1 — 'Clients MUST use authorization code grant with PKCE'; RFC 7636 — PKCE.

  • Authorization server should not advertise implicit or resource-owner-password grantsMUST

    RFC 9700 §2.1.2 — implicit grant prohibited; §2.4 — resource owner password credentials grant prohibited.

  • Access tokens should be audience-restricted to the MCP resourceSHOULD

    RFC 9700 §4.10 — Audience restriction; RFC 8707 — Resource Indicators for OAuth.

OWASP MCP Top 10

fail

Heuristic alignment with the OWASP MCP Top 10 — keyword-driven indicators inferred from the public tool surface.

Linked rules (11)
Standard requirements (6)
  • Tools must not expose tokens, secrets, or credential materialHEURISTIC

    OWASP MCP Top 10 — Token / secret exposure (sensitive data disclosure through MCP tool surface).

  • Tool surface should be minimal — no excessive or sprawling privilegesHEURISTIC

    OWASP MCP Top 10 — Scope creep / excessive privilege (over-broad capability surface).

  • Tool surface must be reviewable — no missing schemas or descriptionsHEURISTIC

    OWASP MCP Top 10 — Tool poisoning (malicious or ambiguous tool definitions tricking agents into harmful calls).

  • Sensitive tools must not be reachable from anonymous discoveryHEURISTIC

    OWASP MCP Top 10 — Insufficient authentication / authorization (sensitive capability exposed without identity or scope checks).

  • Server should expose telemetry / audit postureBEST_PRACTICE

    OWASP MCP Top 10 — Lack of telemetry / audit (no observable record of tool invocation).

  • Server should not invite broad context disclosure via tool surfaceHEURISTIC

    OWASP MCP Top 10 — Context over-sharing (tools that pull excessive or PII-laden context into the agent).

Full rule breakdown

  • Every tool returned by `tools/list` includes a non-empty JSON Schema for its arguments. Schema-less tools force agents to guess argument shapes and make pre-call validation impossible.

    {
      "withSchema": 6,
      "total": 8,
      "missing": [
        "update_document",
        "run_workflow"
      ]
    }
  • No advertised tool matches destructive data verbs (delete, drop, purge, wipe, destroy, truncate). Destructive actions are typically irreversible and should be exposed under explicit, scoped authorization rather than a default `tools/list`.

    {
      "destructiveTools": [
        {
          "toolName": "delete_document",
          "match": "delete",
          "source": "name"
        }
      ]
    }
  • No advertised tool offers generic outbound network access (fetch_url, http_request, curl, wget, download, upload, …). A public network-fetch tool turns the MCP server into an open proxy and a SSRF pivot for any agent that connects to it.

    {
      "networkAccessTools": [
        {
          "toolName": "fetch_url",
          "match": "url",
          "source": "name"
        }
      ]
    }
  • No tool name, description or input schema references obvious PII fields (email, phone, ssn, password, …). This is a governance prompt, not a security failure — many legitimate CRM, HR, and support servers handle PII by design and will trip the rule. The intent is to make the PII surface visible during review, not to block it. Treat a fail as 'document data minimization, retention, and access controls', not 'remove the tool'.

    {
      "piiTools": [
        {
          "toolName": "list_users",
          "match": "email",
          "source": "description"
        }
      ]
    }
  • weight 10
    details

    The MCP endpoint is reached over HTTPS. Plain HTTP allows trivial credential and prompt leakage on any shared network path.

    Read the full rule definition →

  • The MCP endpoint completes a TLS handshake whose certificate validates against Node's CA store and matches the requested hostname. Untrusted, expired, or hostname-mismatched certificates are observable here even when the JSON-RPC handshake fails.

    Read the full rule definition →

  • details

    The negotiated TLS version is 1.2 or 1.3. TLS 1.0 and 1.1 are deprecated by RFC 8996 and have known cryptographic weaknesses; servers offering them broaden the attack surface for downgrade and padding-oracle attacks.

    Read the full rule definition →

  • The HTTPS endpoint returns a `Strict-Transport-Security` header with a non-trivial `max-age`. HSTS prevents trivial downgrade attacks by instructing user agents to refuse plain HTTP for the host going forward.

    Read the full rule definition →

  • details

    The MCP `tools/list` call returned an array (possibly empty) rather than failing. This is a precondition for the rest of the tool-surface evaluation and a baseline indicator that the server speaks MCP correctly.

    Read the full rule definition →

  • The MCP `initialize` response includes a `protocolVersion`. Servers that omit it make safe client fallback impossible.

    Read the full rule definition →

  • details

    The `initialize` response includes a `serverInfo.name` so operators can recognize the implementation and cross-reference it with upstream advisories.

    Read the full rule definition →

  • details

    Every tool includes a non-empty `description`. Missing descriptions make capability review impossible without invoking the tool, which the scanner refuses to do.

    Read the full rule definition →

  • details

    The endpoint URL has no userinfo segment and no token-like keys (`token`, `api_key`, `apikey`, `access_token`, `refresh_token`, `password`, `secret`, `client_secret`) in its query string. Credentials in URLs leak through logs, Referer headers, browser history, and intermediary caches.

    Read the full rule definition →

  • When the protected resource metadata advertises one or more authorization servers, at least one of those issuers publishes a parseable RFC 8414 / OpenID Connect Discovery metadata document. This is what tells a client where to send the user, where to fetch tokens, and where to verify signatures.

    Read the full rule definition →

  • details

    The advertised authorization server metadata does not advertise the resource owner password credentials grant or the implicit grant. Both are flagged as insecure by RFC 9700 and by OAuth 2.1, and should not appear on a modern authorization server.

    Read the full rule definition →

Coverage & scope

What we did and did not look at.

Auth discovery

Passive scan — no `Authorization` header, no token exchange, no client registration. The scanner reads what the server publishes; it does not run an OAuth flow.
  • Requires auth?observed

    The MCP endpoint returned 401 or 403 to an unauthenticated request.

  • WWW-Authenticate observed?observed

    Server returned a Bearer challenge.

  • Protected resource metadata found?observed

    A `/.well-known/oauth-protected-resource` document parsed successfully.

  • Auth servers found?observed

    1 authorization server advertised by protected-resource metadata.

  • DCR discoverable?observed

    An authorization server advertised a `registration_endpoint` (RFC 7591). The scanner never POSTs to it — discoverability only.

  • Grant types observed?observed

    Authorization-server metadata advertised: authorization_code, refresh_token.

  • Token endpoint observed?observed

    Authorization-server metadata advertised a `token_endpoint`.

  • jwks_uri observed?observed

    Authorization-server metadata advertised a `jwks_uri`.

Scan coverage

coverage: full

Initialize, tools/list and most tool metadata were retrieved. The score is based on a complete protocol read.

What the probe got back

  • initializechecked

    Server responded to the initialize handshake.

  • protocolVersionchecked

    Server advertised an MCP protocol version.

  • serverInfochecked

    Server advertised serverInfo.name.

  • tools/listchecked

    Enumerated the advertised tool surface.

  • Tool countchecked

    8 tools advertised.

  • Tools with input schemapartial

    6 of 8 tools declare an input schema. 2 missing schemas.

  • Tools with descriptionchecked

    8 of 8 tools include a description.

Out of scope by design

  • tools/callnot checked by design

    Never invoked by design. AgentReserve does not execute tools — safety is a structural invariant of the probe client.

  • Authenticationout of scope

    Auth flows, token handling and permission boundaries were not exercised.

  • Source codeout of scope

    Server implementation, dependencies and supply chain were not audited.

  • Runtime behaviorout of scope

    No tool was executed, so side effects, latency, errors and rate limits were not observed.

What was not checked

What this report does not tell you

  • Inferred: tool risk is read from name, description and input schema only. A tool labelled read may still mutate state at call time, and a misleading description can fool the heuristic.
  • Not checked: no tool was invoked, so this report cannot confirm that any advertised capability actually works or behaves as described.
  • Not checked: authentication, authorization, rate limits and abuse controls were not exercised — they require credentials, which the scanner never sends.
  • Not checked: server implementation, dependencies and hosting were not inspected.
  • A passing report is not a guarantee of security. It is an automated triage signal based on what was Observed and Inferred within the coverage above.

History

How this server has scored over time.

Report timeline

  1. Sun, 26 Apr 2026 14:32:18 GMT78/100 (B)latestmethodology v2026-04-26-tlsscanner v0.42.0
  2. Sun, 12 Apr 2026 10:05:00 GMT71/100 (C)methodology v2026-04-26-tlsscanner v0.41.0
latestgenerated Sun, 26 Apr 2026 14:32:18 GMT
methodology v2026-04-26-tlsscanner v0.42.0
Scan another serverMethodologymethodology v2026-04-26-tls