# X_MCP_QUERY_REJECTED

## Means

`db.query` was not given one read-only statement

## Typical cause

empty input, a batch, a non-read leading keyword, a mutating keyword anywhere at statement level (including a data-modifying CTE), a locking clause (`FOR UPDATE`/`FOR SHARE`), `EXPLAIN ANALYZE`, or a call from a banned function family matched by prefix (`pg_read_*`, `pg_ls_*`, `lo_*`, `dblink`, `pg_advisory_*`, `pg_sleep*`, `set_config`, …)

## Fix

send exactly one **read-only** `SELECT`/`WITH`/`EXPLAIN`/`SHOW`/`TABLE`/`VALUES` statement. `db.query` has no write path at all: change data by calling an action exposed with `mcp: { expose: true }`, and change schema with `db.migrate` after `x db branch create <name>`

[MCP and AI](/error-codes#mcp-and-ai)
