# DataScope MCP connector

Connect DataScope to Elaichi and Claude, ChatGPT, Cursor or any MCP client can read form answers, update statuses, manage locations and track signature requests, each person inside their own access, every call logged.

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

## Facts

| | |
| --- | --- |
| Application | DataScope |
| Category | Survey |
| AI tools | 38 |
| 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 DataScope is connected

- Summarize yesterday's safety checklist answers by location
- Which signature requests are still waiting on a signer?
- Mark the plant 3 inspection answer as approved

## Connect DataScope in Elaichi

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

1. Open Connections, choose Add connection, and pick DataScope.
2. Optionally set Share with, then press Connect.
3. Paste a DataScope API key. One person generates a token in DataScope 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 DataScope tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## DataScope 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.

## DataScope 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.

## DataScope 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 DataScope 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 DataScope 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 DataScope through Elaichi

### Catch up on today's field submissions

Operations. Ask which DataScope forms came in from each site this morning and get the answers summarized before the standup, without opening every PDF.

### Move a finished inspection to approved

Field service. Once a technician's checklist is in, change the answer's status to approved or send it back for correction in a single request.

### Find every failed audit in a form

Quality. Pull the answers for a quality checklist, keep only the ones that failed, and see the sites and dates listed together.

### Chase outstanding signatures on incident reports

Safety. List the signature requests that are still open and see which safety forms are waiting on a signer.

### Keep the site list current

Facilities. Add a new location or correct an address so the next form picks the right place, no spreadsheet upload required.

### Get the next step started when a PDF is signed

Office. Set up a flow so a newly signed or rejected PDF in DataScope kicks off what follows, such as a status change or a hand-off to another team.

## Elaichi vs Zapier MCP vs Composio for DataScope

All three can connect DataScope 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 DataScope tools | Allow or restrict single DataScope 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 DataScope 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 DataScope to Claude?

Two steps. In Elaichi, add DataScope and paste in your DataScope API key, which you copy from your DataScope account; there is 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. Sign in as yourself and DataScope forms, answers and locations are available in the conversation.

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

Yes. DataScope is connected once in Elaichi and the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. There is nothing extra to set up per client.

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

It can list the forms your team uses, read the answers submitted against them, change an answer's status, add or correct locations, look up list elements and check which signature requests are still open. It can also set up flows that react when a PDF is signed, rejected or a status changes in DataScope. Short, concrete asks such as "show yesterday's answers for the safety checklist" work better than long paragraphs.

### Does connecting DataScope give the AI access to every form and answer?

No. Every request runs as the person who signed in, so the AI sees only the DataScope forms, answers and locations that person can already see. Elaichi can narrow that further by role or by action, and it never widens what DataScope itself allows.

### Can my team share one DataScope connection?

Yes. One person connects DataScope with the API key and shares the connection with a team in Elaichi; nobody else ever handles the key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who changed an answer status or added a location, not the account that connected it.

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

Yes. Restrictions in Elaichi work per action, so you can allow reading DataScope answers while blocking status updates, location edits or hook deletion. A restricted action is never advertised to Claude, ChatGPT or Cursor at all, so no prompt can reach it.

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

Offboarding that person in Elaichi ends their access to DataScope through every client at once. A shared DataScope connection keeps working for everyone else on the team. If you disconnect DataScope in Elaichi, it disappears from Claude, ChatGPT, Cursor and every other client in one step.

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

Yes. DataScope 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 DataScope?

Yes. Both let Claude, ChatGPT or Cursor use DataScope. 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 DataScope call.

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

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 DataScope: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 38 DataScope tools

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

