mcp-proof / effect evidence
| Check | Level | Result | Details |
|---|---|---|---|
| EFF-01 | MUST | – SKIP | readOnlyHint is honoured (no observed external write) no exercised tool declared readOnlyHint=true |
| EFF-02 | MUST | ✓ PASS | observed deletes are consistent with destructiveHint (explicit false contradicted ⇒ fail; unset ⇒ spec default true) all 1 observed deleted object(s) consistent with declared/default destructive semantics: 1 call(s) from tools leaving destructiveHint unset (spec default: true — hosts must already treat them as destructive) |
| EFF-03 | SHOULD | – SKIP | idempotentHint is honoured (a repeated identical call is a no-op) no idempotentHint-annotated (non-readOnly) tool was called twice with identical arguments |
| EFF-06 | SHOULD | – SKIP | created authority does not outlive its authorizing grant no created authority-bearing object to assess |
Declared annotations beside the effect an independent observer saw, the response a response-only auditor would have read, the objects that resulted, and the probe's authority / dependency verdict.
| Call | Declared | Observed effect | Response seen | Objects / persistence | Authority (probed) | Lineage |
|---|---|---|---|---|---|---|
create_table {"query": "CREATE TABLE items (id INTEGER PRIMARY KEY, name TEXT, qty INTEGER)"} | — | none observed no external object changed between before/after snapshots | { "success": true, "message": "Table created successf… | — — | not authority observed no object created | by: — needs: — |
write_query {"query": "INSERT INTO items (name, qty) VALUES ('anvil', 3)"} | — | create observed observed 1 change(s): create items/1 | { "affected_rows": 1 } | create items/1 persistent | unknown unknown probe inconclusive | by: — needs: — |
write_query {"query": "INSERT INTO items (name, qty) VALUES ('rope', 10)"} | — | create observed observed 1 change(s): create items/2 | { "affected_rows": 1 } | create items/2 ephemeral | unknown unknown probe inconclusive | by: — needs: — |
read_query {"query": "SELECT * FROM items ORDER BY id"} | — | none observed no external object changed between before/after snapshots | [ { "id": 1, "name": "anvil", "qty": 3 },… | — — | not authority observed no object created | by: — needs: — |
list_tables {} | — | none observed no external object changed between before/after snapshots | [ "items" ] | — — | not authority observed no object created | by: — needs: — |
describe_table {"table_name": "items"} | — | none observed no external object changed between before/after snapshots | [ { "name": "id", "type": "INTEGER", "notnu… | — — | not authority observed no object created | by: — needs: — |
write_query {"query": "UPDATE items SET qty = 4 WHERE name = 'anvil'"} | — | update observed observed 1 change(s): update items/1 | { "affected_rows": 1 } | update items/1 — | not authority observed call created no object to bear authority | by: — needs: — |
write_query {"query": "DELETE FROM items WHERE name = 'rope'"} | — | delete observed observed 1 change(s): delete items/2 | { "affected_rows": 1 } | delete items/2 — | not authority observed call created no object to bear authority | by: — needs: — |
append_insight {"insight": "rope stock was removed"} | — | create observed observed 1 change(s): create mcp_insights/1 | { "success": true, "message": "Insight added" } | create mcp_insights/1 persistent | unknown unknown probe inconclusive | by: — needs: — |
list_insights {} | — | none observed no external object changed between before/after snapshots | [ { "id": 1, "insight": "rope stock was removed… | — — | not authority observed no object created | by: — needs: — |