JSONPad
Server Details
Build and run a JSONPad backend: lists, items, indexes, write rules, schema sync, history, flows.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 32 tools
Most tools target distinct resource+action pairs, but the four item-data writers (update_item with data, merge_item_data, patch_item_data, replace_item_data) plus delete_item_data overlap heavily. The descriptions do explicitly steer the agent (e.g. update_item points to merge/patch), which keeps mis-selection unlikely but not trivial.
Everything follows a clean snake_case verb_noun pattern (list_items, create_index, update_list, delete_event-style). Verbs are consistent and predictable across all 32 tools with no camelCase or stylistic drift.
At 32 tools this is very heavy, well past the 25 threshold. Although the domain (a database-as-a-service with schema sync, indexes, rules, events and stats) is genuinely rich, the surface is large enough to burden selection and navigation.
Coverage is thorough: full CRUD for lists, items and indexes, plus schema sync (plan/apply/export/move), events and versioning, restore, stats, token introspection, and rule testing/denial inspection. No obvious lifecycle gaps or dead ends.
Available Tools
32 toolsapply_schema_syncApply a schema syncADestructiveInspect
Create and update lists, indexes, write rules and flows to match a schema sync document. All or nothing: if any change would be refused, nothing is written and the plan says why. Run plan_schema_sync first and show the user the plan. With prune, it can also delete lists and indexes, so it needs confirmDestructive: true. Needs sync-schema plus the permission for each change; flows need a token that is allowed everything. Index builds it starts run in the background (wait_for_index). Suggest the user commits the document, so it can be deployed with jsonpad sync-schema. 1 request.
Inputs: document (required), prune, allowRebuild, allowDestructive, +1 more. Returns: applied, changes, summary
create_indexCreate an indexAInspect
Index a value in a list's items, to find items by it (alias), order, filter or search by it, or hide it from tokens (guard). The index is built in the background: until its buildStatus is ready, anything that uses it fails with INDEX_BUILDING. With wait: true this polls until it's built, at 1 metered request per poll (the result says how many). 1 request, plus the polls.
Inputs: list (required), pointer (required), pathName (required), name, +11 more. Returns: index, buildStatus
create_itemCreate an itemAInspect
Add an item to a list. The data is checked against the list's schema and its write rules (rule lookups cost 1 request per item they read). Strings in the data can be $jsonpad-var: variables, substituted when the item is saved, e.g. "$jsonpad-var:now", "$jsonpad-var:now(+5m)", "$jsonpad-var:uuid", "$jsonpad-var:random-integer(1, 100)" (see the docs for the rest). Returns the new item's metadata (and data with returnData) and its etag. 1 request.
Inputs: list (required), data, tags, version, +4 more. Returns: etag, item
create_listCreate a listAInspect
Create a list. To set up several lists with indexes and rules, a schema sync document (plan_schema_sync, apply_schema_sync) is usually better. Rules that don't compile, or whose tests fail, refuse the whole create, with diagnostics in details. 1 request.
Inputs: name, tags, rules, pinned, +9 more. Returns: list, ruleWarnings
delete_indexDelete an indexADestructiveInspect
Delete an index. Item data is untouched, but ordering, filtering, searching and alias lookups that used it stop working. Deleting a guard index makes its values readable by every token that can read the list, so that's refused unless confirmUnguard is true. 1 request (plus 1 to check for a guard, if the list hasn't been read with get_list).
Inputs: list (required), index (required), confirmUnguard. Returns: deleted
delete_itemDelete an itemADestructiveInspect
Delete an item. It can be brought back: list_events for the item with restorable: true finds its item-deleted event, and restore_item re-creates it with the same id. Pass the etag you read as ifMatch to delete only if nobody has changed it since. 1 request.
Inputs: item (required), list (required), ifMatch. Returns: deleted
delete_item_dataDelete part of an item's dataADestructiveInspect
Remove the value at a pointer from an item's data (an object field or an array element). To delete the whole item, use delete_item. Pass the etag you read as ifMatch. 1 request.
Inputs: item (required), list (required), pointer (required), ifMatch, +1 more. Returns: etag, item
delete_listDelete a listADestructiveInspect
Permanently delete a list, with all of its items and indexes. Unlike an item, a deleted list can't be restored. The list disappears at once (its pathName is free again) and its contents are purged in the background. A protected list that still has items is refused. Confirm with the user first. 1 request.
Inputs: list (required), confirm (required). Returns: list, deleted
export_schemaExport lists as a schema sync documentARead-onlyIdempotentInspect
The account's lists, their indexes and write rules (and, for a token that is allowed everything, its flows) as a schema sync document, keyed by pathName. The easiest way to start managing an existing account with schema sync. Filter by scope, tags or lists on big accounts. Needs the sync-schema permission, which alone is enough to read structure. 1 request.
Inputs: lists, scope, tagged. Returns: document, warnings
get_eventGet an eventARead-onlyIdempotentInspect
One event, with its snapshot: the state of the resource after it happened. This is how to read an item version too old to fetch with get_item's version. Guarded values are left out of snapshots, as they are from item data. 1 request.
Inputs: eventId (required), resource (required), item, list, +4 more. Returns: event
get_itemGet an itemARead-onlyIdempotentInspect
An item's metadata and data, or part of its data (pointer or path), at its current or an older version. Returns the etag to pass as ifMatch when writing a change based on what you read, and the guarded pointers whose values this token can't see. A version older than the plan keeps fails with ITEM_VERSION_NOT_RETAINED: read it from its event with get_event instead. 1 request, plus 1 the first time a list is used in a session (unless get_list was called).
Inputs: item (required), list (required), path, pointer, +3 more. Returns: data, etag, item
get_listGet a listARead-onlyIdempotentInspect
A list's metadata, JSON schema, flags, tags and itemCount, its write rules and rule tests (only for a token that can update the list), and its indexes with their buildStatus and a usage hint for each: what they sort, filter, search, alias or guard. The recommended first call before reading or writing an unfamiliar list. 2 requests (1 without indexes).
Inputs: list (required), includeIndexes. Returns: list, indexes
get_statsGet statsARead-onlyIdempotentInspect
Activity counts for a list, item, index or identity over the last days. List stats include how many writes the list's rules refused. 1 request.
Inputs: resource (required), days, item, list, +2 more. Returns: stats
get_token_infoGet the API token's permissions and usageARead-onlyIdempotentInspect
What this server's API token may do (its permission rules, without the token value), the plan's limits, and the account's usage this month (requestCount, requestsRemaining, credits, storageBytes, storageAllowance, degraded). Also checks the token works. Call it first when anything fails with an authentication or permission error, and before a large batch of writes. 1 request.
Inputs: no named parameters. Returns: plan, token, usage, server
list_eventsList eventsARead-onlyIdempotentInspect
A page of the history of a list, item, index or identity: what happened, when, and at which version, without snapshots (get_event has them). For an item, restorable: true lists only the events restore_item can go back to, including the item-deleted event of a deleted item; this is how to find restore points. 1 request.
Inputs: resource (required), item, list, page, +9 more. Returns: data, page, limit, pages, +3 more
list_indexesList a list's indexesARead-onlyIdempotentInspect
A page of a list's indexes, each with its buildStatus and a usage hint. Filter by pathName to find one index. get_list includes every index too. 1 request.
Inputs: list (required), name, page, alias, +9 more. Returns: data, page, limit, pages, +3 more
list_itemsList a list's itemsARead-onlyIdempotentInspect
A page of a list's items. Data is left out unless includeData (or path) is set. filters use the list's filtering indexes (get_list shows them), by pathName: string indexes match partially, number indexes take lt:, lte:, gt:, gte: (e.g. "gte:10"), date indexes take before: and after: (e.g. "before:2026-01-01"). order takes createdAt, updatedAt, alias, readonly, activated, or a sorting index's pathName. An index that is still building fails with INDEX_BUILDING. 1 request, plus 1 the first time a list's data is read in a session, to find its guard indexes (unless get_list was called).
Inputs: list (required), page, path, alias, +10 more. Returns: data, page, limit, pages, +3 more
list_listsList the listsARead-onlyIdempotentInspect
A page of the account's lists that this token can see, with their flags, tags and item counts. Schemas and write rules are left out: get_list has them. 1 request.
Inputs: name, page, limit, order, +9 more. Returns: data, page, limit, pages, +3 more
list_rule_denialsList writes a list's rules refusedARead-onlyIdempotentInspect
The last 50 writes the list's write rules refused, newest first: when, which operation, which identity and token, the stage (allow: no rule authorised it, 403; require: a check failed, 400), and the statement and line that refused it. A refusal can take a moment to appear. Replay one with test_list_rules to see why. The token needs update on the list. 1 request.
Inputs: list (required). Returns: denials
merge_item_dataMerge into an item's dataADestructiveInspect
Deep-merge a value into an item's data, or into the value at pointer: fields you don't mention are left alone, so this is the safe way to change some fields, including on lists with guard indexes. Arrays are concatenated, not replaced (use patch_item_data or replace_item_data at the array's pointer to replace one). Pass the etag you read as ifMatch. 1 request.
Inputs: item (required), list (required), data, ifMatch, +2 more. Returns: etag, item
move_listsMove lists between schema sync scopesADestructiveInspect
Move lists to another schema sync scope, assign unmanaged lists to one, or release them (scope: null), with the indexes the scope manages. Choose lists by id or pathName, or every list of fromScope (e.g. to rename a scope). All or nothing. dryRun defaults to true: show the user the plan, then call again with dryRun: false. Needs the sync-schema permission. 1 request.
Inputs: scope (required), lists, dryRun, fromScope. Returns: applied, changes
patch_item_dataPatch an item's dataADestructiveInspect
Apply JSON Patch (RFC 6902) operations to an item's data, or to the value at pointer (operation paths are then relative to it). Best for surgical edits: replacing an array element, removing a field, appending with path "/list/-". All operations apply, or none. Operations that write over a guarded value (or one of its parents) are refused unless overwriteGuarded is set, and the API refuses test, copy and move from guarded values. Pass the etag you read as ifMatch. 1 request.
Inputs: item (required), list (required), operations (required), ifMatch, +3 more. Returns: etag, item
plan_schema_syncPlan a schema syncARead-onlyIdempotentInspect
What applying a schema sync document would do, without changing anything: each list, index and flow it would create, update, adopt, delete or leave alone, field by field, with warnings and errors, and blockedBy if it would be refused. Always call this before apply_schema_sync, and show the user the plan. The document is checked against the sync document schema locally first, at no cost. Needs the sync-schema permission. 1 request.
Inputs: document (required), prune, allowRebuild, allowDestructive. Returns: applied, changes, summary
rebuild_indexRebuild a failed indexAInspect
Start a new build of an index whose last build failed, once the cause is fixed (failed builds are never retried by themselves). An index that isn't failed is refused with INDEX_BUILD_NOT_FAILED. With wait: true this polls until it's built, 1 request per poll. 1 request, plus the polls.
Inputs: list (required), index (required), wait. Returns: index, buildStatus
replace_item_dataReplace an item's dataADestructiveIdempotentInspect
Replace an item's whole data, or the value at pointer. On a list with guard indexes, a replace that covers a guarded value would delete it (this token can't see it), so it's refused unless overwriteGuarded is set: use merge_item_data, patch_item_data or a narrower pointer instead. Pass the etag you read as ifMatch. 1 request (plus 1 to find the list's guard indexes, the first time).
Inputs: item (required), list (required), data, ifMatch, +3 more. Returns: etag, item
restore_itemRestore an itemADestructiveInspect
Put an item back as it was at an event (item-created, item-updated, item-restored or item-deleted; find them with list_events and restorable: true), as a new version: its data, description, tags, readonly and activated. A deleted item is re-created with its original id (give it by id). Needs the token's restore permission; checked against the list's current schema and its write rules. Restoring twice makes two versions; restoring to the current version fails with ITEM_UNABLE_TO_RESTORE. 1 request.
Inputs: item (required), list (required), eventId (required), ifMatch, +1 more. Returns: etag, item
search_itemsSearch a listARead-onlyIdempotentInspect
Full-text search (BM25) over the values of a list's searching indexes; at most 10 results, best first. A list without a searching index always finds nothing. Tags aren't searched: filter by tag with list_items. 1 request.
Inputs: list (required), query (required), includeData, includeItems. Returns: results
test_list_rulesTest a write against a list's rulesARead-onlyIdempotentInspect
A dry run of one write against a list's write rules (or candidate rules), using the list's live data: whether it would be allowed, which statement decided, and what every statement evaluated to. Nothing is written. Describe the write with itemId (the existing item, for update, delete and restore) and new, patch or merge. The token needs update on the list. 1 request, plus 1 per item the rules look up. To check syntax and the stored tests without live data, the JSONPad docs server's check_write_rules costs nothing.
Inputs: list (required), action (required), new, now, +7 more. Returns: stage, allowed
update_indexUpdate an indexADestructiveIdempotentInspect
Change an index; fields left out are left as they are. A new pointer or valueType starts a rebuild (the index is unusable until it finishes). Turning alias on is refused if values aren't unique or are too long. Turning guard on hides existing values from token reads at once. 1 request.
Inputs: list (required), index (required), name, tags, +11 more. Returns: index
update_itemUpdate an itemADestructiveIdempotentInspect
Change an item's metadata (description, tags, version, readonly, activated) and, with data, replace all of its data. To change only some of the data, use merge_item_data or patch_item_data. On a list with guard indexes, replacing the whole data would delete the values this token can't see, so it's refused unless overwriteGuarded is set. Pass the etag you read as ifMatch. 1 request (plus 1 to find the list's guard indexes, the first time).
Inputs: item (required), list (required), data, tags, +7 more. Returns: etag, item
update_listUpdate a listADestructiveIdempotentInspect
Change a list's fields; fields left out are left as they are. A new schema doesn't re-check existing items, but applies to later writes and restores. New rules apply from the next write, and the stored tests must pass first; rules: null removes them. readonly: true blocks writes to the list, its items and its indexes. 1 request.
Inputs: list (required), name, tags, rules, +10 more. Returns: list, ruleWarnings
wait_for_indexWait for an index to buildARead-onlyIdempotentInspect
Poll an index until its build is ready or has failed. Every poll is a metered request (starting 1 second apart, slowing to 10 seconds); the result says how many were made. A failed build is an error; running out of time returns timedOut: true with buildStatus "building".
Inputs: list (required), index (required), timeoutSeconds. Returns: index, polls, buildStatus
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
JSONPad docs, API, SDK and CLI references, and offline checkers for write rules and flows.
The backend and back office for apps your AI writes: accounts, data, payments, content, real-time.
Butterbase MCP server — manage your backend: schemas, auth, functions, storage, RAG, deploys.
Deploy production REST APIs from JSON schemas in seconds. Manage projects, schemas, and deployments.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables task management with persistent SQLite storage, along with tools, resources, subscriptions, prompts, and completions over stdio or Streamable HTTP with per-user authentication.7 npmMIT
- AlicenseNot gradedqualityCmaintenanceA remote MCP server that lets a coding agent turn a plain-language idea into a real, shareable product — creating the project and data model, serving live API endpoints, deploying custom endpoints and server-side functions, and reading request and function logs. It handles sign-up, OAuth-backed access, and OpenAPI spec generation so people can open, sign into, and use the app the agent builds.MIT
- AlicenseAqualityCmaintenanceEnables building apps where humans edit through a GUI and LLMs edit the same JSON document via MCP, exposing each defined operation over both HTTP and MCP with revision-based conflict handling.721 npm1MIT
- FlicenseNot gradedqualityNot gradedmaintenanceEnables users to manage data in a simple JSON file database through MCP tools and REST API. Supports creating, reading, updating, and deleting items organized in collections with auto-generated UUIDs.-
Glama MCP Gateway
Add one secure layer between your agents and this server.