Skip to main content
Glama

sqlite_database

Query or update a private Android SQLite database without a sqlite3 binary by copying DB/WAL/SHM, running parameterized SQL, and returning bounded rows or base64 BLOBs.

Instructions

Query a private SQLite DB without a phone sqlite3 binary; copies DB+WAL+SHM, parameterized SQL, BLOB base64 and bounded rows. write=true requires package+stop_app=true; backs up sidecars and installs an atomic checkpointed DB, leaving app stopped. Live reads are best effort. SQLCipher needs its own engine/key.

Input Schema

NameRequiredDescriptionDefault
sqlNo
writeNo
packageNo
databaseYes
max_rowsNo
stop_appNo
parametersNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations supplied, the description carries the burden and delivers real operational detail: it copies DB+WAL+SHM rather than touching the live file, backs up sidecars, installs an atomic checkpointed DB, leaves the app stopped, and returns BLOBs as base64 with bounded rows. It still omits whether root is required, whether the app is restarted afterwards, and how the pre-write backup is restored, which keeps it off a 5.

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?

Front-loaded with the core capability, then semicolon-delimited clauses each carrying distinct information; nothing is redundant. It is telegraphic to the point of being slightly cryptic in places ('bounded rows', 'sidecars'), but no sentence is wasted.

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?

For a complex seven-parameter tool with a write path that alters app state, the description covers the pipeline, the write prerequisites, and known limitations, and an output schema exists so return values need not be explained. The remaining gap is argument shape rather than behavior, so it is close to complete.

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 0%, so all seven parameters rely on the description, which does add meaning for several: 'parameterized SQL' covers sql/parameters, 'bounded rows' maps to max_rows, and 'write=true requires package+stop_app=true' explains a three-parameter interaction. But it never says what format `database` takes (absolute path? package-relative?), what the max_rows ceiling or default behavior is, or what `parameters` accepts positionally, leaving material gaps.

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?

Opens with a specific verb+resource pair ('Query a private SQLite DB') and immediately states a distinguishing constraint (no phone sqlite3 binary required), which tells an agent this is an in-process query path rather than a shell invocation. It does not name any of the many sibling data tools (inspect_app_data, shared_preferences, content_provider) to differentiate, so the routing value stops short of a 5.

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

Usage Guidelines3/5

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

Gives strong conditional prerequisites for the write path ('write=true requires package+stop_app=true') and an exclusion ('SQLCipher needs its own engine/key'), plus a quality caveat ('Live reads are best effort'). However it never states when to pick this tool over sibling data-access tools, so the agent must infer the choice from the tool list.

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