Developers and API

The field service platform that is open by design

Get your own custom field service management within a day. Tailored to your workflows. Every record, screen and workflow is yours, and every one of them can be reached by your AI agent, your systems or your own code: a REST API, an MCP server, webhooks in and out, automations, public forms, apps as JSON and read-only SQL.

Short answer

How do I connect an AI agent to Fieldproxy?

Add Fieldproxy's MCP server to the agent. An administrator switches on AI assistant access, you use your workspace's MCP address (https://<api-host>/mcp, for example https://api-india-1.fieldproxy.ai/mcp; it is shown in Settings, AI assistant when you create a key), and either sign in with OAuth from the client or create a key under Settings, AI assistant, New key and send it as Authorization: Bearer fpmcp.…. The agent calls describe_schema to see your tables and starts working. Every change it makes is proposed, confirmed by a person and undoable. API and MCP access are included on every plan.

Ways to connect

Ten ways in and out, none of them locked

Pick the one that fits the job. Most teams use two or three: the REST API for their own systems, the MCP server for AI, webhooks for events, and public forms for customers.

REST API

Your own systems read and write the workspace's data over HTTPS: POST /api/read, /api/insert (plus CSV import), /api/update and /api/delete on the workspace's regional API base. Writes fire the workspace's automations.
Learn more

MCP server

An official Model Context Protocol server over HTTP at https://<api-host>/mcp (for example https://api-india-1.fieldproxy.ai/mcp), with 170+ built-in tools. Claude, ChatGPT, Microsoft 365 Copilot and Teams (through Copilot Studio), GitHub Copilot, Cursor, OpenAI Codex, Claude Code and any other MCP client can read the workspace, run read-only SQL, propose changes, draft messages, run automations and build apps.
Learn more

Read-only SQL

describe_schema lists every table and column the connection may read; run_sql runs one SELECT against the workspace's own Postgres database (up to 500 rows, 5-second limit). export_csv saves up to 10,000 rows as a CSV link.
Learn more

Webhooks in and out

In: an automation with a webhook trigger gets its own URL; any system POSTs JSON to it and the steps read {{trigger.body.field}}. Out: http_request (any method, headers, JSON or file body), send_webhook (HMAC-SHA256 signed), call_integration and db_sync, plus send_email, send_sms and place_call.
Learn more

Automations API

Rules are JSON: a trigger (15 types, from record events and cron to SLA timers, zones and GPS arrival) and a list of steps (about 50 types). Create, validate, dry-run, enable, run, retry and restore versions.
Learn more

Public forms and links

Open forms anyone can fill in, record links for one customer's quote, job or invoice (with signatures and Stripe payments), no-login customer portals, and lookup pages. Links can expire, be capped and be revoked.
Learn more

Portal users

Customers, contractors and partners sign in with their own email and password to one web app and see only their own records, enforced by Postgres row security.
Learn more

Apps as JSON

Every screen of the web and mobile apps is JSON: views, widgets, actions and the SQL behind them. Read, edit, validate, render, publish and roll back versions through MCP.
Learn more

Voice and text agents

Phone agents and SMS or email agents that answer customers from live data, configured as JSON with instructions, allowed tables, tools, hours and a knowledge base, and tested in a simulator.
Learn more

Import and export

Import CSV or Excel into any table (up to 1,000 rows per MCP import, dry-run first), and export CSV or Excel from any screen or query.
Learn more

Quickstart

Connect an AI agent in two minutes

Works with Claude, ChatGPT, Copilot, Cursor, Codex and any MCP client, with 170+ built-in tools. The examples use the India host, https://api-india-1.fieldproxy.ai/mcp; US East is https://api-us-east-1.fieldproxy.ai/mcp. Your workspace's address is shown in Settings, AI assistant when you create a key.

Claude Code

terminal
claude mcp add --transport http fieldproxy https://api-india-1.fieldproxy.ai/mcp \
  --header "Authorization: Bearer fpmcp.YOUR_KEY"

OpenAI Codex

terminal
export FIELDPROXY_MCP_KEY=fpmcp.YOUR_KEY
codex mcp add fieldproxy --url https://api-india-1.fieldproxy.ai/mcp --bearer-token-env-var FIELDPROXY_MCP_KEY

Any MCP client that takes a URL and headers

mcp.json
{
  "mcpServers": {
    "fieldproxy": {
      "url": "https://api-india-1.fieldproxy.ai/mcp",
      "headers": { "Authorization": "Bearer fpmcp.YOUR_KEY" }
    }
  }
}

Then ask

prompt
Call describe_schema, then tell me which jobs were completed last week
with no invoice, grouped by technician.

Claude, ChatGPT and Copilot Studio connect with OAuth instead of a key: step-by-step guides for Claude, ChatGPT and Microsoft 365 Copilot.

Quickstart

Read and write data over REST

Create a key per system in Settings, Security, API keys: pick an expiry, the operations it may use (read, insert, update, delete) and, if you like, only some tables. Send it in the x-api-key header. Writes fire your automations.

find your API base
# Find your workspace's regional API base
curl -X POST https://api.fieldproxy.ai/auth/org \
  -H "content-type: application/json" \
  -d '{"orgid": "<workspace-id>"}'
# => settings.url, for example https://api-india-1.fieldproxy.ai
read rows
curl -X POST https://api-india-1.fieldproxy.ai/api/read \
  -H "x-api-key: $FIELDPROXY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"tableName": "your_table", "condition": {"id": 1}}'
# Reads the rows matching condition from one table

Endpoints, keys and automation behaviour: REST API reference and openapi.json.

Quickstart

Send data in with a webhook

Save an automation with a webhook trigger, switch it on, and POST to its URL from your website, CRM or any other system.

The rule

automation rule
{
  "name": "Website request to service request",
  "enabled": true,
  "trigger_type": "webhook",
  "trigger_config": { "secret": "<your-shared-secret>" },
  "action_spec": {
    "steps": [
      { "type": "create_record", "table": "service_requests",
        "values": {
          "contact_name": "{{trigger.body.name}}",
          "phone": "{{trigger.body.phone}}",
          "description": "{{trigger.body.issue}}",
          "status": "new"
        } }
    ]
  }
}

The call

curl
curl -X POST "https://<api-host>/automation/hooks/<workspace-id>/<rule-id>" \
  -H "Content-Type: application/json" \
  -H "x-automation-secret: <your-shared-secret>" \
  -d '{"name": "Dana Lee", "phone": "+15550100", "issue": "No cooling, unit 4B"}'

# => 202 {"accepted": true}   (the rule runs in the background)

<api-host>is your workspace's regional API host, given during setup.

Quickstart

Get told when something happens

Rules fire on record events, status changes, schedules, SLA timers, service zones and GPS arrival. send_webhook signs every delivery so you can verify it came from Fieldproxy.

automation rule
{
  "name": "Tell our ERP when a job is completed",
  "enabled": true,
  "trigger_type": "status_transition",
  "trigger_config": { "table": "jobs", "field": "status", "to": "completed" },
  "action_spec": {
    "steps": [
      { "type": "send_webhook",
        "url": "https://erp.example.com/hooks/fieldproxy",
        "secret": "{{secrets.ERP_WEBHOOK_KEY}}",
        "body": { "event": "job.completed", "job_id": "{{trigger.row.id}}" } }
    ]
  }
}
verify the signature
// Node.js: verify a Fieldproxy send_webhook delivery
import crypto from "node:crypto"

function verify(rawBody, header, secret, toleranceSec = 300) {
  // header: "t=<unix>,v1=<hex>"
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")))
  const expected = crypto.createHmac("sha256", secret)
    .update(`${parts.t}.${rawBody}`).digest("hex")
  const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) < toleranceSec
  return fresh && crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1))
}

