Customer Relation

Formitize MCP Server

Connect your account, then chat with AI to run tools.

Formitize is an Australian field-service and paperless business platform for mobile forms, CRM, job scheduling, sales quotes and leads, asset registers, and invoicing. Read and write clients, jobs, job types, quotes, tasks, leads, assets, forms, scheduler views, and submitted inspection data.

Managed
57 tools
Agent guide included

Opens MCPBundles Studio with this server selected. After sign-in, chat and run tools from the same thread.

Browse all tools

AI Skill
SKILL.md

Domain knowledge for Formitize — workflow patterns, data models, and gotchas for your AI agent.

Formitize

Formitize is a field-service operations stack: CRM clients and sites, schedulable jobs, job type templates, sales quotes tasks and leads, asset registers, mobile form templates, scheduler and workflow definitions, and submitted inspection reports. Australian accounts typically use service.formitize.com.au; the REST surface is version 2 under /api/rest/v2.

Hierarchy

Account → CRM clients (billingName) → locations & contacts → jobs (assigned to users/queues) → job history → attached forms → submitted form rows → assets (per asset schema) → invoices.

Sales (when enabled): quotes, tasks, and pipeline leads via quote/, task/, and lead/ — not crm/lead/ (that path is not implemented on v2).

Operations: job type templates (job/type/), scheduler calendar (scheduler/), workflow definitions (workflow/), field users (agent/list/, team/list/), qualifications (qualification/list/), resources (resource/list/ — token must grant Resources permission).

Jobs can auto-create clients when client.billingName is supplied on create. Asset data is always scoped to an asset schema id — list schemas before listing assets.

Operational order

  1. Clients — list CRM clients (page) or fetch one by client_id (billing, embedded contact/location ids).
  2. Contacts & locations — always scoped to a client_id via nested CRM paths (crm/client/{id}/contact/ and .../location/). List or fetch by optional contact_id / location_id; upsert and delete on the same nested paths.
  3. Jobs — list open jobs (optional status filter) or fetch one job by id for status, assignee, due date, and attached forms. Use job history for audit timeline on a known job_id.
  4. Job types — list templates via job type list before interpreting recurring work.
  5. Sales — list or fetch quotes (quote_id), tasks (task_id), and CRM leads (lead_id) with pagination; upsert and delete on the same paths; use extra_fields for module-specific columns.
  6. Scheduler & workflows — scheduler entries for calendar dispatch; workflow definitions and workflow templates; upsert/delete when automations are managed via API.
  7. Field users & qualifications — agents and teams for assignment; qualifications list and upsert/delete when Admin exposes them on the token.
  8. Resources — list and manage scheduler resources when the API token includes Resources permission.
  9. Webhooks — list and configure outbound job webhooks when integrations are enabled.
  10. Assets — list asset schemas (optional schema_id for one definition), then list or fetch assets within a schema id.
  11. Forms — list form templates; search submitted forms via form/submit/list/ (query, form_id, page) or fetch by submitted_id / job_id; upsert or delete submissions.
  12. Lookup databases — list database names, then list/upsert/delete rows within a named lookup database.
  13. Invoices — list, fetch, upsert, and delete invoice summaries when billing modules are enabled.

Job status codes (for filters)

Comma-separated status on job list: 1 Created, 2 Assigned, 3 Accepted, 4 Finished, 6 Rejected, 8 Rescheduled.

