Skip to main content
Glama
andresolbach

nodriver-mcp-server

Inspect page storage

inspect_storage
Read-only

Inspect a page origin's browser storage to detect exposed credentials and JWTs, covering localStorage, sessionStorage, IndexedDB, cache, service workers, and quota usage.

Instructions

Everything the selected page's origin keeps in the browser: localStorage, sessionStorage, IndexedDB, Cache Storage, service workers and quota usage.

Flags values that look like credentials — by key name, JWT shape or a "Bearer" prefix, also inside JSON values — because anything in web storage is readable by every script on the origin. JWTs are decoded (algorithm, expiry, claims; the signature is not checked).

Read through DevTools, not page JavaScript, except for the list of service worker registrations. IndexedDB and Cache Storage are listed with their sizes, not dumped; use evaluate_script to read records.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
browserNoWhich browser to act on. Each name is an independent Chrome, created on first use. Omit for the shared default; parallel agents each need their own name.default
reveal_valuesNoPrint values that look like credentials in full (up to 120 characters). Default false shows their first characters and length only.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.5.0

TDQS

A4.7/5.0
Behavior5/5

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

Even with readOnlyHint=true and destructiveHint=false in annotations, the description adds substantial behavioral context: credential-looking values are flagged, JWTs are decoded without signature verification, reading happens via DevTools rather than page JavaScript, and IndexedDB/Cache are only listed with sizes rather than dumped. This goes well beyond what annotations alone convey.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: scope, security warning, JWT behavior, read mechanism, and limitations. It is front-loaded with the core purpose and avoids unnecessary filler.

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

Completeness5/5

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

For a tool with two optional parameters, full schema coverage, an output schema, and safety annotations, the description covers all essential behavioral aspects: what is inspected, how values are handled, what is not dumped, and how to get full records. No critical gap remains for an agent deciding whether and how to call it.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by tying reveal_values to the credential-flagging behavior and by clarifying that redaction shows first characters and length by default. The browser parameter is already well documented in the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Everything the selected page's origin keeps in the browser') and enumerates exactly which storage types are covered: localStorage, sessionStorage, IndexedDB, Cache Storage, service workers, and quota usage. This clearly distinguishes it from narrower siblings like get_local_storage.

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?

It gives explicit context that reading is done through DevTools, not page JavaScript, with one named exception. It also provides a clear alternative for a specific case: 'use evaluate_script to read records' for IndexedDB and Cache Storage contents. It does not explicitly contrast with get_local_storage, but the scope statement makes the distinction clear.

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