Want it connected to your own systems on the call?

Get Demo

Open, not reckless

An agent can do the work. A person signs it off.

  1. Propose

    Every write, send and build is a dry run first: rows affected, before and after values, a pending_id.
  2. Confirm

    Nothing is saved until a person agrees and confirm_write runs. Over 5 rows needs bulk permission; over 1,000 is refused.
  3. Undo

    Every applied write returns an undo_id. Builds save as drafts, new automations and agents save switched off, and every call is logged.
propose, confirm, undo
// 1. The agent proposes; nothing is saved
propose_write({
  "summary": "Mark job 1042 as completed",
  "sql": "UPDATE jobs SET status = 'completed' WHERE id = 1042"
})
// => rows it would affect, sample before -> after values, and a pending_id

// 2. A person agrees, then the agent applies it
confirm_write({ "pending_id": <pending_id> })
// => the rows changed and an undo_id

// 3. Changed your mind?
undo_write({ "undo_id": <undo_id> })

Reference

Developer docs

REST API

Read, insert, update and delete workspace data over HTTPS with an x-api-key: per-system keys with an expiry, operation scopes and an optional table allowlist. REST writes fire automations.
Learn more

Authentication and keys

How AI clients and integrations sign in to Fieldproxy: OAuth sign-in or fpmcp keys made in Settings, AI assistant, with scopes, row and column limits, expiry and revoke.
Learn more

MCP tools reference

Every built-in tool on Fieldproxy's MCP server, grouped by area, with what each does and which scope it needs.
Learn more

Data model