Write semantics

  • Client upsert — POST JSON to crm/client/ (create) or crm/client/{id} (update). billingName is the primary create field. Deactivate via dedicated deactivate client or extra_fields status: inactive.
  • Contact upsert — POST crm/client/{client_id}/contact/ (create) or .../contact/{contact_id} (update).
  • Contact delete — DELETE crm/client/{client_id}/contact/{contact_id}.
  • Location upsert — POST crm/client/{client_id}/location/ (create) or .../location/{location_id} (update).
  • Location delete — DELETE crm/client/{client_id}/location/{location_id}.
  • Job upsert — POST JSON to job/. Omit id to create (needs title, agent, and client.billingName or existing client). Pass numeric id in the body to update title, notes, status, assignees, or attached forms.
  • Job delete — DELETE with id query param; destructive and idempotent.
  • Job type upsert — POST job/type/ with title or name; DELETE job/type/?id=.
  • Quote / task / lead upsert — POST with quote_id, task_id, or lead_id in the body to update; DELETE with id query param.
  • Workflow / scheduler / qualification / resource — POST and DELETE on matching v2 paths when modules are enabled on the token.
  • Invoice upsert — POST invoice/; DELETE invoice/?id=.
  • Lookup row upsert — POST lookup/database/{database_name}/; DELETE with row id.
  • Webhook upsert — POST webhook/ with callback URL; DELETE by webhook id.
  • Submitted form delete — DELETE form/submit/?id=.
  • Asset upsert — POST JSON to asset/{schema_id}/ or asset/{schema_id}/{asset_id}; schema-specific columns vary — use extra_fields for schema-defined keys.
  • Asset delete — DELETE asset/{schema_id}/{asset_id}.
  • Submitted form upsert — POST form/submit/ (create) or form/submit/{submitted_id} (update); pass formID, jobID, and answer fields via extra_fields.

Assign agent to -1 for queue-style jobs any field user can pick up.

Gotchas

  • Responses wrap data in a top-level payload key; tools return the unwrapped payload.
  • Job and submitted-form list responses are maps keyed by id — tools normalize to items arrays.
  • Empty accounts return {} or [] for lists; that is not an auth failure.
  • Flat crm/contact/ and crm/location/ paths are not implemented on v2 — always use nested crm/client/{client_id}/... paths.
  • Pipeline leads use lead/list/ and lead/ — avoid crm/lead/ for list and get.
  • Resources require explicit permission on the API token; otherwise the API returns a no-permission error.
  • API tokens are permission-scoped in Formitize Admin → API → API Tokens; missing module permission surfaces as a payload error message.

Tools in this Server (57)

Formitize Deactivate Client

Deactivate a Formitize CRM client by client_id. Sets status to inactive on the client record (Help Desk deactivation pattern). Requires client_id; opt...

Formitize Delete Asset

Delete one asset row from a Formitize asset schema. Requires schema_id and asset_id. Destructive and idempotent.

Formitize Delete Contact

Delete a contact from a Formitize CRM client. Requires client_id and contact_id. Destructive and idempotent when the API accepts repeat deletes.

Formitize Delete Invoice

Delete a Formitize invoice by invoice_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Job

Permanently delete a Formitize job by id. Destructive and idempotent — deleting an already removed job still succeeds when the API accepts it.

Formitize Delete Job Type

Permanently delete a Formitize job type template by id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Lead

Permanently delete a Formitize CRM lead by lead_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Location

Delete a site location from a Formitize CRM client. Requires client_id and location_id. Destructive and idempotent when the API accepts repeat deletes...

Formitize Delete Lookup Row

Delete one row from a lookup database by database_name and row_id.

Formitize Delete Qualification

Delete a Formitize qualification record by qualification_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Quote

Permanently delete a Formitize quote by quote_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Resource

Delete a Formitize scheduler resource by resource_id. Requires Resources permission on the API token.

Formitize Delete Scheduler Entry

Delete a Formitize scheduler entry by scheduler_entry_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Submitted Form

Delete a submitted mobile form record by submitted_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Task

Permanently delete a Formitize task by task_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Webhook

Delete a Formitize webhook by webhook_id. Destructive and idempotent when the API accepts the delete.

Formitize Delete Workflow

Permanently delete a Formitize workflow by workflow_id. Destructive and idempotent when the API accepts the delete.

Formitize Get Assets

List or fetch assets within a Formitize asset schema. Requires schema_id. Omit asset_id to list all assets in the schema; pass asset_id for one row.

Formitize Get Asset Schemas

List or fetch asset schema definitions on the Formitize account. Each schema describes an asset register (columns, types). Omit schema_id to list all ...