- **Get single DataScope form schema by ID** (Get). Get the field schema of a selected form in datascope. Returns the schema object with its id and attributes containing the form's form-specific question and field definitions. Required: id.
- **Create a DataScope hooks flow** (Create). Register a hooks flow webhook in datascope that fires when a new answer is submitted for a form. Returns the registration outcome in result. Only one active connection per form is supported. Required: hooks_flow_id, subscription_url.
- **List all DataScope tasks forms flows** (List). List the forms available in the Datascope account. Returns the form entries with their type, key, and label.
- **List all DataScope list users** (List). List the users available in the datascope account. Returns an array of user records with type, user_key, and identifier. Takes no query or body parameters.
- **Create a DataScope power automate finding changed status** (Create). Create a Power Automate trigger subscription in DataScope that fires whenever a ticket changes its status. Returns the registration outcome (result). Only one active connection per account is supported. Required: event, subscription_url, version, platform.
- **Create a DataScope power automate new task assigned** (Create). Register a datascope trigger subscription so Power Automate flows fire when a new task is assigned on the selected form. Returns the registration outcome in result. Only one active connection per form is supported. Required: event, form_id, subscription_url, version, platform.
- **Create a DataScope power automate new PDF** (Create). Register a DataScope Power Automate trigger that fires when a new PDF is generated for a form by email backup or auto notify. Returns: result. Only one active connection per form is supported. Required: event, form_id, subscription_url, version, platform.
- **Create a DataScope power automate change status** (Create). Register a Power Automate trigger subscription in datascope that fires when a form answer changes its status. Returns: result. Only one active connection per form is supported. Required: event, form_id, subscription_url, version, platform.
- **Create a DataScope power automate new signed PDF** (Create). Register a Power Automate subscription in datascope for the new_signed_pdf event so the flow fires when a PDF is fully signed. Returns the registration outcome (result). Only one active connection per form is supported. Required: event, form_id, subscription_url, version, platform.
- **Create a DataScope power automate new rejected PDF** (Create). Create a datascope Rejected Signature trigger subscription so a Power Automate flow fires whenever a PDF signature request is rejected on the monitored form. Returns: result. Only one active connection per form is supported. Required: event, form_id, subscription_url, version, platform.
- **Update a DataScope power automate updated PDF signature by ID** (Update). Subscribe to datascope's Updated signature (Signatures) trigger, which fires when the signatures of a PDF are updated. Returns the subscription registration outcome (result). Only one active connection per form is supported. Required: event, form_id, subscription_url, version, platform.
- **Delete a DataScope delete hook by ID** (Delete). Delete a webhook subscription in datascope, unsubscribing the hook for the given account. Returns an empty 204 response on success. Required: id, account_id, webhook_id.
- **Update a DataScope answer by ID** (Update). Update the value of a single question in an already-submitted DataScope form answer, identified by the form's name and the answer's code. Returns: status, form_answer, id, name, code, list_type, length. Required: form_name, form_code, question_name, question_value.
- **DataScope answers v 5** (Action). List DataScope form answers through the Answers V5 (Beta) endpoint; version reproduces the response shape of earlier versions (v1-v4) and custom_fields unlocks extra data. Returns: created_at, updated_at, id, name, code, list_type, length. Max date range 90 days; default and max page size 200.
- **List all DataScope answers** (List). List recent form answers submitted to DataScope forms, with each question's value flattened into a dynamic top-level key named after the question. Returns: form_answer_id, form_id, form_name, form_state, user_name, code, created_at, latitude, longitude. Default and max 200 submissions; date range capped at 90 days.
- **DataScope answers metadata** (Action). List recent DataScope form answers with all questions grouped in a nested answers array and assigned-task location metadata. Returns: answers, form_answer_id, form_id, form_name, form_state, created_at, assign_id, assign_location_name, updated_at, finished.
- **Update a DataScope answer status by ID** (Update). Change the status of one submitted form answer in datascope; the change is recorded in the answer's history, fires status-change webhooks, and notifies the submitting user. Returns: key, identifier, id, name, code, list_type, length. Requires form_name, form_code, and form_state_id. Returns a 400 with an empty body when the form name, answer code, or status id does not match. Required: form_name, form_code, form_state_id.
- **List all DataScope answer statuses** (List). List the answer statuses configured in your datascope account. Returns: key, identifier, id, name, code, list_type, length. Takes no parameters.
- **List all DataScope signature requests** (List). List datascope signature requests with their signers nested, ordered by updated_at ascending and keyset-paginated for incremental sync. Returns: deleted_at, created_at, updated_at, id, name, code, list_type, length. Max 200 per page.
- **List all DataScope locations** (List). List all locations in the datascope account. Returns: id, name, description, code, list_type, length. No filters or paging.
- **Create a DataScope location** (Create). Create a location in datascope from the fields sent in the required location object (name, description, code, company_code, company_name, address, city, country, latitude, longitude, phone, email). Returns the created location with its id, name, code, address, and email.
- **Update a DataScope location by ID** (Update). Update a location in datascope by id, sending the whole location object (read current values with Get All Locations first). Returns the location as it now stands, including its id, name, code, address, city, and email. Required: id, location.
- **List all DataScope list elements** (List). List all elements of a custom list in datascope, filtered by the list's internal code. Returns each element's id, name, description, code, list_id, and created_at/updated_at timestamps. Required: metadata_type.
- **Get single DataScope list element by ID** (Get). Get a single element of a custom list in datascope by its internal identifier. Returns the element's id, name, description, code, list_id, account_id, and created_at/updated_at timestamps. Required: metadata_type, metadata_id.
- **Create a DataScope list element** (Create). Create a new element in a custom list in datascope: the target list is identified by the metadata_type query parameter and the element fields are sent as list_object in the body. Returns: id, name, description, code, created_at, updated_at, metadata_type. Not for locations lists — use the locations endpoints. Required: metadata_type and list_object. Returns 422 on wrong parameters and 403 when…
- **Update a DataScope list element by ID** (Update). Update an existing element of a custom list in datascope by sending the full list_object in the body and the element's id in the path. Returns the updated element's id, name, code, list_type, and length. Required: id and list_object. Returns 422 on wrong parameters and 403 when forbidden.
- **DataScope list elements bulk update** (List). Bulk replace all elements of a custom list in datascope: existing objects for the metadata_type are deleted and replaced by the list_objects provided, with codes absent from the payload soft-deleted (experimental, destructive). Returns the list's id, name, code, list_type, and length. Required: metadata_type, name, and list_objects. Rejects the locations metadata_type with 400.
- **Create a DataScope list** (Create). Create an empty list in DataScope. Returns the created list object including id, name, description, code, list_type, and length. Send the list attributes (name, description, code, list_type) under a top-level list object. Required: list.
- **Update a DataScope list by ID** (Update). Update an existing DataScope list by id. Returns the updated list object including id, name, description, code, list_type, and length. Send the list attributes (name, description, code, list_type) under a top-level list object. Required: id, list.
- **Get single DataScope task assign by ID** (Get). Get a single task assignment in datascope by id — use the internal id, not assign_id. Returns the full record including assign_id, response_code, form_name, user_email, completed, on_time, delay_time, and status. Required: id. Returns 404 when the assignment does not belong to this account.
- **List all DataScope task assigns** (List). List task assignments in datascope for the authenticated account, matching the platform's Excel export plus the internal id. Returns the task_assigns array plus total, limit, and offset; records include assign_id, form_name, user_email, completed, on_time, and status. Omit start and end to return all history.
- **List all DataScope notifications** (List). List DataScope notifications about PDF and Excel documents users were notified about in a date range. Returns: id, type, url, form_name, form_code, user, created_at, name, code, list_type, length. The window defaults to the last 7 days.
- **List all DataScope files** (List). List PDF and Excel files DataScope generated in a date range, returning download links rather than file contents. Returns: id, url, form_name, form_code, user, name, code, list_type, length. The window defaults to the last 7 days when no range is supplied.
- **Create a DataScope file** (Create). Create a new form answer and generate its PDF from an existing DataScope form template (beta Send Data action). Returns: ok, form_answer_id, id, name, code, list_type, length. Additional parameters are treated as answers to the form's questions; not all question types are supported and GSheet Sync and webhook triggers are not fired. Required: form_id.
- **List all DataScope tickets** (List). List datascope tickets created within a date range. Returns: id, code, name, description, list_type, length. Dates use dd-mm-yyyy format, the range defaults to the last 7 days, and may not exceed 90 days.
- **Get single DataScope ticket by ID** (Get). Get a single datascope ticket by id. Returns the ticket with id, code, name, type, status, priority, ISO 8601 dates, location_name, creator_name, and comma-separated assignees and invitees. Required: id (the Firestore document id from the ticket URL).
- **DataScope tickets recent** (Action). List the five most recently created datascope tickets. Returns the ticket fields id, name, type, status, priority, creation_date, and assignees. No parameters or filtering.
- **DataScope tickets types** (Action). List the datascope ticket types configured in the account. Returns: id, name, code, list_type, length.
