Tool catalog

Every tool on the admin and user endpoints with what it does and the API it wraps, plus the typical build order.

Admin endpoint#

Collections and fields:

ToolPurpose
list_collectionslist collections (also on the user endpoint)
get_collection_schemafields, types, relationships of one collection (also on user)
create_collectioncreate a collection, optionally with an initial field set
apply_collectioncreate-or-update a collection with its fields, field-scoped picklist values and displayFieldName in one call, keyed on name (fields on fieldName); fields not named are left alone
update_collectiondisplay name, display field, description
delete_collectiondrop a collection and its records — irreversible
add_fieldadd a field; friendly type aliases, picklist and lookup payloads assembled for you
update_fieldmutable attributes (not type or name)
remove_fielddrop a field and its data

Picklists, rules and constraints:

ToolPurpose
list_picklists, get_picklistglobal picklists and values
create_picklist, apply_picklistcreate / create-or-update with values (prune deactivates)
apply_field_picklistcreate-or-update the values owned by one picklist field (add the field with picklistSourceType: "FIELD" first)
add_picklist_value, update_picklist_value, deactivate_picklist_value, delete_picklistvalue lifecycle
list_validation_rules, create_validation_rule, update_validation_rule, delete_validation_ruleformula error conditions
list_unique_constraints, create_unique_constraint, delete_unique_constraintcomposite unique constraints

User experience:

ToolPurpose
apply_layoutwhole page-layout tree, keyed on collection + name (create_layout is deprecated)
update_layout, delete_layoutlayout metadata / removal
list_listviews, create_listview, apply_listview, update_listview, delete_listviewshared list views; viewType/typeConfig on create, apply and update
apply_pagevalidate-then-upsert a page-builder page, keyed on path
apply_menuwhole app/menu tree, keyed on menu name and item labels
apply_dashboarddashboard and its components, keyed on name and component titles
validate_dashboardcheck a dashboard’s widget configs without writing (POST /api/dashboards/{id}/validate; name or id)
dashboard_datarun a dashboard’s widgets and return their data (POST /api/dashboards/{id}/data; name or id)

Automation and integration:

ToolPurpose
list_flows, create_flow, update_flow, delete_flowflow definitions (JSON state machines, runAsUserId)
import_api_specimport an OpenAPI 3 document into the API spec library
materialize_api_collectionturn a GET operation into an external collection

Metadata packages:

ToolPurpose
export_metadataexport the tenant’s metadata (optionally only the named collections and what hangs off them) and return the package JSON in the result (POST /api/packages/export)
diff_metadatapreview what a package would change, no writes (POST /api/packages/import/preview)
apply_metadatainstall a package: metadata, then seed records; dryRun, conflictMode skip/overwrite (POST /api/packages/import)

Data:

ToolPurpose
seed_recordsbulk-create records from plain attribute objects, resolving reference fields from a parent’s natural key (batches of 100 through /api/operations)

Plus ping.

User endpoint#

ToolPurpose
list_collections, get_collection_schemadiscovery
query_collectionlist/filter records (EQ NEQ GT GTE LT LTE CONTAINS STARTS ENDS ICONTAINS ISTARTS IENDS IEQ ISNULL IN; no OR)
get_recordone record by id
create_record, update_record, delete_recordsingle-record writes
bulk_applyatomic batch through /api/operations
searchcross-collection full-text search
semantic_searchvector search on a collection with a VECTOR field
describe_apithe tenant’s OpenAPI document (collection CRUD only)
execute_flowstart a flow (input is double-wrapped)
get_flow_runstatus of an execution, optionally with steps
submit_for_approval, list_approvalsapprovals
list_notificationsyour own in-app notifications, newest first; unreadOnly, pageSize, pageNumber; meta.unreadCount is your unread total (GET /api/me/notifications)
mark_notification_readmark one of your notifications read by id (POST /api/me/notifications/{id}/read)
ping

Conventions#

  • Arguments are friendly camelCase; the tool boundary translates to the platform’s native JSON:API shape (uppercase enums, kebab-case collection names). Pass names as list_collections returns them.
  • Collections and picklists may be addressed by name or UUID.
  • Every create_*/update_* wraps one REST call; apply_* tools are create-or-update.
  • Destructive tools are annotated destructiveHint: true.

Typical build order#

apply_collection (or create_collection → add_field → apply_field_picklist) → create_validation_rule / create_unique_constraint → apply_layout → apply_listview → apply_menu → apply_page → create_flow → apply_dashboard → seed_records. To build in a sandbox, start the bridge with kelta mcp serve --tenant <sandbox-slug> --token-env <VAR> (coverage map). The tutorial walks through it.

Edit this page on GitHub