FUNCTION TOOLS · APPROVAL AND EFFECT WORKBENCH
Database tool: typed keys and bounded values
Edit real JSON arguments, inspect policy gates and watch an approved local function change a synthetic ledger.
Request being reviewed
Your experiment
Try batch_size values 0, 16 and 101. Inspect rejected values before applying a valid update, then read back the stored synthetic setting.
Each gate takes eight inspection seconds, or use Next gate. Only reaching the final stage applies the planned local effect. Restart preserves the ledger; Reset synthetic ledger clears this page’s fictional state.
Returned output
Inspect the synthetic ledger
This browser-only gateway uses six handcrafted functions, not an ADK/Gemini service implementation. No emails, calendar invitations, network requests, real files, database queries or arbitrary code are executed. Email recipients are restricted to example.test; virtual files are two allowlisted map keys; arithmetic uses named operators, never eval. Calendar intervals use one synthetic day and no time zones or recurrence. Search is literal matching over three fixture sentences. Approval, role rules, hooks and receipt storage are illustrative application policies, not production security controls. Redaction changes two output fields only and is not a privacy or compliance guarantee. The ledger is held in page memory and is lost on reload. Function-tool concepts · Action-confirmation concepts.
Treat generated arguments as an untrusted request
This gateway accepts a local JSON request and applies separate schema, hook, role, approval and idempotency gates before updating a synthetic ledger. The database tool is an in-memory object containing status and batch_size, not a SQL server. Its allowlist accepts get or set. Status may be draft or ready; batch_size must be an integer from one through one hundred. Unknown keys, unknown arguments and malformed JSON are rejected. A get operation must omit value. The diagram shows the earliest failed gate and marks later gates as not run rather than inventing a successful execution.
Configure the exact operation and its permissions
Function selects the local tool and replaces the request with its example. Example request loads valid, boundary or malformed input; JSON arguments then becomes authoritative. Choose Database map and use {"operation":"set","key":"batch_size","value":16}. Viewer cannot mutate the ledger. Operator permits mutation but does not automatically approve it. Approve exact payload binds approval to the selected tool and parsed arguments. Editing the request or another policy control clears approval; it must be reviewed again. Before-tool blocking refuses mutations. The after-tool redaction option applies only to email or file output and is unavailable for database results.
Test replay and conflicting intent
As operator, approve the valid database set and inspect all seven gates. The ledger changes batch_size from eight to sixteen and retains a receipt under the operation key. Restart the same approved run with receipt reuse enabled: the stored result is returned without a new effect. Change value to twenty, review and approve it, but keep the old key. The key belongs to a different payload, so the request is blocked and sixteen remains stored. Give the new intent a fresh key and approve it to permit the change. Disable receipt reuse only after a successful mutation to compare repeated execution; assigning the same value twice can look identical in the final database even though it is not the same execution policy.
Inspect playback and sandbox boundaries
Play run reveals seven gates over fifty-six seconds at normal speed. Pause holds the view, Next gate advances one stage, Restart inspection replans against the current ledger and Speed changes viewing pace. The synthetic effect is applied only when the final stage is inspected. Reset synthetic ledger restores the initial local data and removes approvals and receipts; it does not reset every input. Read-only get requests need neither mutation approval nor a mutation key under this stated policy. Receipt reuse is bounded to this in-memory session, with a fifty-receipt limit. There is no durable transaction, database authentication, SQL parser, external ADK tool invocation or production authorization service. Reloading the page loses the ledger. No request leaves the browser.