MCP server
The Satia Remote MCP Server exposes a Satia workspace's full operational capabilities over the Model Context Protocol (MCP) Streamable HTTP (JSON-RPC 2.0) standard at /v2/mcp. It enables external engineering agents (Claude Code, Cursor, OpenAI Codex, Antigravity, Windsurf) to query, build, and operate inside Satia as first-class citizens.
1. Where to Find It in the Web Platform (/settings/mcp) & Security (satia_pat_...)
- Web Configuration Page (
/settings/mcp):- In the Satia web platform, users manage their MCP server access and view connection instructions at Settings > MCP (
/settings/mcp) (https://satia.so/settings/mcp). - From
/settings/mcp, each team member can generate, inspect, or revoke their own Personal Access Tokens (PAT).
- In the Satia web platform, users manage their MCP server access and view connection instructions at Settings > MCP (
- Token Format & Secure Storage (
satia_pat_...):- Keys use the
satia_pat_...prefix, and only their SHA-256 hash (key_hash) is stored inmcp_api_keys— never the plaintext token. - The token can be passed via
Authorization: Bearer satia_pat_...,X-Satia-Api-Key: satia_pat_..., or the?api_key=satia_pat_...query parameter.
- Keys use the
- Strict RBAC Inheritance & Per-Workspace Isolation (
caller_role = "mcp"):- Each
satia_pat_...token is scoped to a specific(Workspace, User)pair. If a user operates across multiple companies or branches in Satia, they can generate one token per Workspace at/settings/mcpand register them in their IDE as"satia-company-a","satia-company-b", etc. - The permission engine automatically enforces the exact same permissions that the user holds in the web UI: if the user is an
OwnerorAdmin, they have full workspace access; if they are aStaffmember, they can only read and modify the tables and modules granted inuser_tables(configured at/settings/team).
- Each
- Destructive Deletion Guardrail:
- Record deletion tools are disabled on the MCP server by design (
database__request_deleteis exclusive to interactive chat with on-screen human confirmation). To deactivate a record from MCP, update its status column (estado = 'cancelado'/'inactivo') or have the user confirm physical deletion in the Satia web UI.
- Record deletion tools are disabled on the MCP server by design (
- Mandatory Human Attribution (
user_prompt) & Shared Log with Sati:- All write and delegation tools on the MCP server require the
user_promptparameter containing the human instruction that triggered the action. - Every mutation is logged both in
platform_audit_logs(reason = "[MCP: <YourKeyName>] <user_prompt>"andprompted_by = <user_id>) and in Sati's conversation history ([MCP • <YourKeyName>]), so whenever the user opens Sati on the web or Mobile App, Sati has full context of what was built or modified from the external MCP client.
- All write and delegation tools on the MCP server require the
2. How to Configure MCP in Each Agent / IDE
Replace <YOUR_SATIA_PAT_TOKEN> with your key generated at Settings > MCP (/settings/mcp):
A. Antigravity (~/.gemini/antigravity/mcp_config.json) or Cursor (.cursor/mcp.json)
{
"mcpServers": {
"satia": {
"type": "http",
"url": "https://apigateway-production-2b07.up.railway.app/v2/mcp",
"headers": {
"Authorization": "Bearer <YOUR_SATIA_PAT_TOKEN>"
}
}
}
}
B. Claude Code (CLI or .mcp.json)
claude mcp add --transport http satia "https://apigateway-production-2b07.up.railway.app/v2/mcp" \
--header "Authorization: Bearer <YOUR_SATIA_PAT_TOKEN>"
C. OpenAI Codex (~/.codex/config.toml)
[mcp_servers.satia]
url = "https://apigateway-production-2b07.up.railway.app/v2/mcp"
http_headers = { "Authorization" = "Bearer <YOUR_SATIA_PAT_TOKEN>" }
3. Recommended Workflow for MCP Clients
- Load the Workspace Map on Session Start: Always call
workspace__get_context()first to retrieve the active Workspace metadata (business_name,business_type,country,timezone), business tables catalog, system tables, Satia Docs folder tree (knowledge_folders), transactional assistants (agents), channels, and internal staff directory. - Inspect Columns Before Querying or Mutating: Call
database__describe_tables(table_names=[...])before executingdatabase__query,database__insert, ordatabase__updateon any table whose columns you have not yet inspected. - Consult Manuals Before Building: Call
discovery__get_manual(topic=...)anddiscovery__get_ui_design_manual(category=...)before building automations (automation_scripts), custom views (custom_views), schedules (schedules), or channels (channels).
4. Complete Catalog of Tools Exposed on the MCP Server
| Category | Tool Name | Description |
|---|---|---|
| Context | workspace__get_context | Loads the unified workspace map: active workspace metadata (business_name, country, timezone), business tables catalog, system tables, Satia Docs folder tree, agents, and internal staff. |
| Documentation | discovery__get_manual | Retrieves any of Satia's official architecture and operational manuals by topic. |
| Documentation | discovery__search_docs | Searches across all official Satia manuals by keyword or question and returns ranked sections. |
| UI Design Docs | discovery__get_ui_design_manual | Retrieves specialized Custom Views manuals by branch (dashboards, forms, landing_pages, auth, embedded_agents, mobile); supports combining multiple categories in one call. |
| Database | database__describe_tables | Returns detailed column schemas, types, status options, relationships, and formulas for one or more tables. |
| Database | database__search | Performs a global keyword search across business tables and documents. |
| Database | database__query | Executes read-only SELECT SQL queries against business tables (by slug) and allowed system tables. |
| Database | database__inspect_text | Inspects long text/code columns (code_content, code, script_code, content, personality) with line numbers (start_line/end_line) or regex (search_pattern). |
| Database | database__insert | Inserts 1 to 50 records in batch into any business table or allowed system table (including custom_views, shared_view_links, and schedules, with automatic table_slug/view_slug/record_id resolution and idempotent upsert). |
| Database | database__update | Updates existing records filtered by where_conditions (including custom_views, shared_view_links, schedules, agents, knowledge_docs, etc.). |
| Database | database__patch_text | Applies surgical text patches (target_text → replacement_text) on view code (custom_views.code_content), Python scripts (automation_scripts.code, agent_tools.script_code), agent personalities (agents.personality), or documents (knowledge_docs.content). |
| Data Modeling | system_delegation__delegate_to_schema_builder | Delegates creation or modification of business tables, columns, relationships, and reactive formulas (formula / conditional ROLLUP) to the Satia Data Modeler. |
| Automations | automation__test_script | Executes and validates a Python script (satia_sdk) inside the isolated sandbox before saving. |
| Automations | automation__save_script | Saves or updates a script in automation_scripts (event, cron, webhook, manual, or is_channel_bridge) and registers required_secrets (configured by the user at /automations). |
| Store Tools | store__install_tool | Installs an official tool from the store_tools catalog onto a transactional agent. |
| Tasks & Chat | tasks__schedule_reminder | Schedules a future reminder in agent_tasks. |
| Tasks & Chat | tasks__delegate_to_agent | Assigns an immediate or deferred operational task to a transactional agent. |
| Tasks & Chat | agents__trigger_conversation | Wakes up a transactional agent to start or resume a conversation with a contact. |
| Tasks & Chat | messaging__send_direct_message | Sends an immediate Telegram message to an internal staff member (Staff / Owner). |
| Media | media__search_files / media__preview_file | Searches uploaded files and inspects their contents via multimodal AI analysis. |
| WhatsApp Templates | templates__list_templates / templates__create_template / templates__send_template / templates__get_docs | Lists, creates (subject to Meta approval), and sends official WhatsApp HSM templates; get_docs loads Meta's template creation rules. |
| Billing | billing__get_account_summary / billing__get_consumption_dossier | Queries wallet balance, Data Plan tier, recharge history, and consumption breakdown (managed in the web UI at /settings/billing). |
5. MCP Resources (resources/list & resources/read) & Public Documentation Endpoints
In addition to tools, the MCP server exposes all manuals as MCP Resources under the satia://docs/<topic> URI scheme (plus satia://skill/manual and satia://workspace/context), and serves public read-only HTTP endpoints:
GET /v2/mcp/skill→ Returns the mainSKILL.mdrouter skill in Markdown.GET /v2/mcp/manuals→ Returns the JSON catalog of all official manuals.GET /v2/mcp/manuals/{topic}→ Returns the Markdown content of any manual.GET /v2/mcp/llms.txtandGET /v2/mcp/llms-full.txt→ Standardllms.txtindex and full compiled documentation stream for LLMs.