Sentinel MCP demonstrates solid tool design with clear, action-oriented naming (get_*, list_*) and well-written descriptions (avg 150-180 chars, within baseline 194). All 7 tools have descriptions explaining WHAT they do and WHEN to use them. Input schemas are present with type definitions and parameter descriptions. However, output schemas are not documented in the source code provided, and error handling guidance is absent. Tools are read-only (low risk), but lack recovery hints for failure cases. No tool annotations (readOnlyHint) despite all being safe operations.
Recent redux actions on the running page with what each changed in state (deep diff paths). Call this to see which action wrote which part of the state.
Inspect the props a React component actually received on the running page. Give `name` to see every mounted instance of that component with its current props and render count; omit `name` to list all captured components. Call this when redux state looks correct but a component renders wrong, or to see props that never touch redux (local/computed/context props).
Find API requests issued more than once on the running page, including server+client double-fetches. Call this when investigating wasted or redundant network traffic.
Trace where a runtime value comes from in the running app: state path ← redux action ← API request. Query matches state paths (e.g. 'price') and values (e.g. '1299'). Call this when the user asks why a value on the page looks wrong or where it comes from.
Inspect the running app's redux state. Give `path` for an exact value, `query` to search paths/values, or neither for a top-level summary. Call this to see what the state actually holds right now.
Output schemas not documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure (e.g., what fields does get_state return? Is it paginated?). This violates pattern:tool and pattern:response-shaper.
No error handling guidance. Tools lack recovery hints (e.g., 'If tab not found, call list_tabs() first'). Errors will not guide LLM to self-correct. Violates pattern:recovery-guide.
No tool annotations. All 7 tools are read-only (safe), but lack readOnlyHint annotation. This prevents clients from optimizing caching or parallelization. Violates current spec (2026-07-28) tool annotations pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
List every API request the running page made (server-side render + client), with method, URL, status, duration and origin. Call this to see what the page fetched and how long requests took.
List browser tabs currently connected to sentinel-mcp.
Parameter 'tab_id' defaults to 'last active tab' but this is implicit. No enum of valid tab IDs provided, forcing LLM to call list_tabs() first. Consider returning available tab_ids in list_tabs response to enable chaining.
get_state accepts both 'path' and 'query' parameters but no guidance on mutual exclusivity or precedence. If both provided, which takes priority? Violates pattern:param-relationships.