Formitize Get Clients

List or fetch Formitize CRM clients. Omit client_id to list clients with billing name, primary contact, address, and status (`page` for pagination). P...

Formitize Get Contacts

List or fetch contacts for a Formitize CRM client. Requires client_id. Omit contact_id to list all contacts on the client; pass contact_id for one con...

Formitize Get Field Users

List Formitize field users, agents, or teams for job assignment. Default scope returns both agent/list/ and team/list/ in one payload. Use scope agent...

Formitize Get Form Templates

List mobile form templates configured on the Formitize account. Template ids attach to jobs and pre-fill submitted forms.

Formitize Get Invoices

List or fetch Formitize invoices when the accounts module is enabled. Omit invoice_id to list; pass invoice_id for one invoice with line items and pay...

Formitize Get Job History

Fetch the change log for one Formitize field job — status changes, scheduler updates, assignee changes, and timestamps. Requires job_id from the jobs ...

Formitize Get Jobs

List or fetch Formitize field jobs. Omit job_id to list jobs (returns `items` and `count`). Pass job_id for one job with status, assignee, due date, f...

Formitize Get Job Types

List or fetch Formitize job type templates (recurring job definitions). Omit job_type_id to list via job/type/list/; pass job_type_id for one type. Em...

Formitize Get Leads

List or fetch Formitize CRM sales leads via lead/list/ and lead/. Do not use crm/lead/ (not implemented on v2). Omit lead_id to list; pass lead_id for...

Formitize Get Locations

List or fetch site locations for a Formitize CRM client. Requires client_id. Omit location_id to list all locations (addresses, site names); pass loca...

Formitize Get Lookup Databases

List lookup database names configured on the Formitize account. Lookup databases back dropdown and autocomplete fields on mobile forms.

Formitize Get Lookup Rows

List rows in one lookup database by database_name (from the lookup database list). Pass row_id to fetch one row when the API supports id lookup on the...

Formitize Get Qualifications

List user qualification records from Admin → Users when the API exposes them. Omit user_id to list via qualification/list/; pass user_id to scope via ...

Formitize Get Quotes

List or fetch Formitize sales quotes. Omit quote_id to list (page, optional status and query filters); pass quote_id for one quote. Empty items means ...

Formitize Get Resources

List or fetch Formitize scheduler resources (people, equipment, or rooms). Requires Resources permission on the API token in Formitize Admin → API → A...

Formitize Get Scheduler Entries

Read Formitize scheduler / calendar entries for a date window. Distinct from listing open jobs — use when the account uses Scheduler for dispatch view...

Formitize Get Submitted Forms

List or fetch submitted mobile form data (inspection reports, checklists, audits). Pass submitted_id for one submission. Pass job_id for all forms att...

Formitize Get Tasks

List or fetch Formitize tasks (not field jobs — use jobs tools for those). Omit task_id to list with page and optional status or query; pass task_id f...

Formitize Get Webhooks

List or fetch Formitize outbound webhooks (job status notifications). Omit webhook_id to list; pass webhook_id for one webhook configuration.

Formitize Get Workflows

List or fetch Formitize workflow definitions. Omit workflow_id to list via workflow/list/; pass workflow_id for one workflow. Empty items mean no work...

Formitize Get Workflow Templates

List Formitize workflow templates (blueprints for automation). Uses workflow/template/list/. Empty items mean no templates configured yet.

Formitize Upsert Asset

Create or update an asset row in a Formitize asset schema. Requires schema_id. Omit asset_id to create; pass asset_id to update. Schema-specific colum...

Formitize Upsert Client

Create or update a Formitize CRM client. Omit client_id to POST a new client (billing_name is the usual minimum). Pass client_id to update billing nam...

Formitize Upsert Contact

Create or update a contact on a Formitize CRM client. Requires client_id. Omit contact_id to create (first_name or email is a typical minimum). Pass c...

Formitize Upsert Invoice

Create or update a Formitize invoice via POST invoice/. Pass invoice_id to update. Use billing_name or client_id on create; line items and totals via ...