How field service data is stored in Fieldproxy: a Postgres database per workspace with customers, locations, jobs, technicians, quotes, invoices and your own tables.
Learn more

Webhooks and automations

Fieldproxy automation rules: trigger types including inbound webhooks, and step types including outbound HTTP requests, email, SMS and phone calls.
Learn more

Public forms and links

Open forms, record links, customer portals and lookup pages that people outside the company use without a login, and how they are published and linked.
Learn more

Apps as JSON

Every Fieldproxy screen is JSON: views, widgets, actions and SQL, rendered on web and mobile, versioned with drafts, publish and rollback.
Learn more

Voice and text agents

Fieldproxy's phone, SMS and email AI agents: configuration, tools, the confirm gate, the simulator and conversation logs.
Learn more

Limits and safety

Read-only SQL limits, propose-confirm-undo, bulk limits, send limits, approvals, sandboxes and audit logging on Fieldproxy's API surfaces.
Learn more

For AI agents and LLMs: /developers/llms.txt and the machine-readable /developers/capabilities.json. Facts checked October 18, 2026.

FAQ

Fieldproxy API and MCP, answered

How do I connect an AI agent to Fieldproxy?
Add Fieldproxy's MCP server to the agent. Your administrator switches on AI assistant access, you copy your workspace's MCP address (https://<api-host>/mcp, for example https://api-india-1.fieldproxy.ai/mcp in India or https://api-us-east-1.fieldproxy.ai/mcp in US East; it is shown in Settings, AI assistant when you create a key), and either sign in with OAuth from the client or create a key under Settings, AI assistant, New key and send it as Authorization: Bearer fpmcp.…. The agent then calls describe_schema to see your tables and starts working. It takes about two minutes.
Does Fieldproxy have a REST API?
Yes. Fieldproxy has a REST API for reading and writing workspace data: POST /api/read, /api/insert, /api/update and /api/delete on the workspace's regional API base (for example https://api-us-east-1.fieldproxy.ai), authenticated with an x-api-key header. Keys are created in Settings, Security, API keys, one per system, with an expiry, the operations they may use and an optional table allowlist. Writes through the REST API fire the workspace's automations. It is included on every plan.
Does Fieldproxy have an API for AI agents?
Yes. Fieldproxy is open by design. Besides the REST API, its MCP server (https://<api-host>/mcp, 170+ built-in tools) is an HTTP API any MCP client or agent framework can call, with tools for reading data, read-only SQL, proposed writes, messages, automations, agents and app building. Automations add inbound webhooks and outbound HTTP requests and signed webhooks, and public forms, portal users and CSV import and export cover the rest. API access is included on every plan.
Is Fieldproxy's data open to my own tools?
Yes. Each workspace runs on its own Postgres database. describe_schema shows every readable table and column, run_sql runs read-only SELECT queries on it, export_csv saves results as CSV, and automations can sync records to an external database with db_sync. Your records, screens and workflows are yours.
Which AI clients work with Fieldproxy?
Claude (custom connector), Claude Code, ChatGPT (developer-mode app), Microsoft 365 Copilot and Teams (through Copilot Studio), GitHub Copilot, Cursor and OpenAI Codex, plus any other client that speaks the Model Context Protocol over HTTP.
Can an AI agent change data in Fieldproxy safely?
Yes. Every write is proposed first with a dry-run preview and a pending_id, applied only by confirm_write after a person agrees, and returns an undo_id for undo_write. More than 5 rows needs bulk permission, more than 1,000 is refused, and keys can be limited by table, row, column and operation.
Can I send data into Fieldproxy from another system?
Yes. Call the REST API (POST /api/insert or /api/update with an x-api-key), or create an automation with a webhook trigger and POST JSON to its URL; the rule's steps create or update records from {{trigger.body}}. You can also import CSV or Excel files, and public forms take submissions from your website.
Can Fieldproxy call my systems when something happens?
Yes. Automation rules fire on record events, status changes, schedules, SLA timers, zones and more, and their http_request and send_webhook steps call any URL. send_webhook signs the body with HMAC-SHA256 in the X-Fieldproxy-Signature header so you can verify it.
Can I build my own screens and workflows through the API?
Yes. Fieldproxy apps are server-driven: every screen is JSON. Through the MCP build scope an administrator's AI can create apps, edit screens, add tables and columns, write automations and configure agents, as drafts or in a sandbox, then publish, with every version kept for rollback.
Does API or MCP access cost extra?
No. API access and the MCP server are included on every Fieldproxy plan. The only metered part is AI credits, which a few actions spend wherever they are started, for example running an insight or simulating an agent.

Your field service, open to every tool you use

Get your own custom field service management within a day. Tailored to your workflows.