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_...)

  1. 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).
  2. Token Format & Secure Storage (satia_pat_...):
    • Keys use the satia_pat_... prefix, and only their SHA-256 hash (key_hash) is stored in mcp_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.
  3. 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/mcp and 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 Owner or Admin, they have full workspace access; if they are a Staff member, they can only read and modify the tables and modules granted in user_tables (configured at /settings/team).
  4. Destructive Deletion Guardrail:
    • Record deletion tools are disabled on the MCP server by design (database__request_delete is 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.
  5. Mandatory Human Attribution (user_prompt) & Shared Log with Sati:
    • All write and delegation tools on the MCP server require the user_prompt parameter containing the human instruction that triggered the action.
    • Every mutation is logged both in platform_audit_logs (reason = "[MCP: <YourKeyName>] <user_prompt>" and prompted_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.

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

  1. 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.
  2. Inspect Columns Before Querying or Mutating: Call database__describe_tables(table_names=[...]) before executing database__query, database__insert, or database__update on any table whose columns you have not yet inspected.
  3. Consult Manuals Before Building: Call discovery__get_manual(topic=...) and discovery__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

CategoryTool NameDescription
Contextworkspace__get_contextLoads the unified workspace map: active workspace metadata (business_name, country, timezone), business tables catalog, system tables, Satia Docs folder tree, agents, and internal staff.
Documentationdiscovery__get_manualRetrieves any of Satia's official architecture and operational manuals by topic.
Documentationdiscovery__search_docsSearches across all official Satia manuals by keyword or question and returns ranked sections.
UI Design Docsdiscovery__get_ui_design_manualRetrieves specialized Custom Views manuals by branch (dashboards, forms, landing_pages, auth, embedded_agents, mobile); supports combining multiple categories in one call.
Databasedatabase__describe_tablesReturns detailed column schemas, types, status options, relationships, and formulas for one or more tables.
Databasedatabase__searchPerforms a global keyword search across business tables and documents.
Databasedatabase__queryExecutes read-only SELECT SQL queries against business tables (by slug) and allowed system tables.
Databasedatabase__inspect_textInspects long text/code columns (code_content, code, script_code, content, personality) with line numbers (start_line/end_line) or regex (search_pattern).
Databasedatabase__insertInserts 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).
Databasedatabase__updateUpdates existing records filtered by where_conditions (including custom_views, shared_view_links, schedules, agents, knowledge_docs, etc.).
Databasedatabase__patch_textApplies 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 Modelingsystem_delegation__delegate_to_schema_builderDelegates creation or modification of business tables, columns, relationships, and reactive formulas (formula / conditional ROLLUP) to the Satia Data Modeler.
Automationsautomation__test_scriptExecutes and validates a Python script (satia_sdk) inside the isolated sandbox before saving.
Automationsautomation__save_scriptSaves 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 Toolsstore__install_toolInstalls an official tool from the store_tools catalog onto a transactional agent.
Tasks & Chattasks__schedule_reminderSchedules a future reminder in agent_tasks.
Tasks & Chattasks__delegate_to_agentAssigns an immediate or deferred operational task to a transactional agent.
Tasks & Chatagents__trigger_conversationWakes up a transactional agent to start or resume a conversation with a contact.
Tasks & Chatmessaging__send_direct_messageSends an immediate Telegram message to an internal staff member (Staff / Owner).
Mediamedia__search_files / media__preview_fileSearches uploaded files and inspects their contents via multimodal AI analysis.
WhatsApp Templatestemplates__list_templates / templates__create_template / templates__send_template / templates__get_docsLists, creates (subject to Meta approval), and sends official WhatsApp HSM templates; get_docs loads Meta's template creation rules.
Billingbilling__get_account_summary / billing__get_consumption_dossierQueries 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 main SKILL.md router 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.txt and GET /v2/mcp/llms-full.txt → Standard llms.txt index and full compiled documentation stream for LLMs.