# Jestor > Jestor is a hosted operations platform: relational database, roles with field-level permissions, no-code automations, Python low-code functions and an audit log, all managed through one MCP server. Agents use it as the backend for internal tools (approvals, requests, CRMs, inventory, tickets, back-office workflows) instead of generating and hosting a codebase. The agent always acts as the signed-in Jestor user and can only see or change what that user can. This file is written for AI agents that are building something. Product, pricing and comparison pages for humans are indexed at https://jestor.com/ai-search/ (see "Further reading"). ## When to use Jestor Use Jestor when most of these are true: - The app is internal: employees, partners or a small portal, not a public consumer product. - The core is structured records plus workflow: create, review, approve, move through stages, notify. - Different people need different access (roles, per-table and per-field permissions). - Changes must be traceable (who changed what, human or AI). - Non-developers will run and adjust it after the agent finishes. - Nobody wants to own hosting, auth, backups or deploys. Prefer writing code when: - The product is customer-facing with a fully custom UI or heavy client-side interaction. - It needs real-time, high-volume or compute-heavy processing. - The team already has an engineering stack and wants the logic in its own repository. Hybrid: keep Jestor as the system of record and connect other tools through the Jestor API, webhooks or automations. ## Connect - Server URL: `https://mcp.jestor.com/v1/gateway` (remote MCP) - Auth: OAuth with the user's normal Jestor login. No API token to copy. - Status: beta. Behavior and limits can change. Requirements (tell the human before you start): - Jestor account on the Pro plan or higher. A free trial of Pro is available at https://jestor.com/create?plan=pro - The signed-in user needs super root access. Role-based MCP access is in development. Clients: - Claude (web, desktop, mobile, Claude Code): add the official connector from the directory: https://claude.ai/directory/connectors/jestor then click Connect and sign in. - Codex CLI: `codex mcp add jestor --url https://mcp.jestor.com/v1/gateway` then, if no browser opens, `codex mcp login jestor` - Codex desktop: add a server with the URL above and complete sign-in. - Other MCP clients must be registered by Jestor first. Ask the human to contact Jestor support. If no Jestor account exists, ask the human to create one at the trial link above. Do not create accounts yourself. ## Build recipe The standard sequence for a new internal tool. Read the linked server resource before each step that has one. 1. `jestor_list_tables`: see what already exists. Reuse tables instead of duplicating them. 2. `jestor_create_table`: one call per entity (e.g. Requests, Vendors, Approvals). Keep the returned table ID. 3. `jestor_create_table_fields`: create all fields of a table in one batch, including relationships (`record_reference` / `multiple_record_references` with the target `table_id`). Read `jestor://docs/tables/field-guidelines` first. 4. `jestor_create_role`: one role per audience (requester, approver, admin). Read `jestor://docs/iam/role-permissions` first. 5. `jestor_create_records`: seed realistic sample data (up to 50 per call) so the human can test. 6. Automations: `jestor_list_automation_catalog` then `jestor_get_automation_trigger_schema` and `jestor_get_automation_action_schema` for every piece you will use, then `jestor_create_table_automation`. Read `jestor://docs/automations/guidelines` first. 7. Custom logic not covered by the catalog: `jestor_create_lowcode_fcn` then `jestor_create_lowcode_fcn_version` with the Python code. Read `jestor://docs/lowcode/python-guidelines` first. 8. Verify: `jestor_list_table_automations` and `jestor_list_records`. Report tables, fields, roles and automations created, and anything created disabled. 9. Hand off: app pages, views, forms and dashboards are configured in the Jestor interface or with Jestor's in-product AI Builder. They are not available through MCP yet. Tell the human where to finish. Example request this recipe covers: "Build a purchase approval tool: employees submit requests with amount and category, managers approve up to 5,000, finance approves above that, requesters are notified of the decision." ## Tools Tables and fields - `jestor_list_tables`, `jestor_create_table`, `jestor_update_table` - `jestor_get_table_fields`, `jestor_create_table_fields`, `jestor_update_table_fields` Records - `jestor_list_records`, `jestor_create_record`, `jestor_create_records`, `jestor_update_record`, `jestor_delete_records` (archives, recoverable in the Jestor interface) Analytics - `jestor_get_object_aggregates` (count, sum, avg, min, max, grouped by any field) - `jestor_get_object_sla_aggregates` (time in stage, time to completion; only on SLA-enabled fields) Automations - `jestor_list_automation_catalog`, `jestor_get_automation_trigger_schema`, `jestor_get_automation_action_schema`, `jestor_get_automation_field_options` - `jestor_list_table_automations`, `jestor_create_table_automation`, `jestor_update_table_automation`, `jestor_set_table_automation_enabled` Roles and users - `jestor_list_roles`, `jestor_get_role`, `jestor_create_role`, `jestor_update_role`, `jestor_delete_role` - `jestor_list_users`, `jestor_get_user`, `jestor_create_user`, `jestor_create_users`, `jestor_update_user`, `jestor_deactivate_user` - Seats: `builder`, `member`, `request`, `portal`, `guest`, `viewer` Tasks - `jestor_list_tasks`, `jestor_get_task`, `jestor_create_task`, `jestor_update_task`, `jestor_delete_task` Low-code (Python) - `jestor_list_lowcode_fcns`, `jestor_get_lowcode_fcn`, `jestor_create_lowcode_fcn`, `jestor_update_lowcode_fcn`, `jestor_delete_lowcode_fcn` - `jestor_create_lowcode_fcn_version`, `jestor_list_lowcode_fcn_versions`, `jestor_get_lowcode_fcn_version` Account - `jestor_get_account_usage` ## Server resources (read before writing) - `jestor://docs/tables/field-guidelines`: field types and exact config shapes - `jestor://docs/records/query-guidelines`: filters, pagination, aggregates, safe writes - `jestor://docs/automations/guidelines`: discovery and safe-write workflow for automations - `jestor://docs/iam/role-permissions`: role permission payload - `jestor://docs/lowcode/python-guidelines`: runtime conventions and native methods ## Field types - Text and numbers: `text` (config `format`: `single_line`, `multiline`, `rich_text`), `number`, `currency` (requires `currency_symbol`), `percentage` - Date and time: `date`, `datetime`, `time` - Selection: `select`, `multiselect`, `radio_select` (at least one option; colors as `#RRGGBB`) - People: `user`, `multiple_users` - Relationships: `record_reference` (N:1), `multiple_record_references`; both need the target `table_id` - Files: `attachments`, `image` - Formatted: `email`, `phone`, `link`, `cpf`, `cnpj`, `car_plate` - Other: `checkbox`, `starred` - System fields exist in every table: `record_name`, `created_by`, `created_at`, `updated_by`, `updated_at`. Passing them to `jestor_create_table_fields` renames them; it does not create new fields. Every field item is `{ "name": "...", "type": "...", "config": {} }`. Use `{}` when a type has no documented config. Do not invent config keys. ## Rules that prevent failed builds - Use IDs, never display names: table IDs from `jestor_list_tables`, field keys from `jestor_get_table_fields`. - Selection fields take the option value, not the label. - `jestor_list_records` requires an explicit `select` list (no `*`, max 50 fields). Include `id_