# Fulcrum MCP connector

The Fulcrum connector brings your Fulcrum forms, queries, groups, memberships and permissions to Claude, ChatGPT, Cursor and the Elaichi Agent, so people can ask about field data and manage who has access while every action is logged.

Source: https://elaichi.ai/connectors/fulcrum/

## Facts

| | |
| --- | --- |
| Application | Fulcrum |
| Category | Survey |
| AI tools | 144 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Fulcrum is connected

- Which Fulcrum forms were created this month?
- Add Priya to the North Region group with read-only access
- Run the open inspections query and list results by site

## Connect Fulcrum in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Fulcrum.
2. Optionally set Share with, then press Connect.
3. Paste a Fulcrum API key. One person generates a token in Fulcrum and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Fulcrum tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Fulcrum MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Fulcrum MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Fulcrum MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Fulcrum to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Fulcrum tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Fulcrum through Elaichi

### Confirm a form is ready before dispatch

Field operations. Ask which Fulcrum forms are live and who can fill them in, so a new inspection form is checked before the morning crews head out.

### Pull this week's inspections with a query

Operations. Run a Fulcrum query for inspections completed since Monday and get the results back as a plain list, grouped by site or status.

### Add a contractor to the right groups

IT and admin. Create a Fulcrum membership for a new contractor, put them in the regional group, and set what they may see on their first day.

### Check who can edit the safety forms

Compliance. List Fulcrum roles, permissions and memberships and ask which people hold rights beyond read-only on the safety inspection forms.

### Set up a project group in one go

Project management. Create a Fulcrum group for a new project, add the crew, and change the group's permissions so it covers only the forms that project uses.

### Reuse the queries the team already trusts

Data and reporting. List the saved Fulcrum queries, pick the one for utility pole counts, and ask for the numbers behind this month's report.

## Elaichi vs Zapier MCP vs Composio for Fulcrum

All three can connect Fulcrum to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over Fulcrum tools | Allow or restrict single Fulcrum tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per Fulcrum call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect Fulcrum to Claude?

Two steps. First, connect Fulcrum in Elaichi by pasting the API key from your Fulcrum account settings, with no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Claude will then ask you to sign in to Elaichi, and Fulcrum is available in your next conversation.

### Does Fulcrum work with ChatGPT and Cursor as well as Claude?

Yes. Once Fulcrum is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Fulcrum once and every client picks it up.

### What can an AI agent actually do with my Fulcrum data?

With Fulcrum connected, an agent can list your forms, run or save a query over collected records, and tell you which users, groups and roles exist. It can also add a member to a group, change what a group may see, and create or tidy up authorizations. Short concrete asks work best, such as "list the inspection forms" rather than a long paragraph.

### Does connecting Fulcrum give the AI access to my whole organization?

No. Every call to Fulcrum runs as the person who signed in, so an agent sees only the forms, groups and queries that person's Fulcrum role already allows. Elaichi can narrow that access further with restrictions, and it can never widen what Fulcrum itself permits.

### Can my team share one Fulcrum connection?

Yes. One person connects Fulcrum in Elaichi and shares it with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual person behind every Fulcrum action.

### Can I stop an agent from deleting or changing things in Fulcrum?

Yes. Restrictions in Elaichi work per action, so you can allow listing Fulcrum forms and running queries while blocking changes to memberships, groups or authorizations. A restricted action is never advertised to the AI client, so no prompt can reach it.

### What happens to a Fulcrum connection when someone leaves?

Offboarding a person in Elaichi ends their access to Fulcrum through every client at once. A Fulcrum connection shared with a team keeps working for everyone who remains. Disconnecting Fulcrum once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

### Does the Fulcrum MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Fulcrum is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for Fulcrum?

Yes. Both let Claude, ChatGPT or Cursor use Fulcrum. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every Fulcrum call.

### How is Elaichi different from Composio for Fulcrum?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to Fulcrum: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 144 Fulcrum tools