Formitize Upsert Job

Create or update a Formitize job. Omit job_id to create — requires title and agent (use -1 for queue/unassigned). Supply billing_name or client object...

Formitize Upsert Job Type

Create or update a Formitize job type template via POST job/type/. Pass title or name on create. Pass job_type_id to update via extra_fields id or job...

Formitize Upsert Lead

Create or update a Formitize sales lead via POST lead/. Use title plus client_id or billing_name on create. Prefer lead/ over crm/lead/ for writes.

Formitize Upsert Location

Create or update a site location on a Formitize CRM client. Requires client_id. Omit location_id to create (site_name and street1 are typical). Pass l...

Formitize Upsert Lookup Row

Create or update a row in a lookup database via POST lookup/database/{name}/. Pass row_id to update. Row columns vary — use extra_fields with camelCas...

Formitize Upsert Qualification

Create or update a user qualification via POST qualification/. Pass qualification_id to update. Associate to users with user_id and pass expiry or cer...

Formitize Upsert Quote

Create or update a Formitize sales quote via POST quote/. Supply title and billing_name or client_id on create. Pass quote_id to update. Use status, n...

Formitize Upsert Resource

Create or update a Formitize scheduler resource via POST resource/. Requires Resources permission on the API token. Pass resource_id to update.

Formitize Upsert Scheduler Entry

Create or update a Formitize scheduler calendar entry via POST scheduler/. Pass scheduler_entry_id to update. Use title, start_date, end_date, job_id,...

Formitize Upsert Submitted Form

Create or update a submitted mobile form row. Omit submitted_id to POST a new submission (typically needs formID and jobID via extra_fields). Pass sub...

Formitize Upsert Task

Create or update a Formitize task via POST task/. Requires title on create unless in extra_fields. Associate with client_id or billing_name; set statu...

Formitize Upsert Webhook

Create or update a Formitize webhook via POST webhook/. Pass webhook_id to update. Set callback_url for the HTTPS endpoint and use extra_fields for ev...

Formitize Upsert Workflow

Create or update a Formitize workflow definition via POST workflow/. Pass workflow_id to update. Use title and extra_fields for steps and triggers.

Frequently Asked Questions

What is the Formitize MCP server?

Formitize is an Australian field-service and paperless business platform for mobile forms, CRM, job scheduling, sales quotes and leads, asset registers, and invoicing. Read and write clients, jobs, job types, quotes, tasks, leads, assets, forms, scheduler views, and submitted inspection data. It provides 57 tools that AI agents can use through the Model Context Protocol (MCP).

How do I connect Formitize to my AI agent?

Add the MCPBundles server URL to your MCP client configuration (Claude Desktop, Cursor, VS Code, etc.). The URL format is: https://mcp.mcpbundles.com/bundle/formitize. Authentication is handled automatically.

How many tools does Formitize provide?

Formitize provides 57 tools that can be called by AI agents, along with a SKILL.md that gives your AI agent domain knowledge about when and how to use them.

What authentication does Formitize require?

Formitize uses API Key. Formitize requires credentials. Connect via MCPBundles and authentication is handled automatically.

Setup Instructions

Connect Formitize to any MCP client in minutes

MCP URL
https://mcp.mcpbundles.com/bundle/formitize

One-click install:

The link prefills the Add custom connector dialog — you still review the values and click Add, then Connect to complete OAuth.

Or add manually

  1. Open claude.ai → Settings → Connectors.
  2. Click the + button and choose Add custom connector.
  3. Set Name to Formitize and paste the MCP URL into Remote MCP server URL.
  4. Click Add. Formitize will appear under Not connected — select it and click Connect to complete OAuth.
Name: Formitize
Remote MCP server URL: https://mcp.mcpbundles.com/bundle/formitize
Authentication: OAuth

Custom connectors at claude.ai require a paid Claude plan (Pro, Max, Team, or Enterprise).

Ready to use Formitize?

Sign in to connect your credentials and start running tools from the chat.

Formitize MCP Server & Skill