Skip to main content
Glama

tide_doctor

Read-only

FIND AND FIX WHAT IS WRONG WITH A TIDE APP, IN ONE COMMAND. Returns the command that checks an app for the faults behind most broken logins and unprotected APIs. It REPAIRS the mechanical ones itself (re-copies the DPoP page byte-exact, corrects a wrong rewrite path, gitignores .env) and prints the exact fix for the rest, which YOU apply — do not pass the list to the user. Covers: DPoP page missing/stale/served without its headers, useDPoP passed as a JSX prop (silently OFF), createTideCloakProxy called without protectedRoutes (protects nothing), adapter without its embedded key, remote JWKS, Bearer-only token parsing, no server-side verification, secrets about to be committed, a destructive change request pending. CALL THIS after scaffolding or changing auth code, BEFORE telling the user it works, and FIRST whenever a login or an API check misbehaves. This tool call itself only returns the command.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "tide_doctor"
  }
}

Input Schema

NameRequiredDescriptionDefault
realmNoRealm name. Adds read-only realm checks (needs the admin password in .env).
appDirNoApp directory. Default: the current directory.
appUrlNoURL of the RUNNING app, e.g. http://localhost:3000. Adds checks of what is actually served.
checkOnlyNoReport only and change nothing (for CI). Default false: mechanical faults are repaired.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / additionalProperties
      Removed value: -false
  2. Added

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description resolves what would otherwise look like a contradiction with readOnlyHint=true: it states plainly that the call only returns a command and that the command performs the repairs, and it discloses the checkOnly/CI path and the .env admin-password prerequisite for realm checks. It adds real context beyond the annotations, though it could be clearer about what the emitted command prints or how destructive the repairs are.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the return-a-command caveat are front-loaded in the first two sentences, and the trigger conditions sit at the end where they are easy to scan. The fault enumeration is long but each item is a distinct, checkable symptom, so it earns its space; the density and all-caps emphasis are the only costs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All four params are described, no output schema exists and none is needed since the tool returns a command, and the description tells the agent to apply fixes itself rather than forward the list. What remains thin is what the returned command actually outputs on success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (realm, appDir, appUrl, checkOnly) are already documented in the schema. The description adds no parameter-level detail such as the effect of appUrl on coverage or how checkOnly interacts with the repair claim, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb pair (find and fix) plus a named resource (a Tide app), followed by an enumeration of the concrete fault classes covered (DPoP page, protectedRoutes, JWKS, secrets). An agent can tell this apart from narrower siblings like tide_dpop_asset or tide_gaps by the coverage list, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit triggers are given: after scaffolding or changing auth code, before telling the user it works, and first when a login or API check misbehaves. Strong when-to-use guidance, but it never names an alternative tool (e.g. tide_gaps, tide_security_analysis) or a when-not-to-use condition, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.