Every tool below is callable through https://api.elaichi.ai/mcp once Fulcrum is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Create a Fulcrum query** (Create). Execute a read-only SQL query against your Fulcrum organization's data over HTTP POST. Returns the result set including fields (column metadata), rows, time, and date. Queries cannot exceed 10 seconds of processing time. Required: q.
- **List all Fulcrum queries** (List). Execute a read-only SQL query against Fulcrum forms, records, and related tables via HTTP GET. Returns: fields, rows, time, date. Queries cannot exceed 10 seconds of processing time. Required: q.
- **List all Fulcrum users** (List). List the users in your Fulcrum organization. Returns a paginated collection of user records including id, created_at, and updated_at; the API reference does not enumerate the remaining user fields. No required parameters.
- **List all Fulcrum authorizations** (List). List all authorizations in Fulcrum. Returns an empty success response with no body fields. Pagination is handled automatically.
- **Create a Fulcrum authorization** (Create). Create a new authorization in Fulcrum by posting an AuthorizationRequest JSON body. Returns an empty success response with no body fields. Requires a JSON AuthorizationRequest body. Required: authorization.
- **Get single Fulcrum authorization by ID** (Get). Get a single Fulcrum authorization by id. Returns an empty success response with no body fields. Required: id.
- **Fulcrum authorizations bulk update** (Update). Update an existing Fulcrum authorization identified by id by sending an AuthorizationRequest JSON body. Returns an empty success response with no body fields. Required: id, authorization.
- **Fulcrum authorizations bulk delete** (Delete). Delete a Fulcrum authorization by id. Returns an empty success response with no body fields. Required: id.
- **List all Fulcrum roles** (List). List Fulcrum roles. Returns the roles collection where each role includes id, name, and created_at/updated_at timestamps.
- **List all Fulcrum memberships** (List). List Fulcrum memberships, optionally filtered to a specific form, project, or layer using form_id, project_id, or layer_id. Returns an empty 200 response on success.
- **Fulcrum memberships change permissions** (Action). Add or remove membership permissions on layers, forms, or projects for Fulcrum members. Returns an empty 200 response on success. Required: change.
- **Create a Fulcrum membership** (Create). Create a new member in Fulcrum. Returns an empty 200 response on success. Required: membership.
- **Get single Fulcrum membership by ID** (Get). Get a single membership in Fulcrum by id. Returns the membership record including id, user_id, created_at, and updated_at. Required: id.
- **Fulcrum memberships bulk update** (Update). Update a Fulcrum member's parameters by id. Returns an empty 200 response on success. Does not work when the member belongs to multiple organizations. Required: id.
- **Fulcrum memberships bulk delete** (Delete). Delete a Fulcrum membership (member) by id. Returns an empty 200 response on success. Required: id.
- **List all Fulcrum permissions** (List). List membership permissions in Fulcrum, filtered by permission type and object. Returns a group object with its name, description, and id. Required: type, object_id.
- **List all Fulcrum groups** (List). List Fulcrum groups. Returns each group's name, description, and id; set associations=true to also include the group's assigned member_ids, layer_ids, project_ids, and form_ids.
- **Create a Fulcrum group** (Create). Create a Fulcrum group. Returns the created group's id, name, and description. Requires name. Required: group.
- **Get single Fulcrum group by ID** (Get). Get a single Fulcrum group by id. Returns: id, name, description, member_ids, layer_ids, project_ids, form_ids. Required: id.
- **Fulcrum groups get resource** (Get). Get a Fulcrum group's assigned resources. Lists the members, projects, layers, or forms associated with the group, depending on the resource requested. The returned records are resource-specific — their fields depend on which resource is requested. Required: group_id.
- **Fulcrum groups change permissions** (Action). Update a Fulcrum group's permissions by adding or removing its assigned members, projects, layers, or forms. Returns the updated group with its id, name, and description.type and change.group_id; supply change.add / change.remove id lists to grant or revoke access. Required: permission_change.
- **Fulcrum groups bulk update** (Update). Update a Fulcrum group's name and/or description by id. Returns: group. Required: id, group.
- **Fulcrum groups bulk delete** (Delete). Delete a Fulcrum group by id. Returns an empty 204 response on success. Required: id.
- **List all Fulcrum forms** (List). List Fulcrum forms (app schemas) in your organization. Returns each form's id, name, description, elements, status_field, record_count, created_at, and updated_at. Filter by type and status; pass schema=false to return only form metadata.
- **Create a Fulcrum form** (Create). Create a Fulcrum form (app schema). Returns the created form object including id, name, description, elements, status_field, record_count, and created_at. Requires form.name and form.elements; invalid submissions return a 422 validation error. Required: form.
- **Get single Fulcrum form by ID** (Get). Get a single Fulcrum form (app schema) by id. Returns: id, name, created_at, updated_at, form. Pass schema=false to return only the form metadata. Required: id.
- **Fulcrum forms history** (Action). Get the saved version history of a form in Fulcrum. Returns an empty response body on success. Required: form_id.
- **Fulcrum forms bulk update** (Update). Update a Fulcrum form (app schema) by id. Returns the updated form object including id, name, elements, status_field, record_count, and updated_at. The entire form object must be sent — omitting existing elements results in data loss. Invalid submissions return a 422 validation error. Required: id, form.
- **Fulcrum forms bulk delete** (Delete). Delete a Fulcrum form by id. Returns an empty 204 response on success. Required: id.
- **List all Fulcrum records** (List). List Fulcrum records collected in your organization, filterable by form, project, changeset, bounding box, and client or server date ranges. Returns records with id, form_id, form_values, geometry, latitude/longitude, status, version, and created_at/updated_at timestamps. No required parameters; omitting form_id or project_id queries across all records.
- **Create a Fulcrum record** (Create). Create a Fulcrum record for a form. Returns the created record object including its id, form_id, form_values, status, latitude, longitude, geometry, and version. Requires form_id and form_values (nested under record); supply latitude/longitude or a GeoJSON geometry to set the location. The API does not validate custom form field values. Required: record.
- **Get single Fulcrum record by ID** (Get). Get a single Fulcrum record by id. Returns the record object including its id, form_id, form_values, status, latitude, longitude, geometry, and version. Required: id.
- **Fulcrum records history** (Action). Get the complete version history of a record in Fulcrum. Returns a paginated history envelope including current_page, per_page, total_count, total_pages, and a records array of version snapshots with fields such as id, version, status, form_id, and form_values. Required: record_id.
- **Fulcrum records partial update** (Update). Partially update a record in Fulcrum by id — only the fields included in the request body are modified, all other fields remain unchanged. Returns the updated record object (under record) including id, form_id, form_values, status, latitude, longitude, and version. Required: id, record.
- **Fulcrum records bulk update** (Update). Update a Fulcrum record by id with a provided record object. The record object must be the complete representation of the record — any fields not included are assumed null. Returns an empty success response on success. Requires id, plus form_id, latitude, longitude, and form_values inside the record body. Required: id, record.
- **Fulcrum records bulk delete** (Delete). Delete a record from your Fulcrum organization by id. Returns the deleted record object including id, form_id, form_values, geometry, and updated_at. Required: id.
- **List all Fulcrum records histories** (List). List the version history of a collection of Fulcrum records. Returns record objects including id, form_id, version, form_values, updated_at, and changeset_id. Useful for retrieving records from a specific changeset or from forms that have been deleted.
- **List all Fulcrum choice lists** (List). List all choice lists in Fulcrum. The upstream API documents an empty success response body for this endpoint, so no response fields are specified. Returns an empty 204 response on success.
- **Create a Fulcrum choice list** (Create). Create a new choice list in Fulcrum by submitting a ChoiceListRequest JSON body. Returns an empty 204 response on success. Required: choice_list.
- **Get single Fulcrum choice list by ID** (Get). Get a single choice list in Fulcrum by id. The upstream API documents an empty success response body for this endpoint, so no response fields are specified. Returns an empty 204 response on success. Required: id.
- **Fulcrum choice lists bulk update** (Update). Update an existing choice list in Fulcrum by id, replacing its definition with a ChoiceListRequest JSON body. Returns an empty 204 response on success. Required: id, choice_list.
- **Fulcrum choice lists bulk delete** (Delete). Delete a choice list in Fulcrum by id. Returns an empty 204 response on success. Required: id.
- **List all Fulcrum classification sets** (List). List classification sets in Fulcrum — the grouped classification options referenced by ClassificationField form elements. Returns an empty response body on success.
- **Create a Fulcrum classification set** (Create). Create a classification set in Fulcrum by submitting a classification set payload following the ClassificationSetRequest schema defined in Fulcrum's API reference. Returns an empty response body on success. Required: classification_set.
- **Get single Fulcrum classification set by ID** (Get). Get a single classification set in Fulcrum by id. Returns an empty response body on success. Required: id.
- **Fulcrum classification sets bulk update** (Update). Update a classification set in Fulcrum by id, submitting the updated payload following the ClassificationSetRequest schema defined in Fulcrum's API reference. Returns an empty response body on success. Required: id, classification_set.
- **Fulcrum classification sets bulk delete** (Delete). Delete a classification set in Fulcrum by id. Returns an empty 204 response on success. Required: id.
- **List all Fulcrum projects** (List). List Fulcrum projects for the account. Returns the matching project object including its id and project attributes. Requires the API to be enabled on your Fulcrum plan.
- **Create a Fulcrum project** (Create). Create a new Fulcrum project. Returns the created project object including its id and project attributes. Required: project.
- **Get single Fulcrum project by ID** (Get). Get a single Fulcrum project by id. Returns the project object including its id and project attributes. Requires id. Required: id.
- ...and 94 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
