---
title: "Extend MCP Server for AI Agents | Extend"
description: "Connect any MCP client to Extend's hosted server. OAuth sign-in, per-workspace scoping, and every document processor exposed as a tool."
canonical: https://www.extend.ai/agents/mcp
---

# Extend MCP Server for AI Agents | Extend

[Agents](https://www.extend.ai/agents) / Integration path

## Use Extend from any MCP client

Hosted at mcp.extend.ai. Connect with OAuth, choose the workspaces and the environment on the consent screen, and every processor becomes a tool your agent can call.

### Server URL

```text
https://mcp.extend.ai/mcp
```

[Full docs](https://docs.extend.ai/mcp)

## Connect from your client

MCP is an open protocol. Any client that supports remote servers over Streamable HTTP can connect with the URL above and OAuth.

### Cursor

**~/.cursor/mcp.json**

```json
{
  "mcpServers": {
    "extend": {
      "url": "https://mcp.extend.ai/mcp"
    }
  }
}
```

[Guide for Cursor](https://www.extend.ai/agents/cursor)

### Claude Code

```bash
claude mcp add --transport http extend https://mcp.extend.ai/mcp
```

[Guide for Claude Code](https://www.extend.ai/agents/claude-code)

### Claude

```text
https://mcp.extend.ai/mcp
```

[Guide for Claude](https://www.extend.ai/agents/claude)

### Codex

```bash
codex mcp add extend --url https://mcp.extend.ai/mcp
```

[Guide for Codex](https://www.extend.ai/agents/codex)

### ChatGPT

```text
https://mcp.extend.ai/mcp
```

[Guide for ChatGPT](https://www.extend.ai/agents/chatgpt)

### VS Code

**.vscode/mcp.json**

```json
{
  "servers": {
    "extend": {
      "type": "http",
      "url": "https://mcp.extend.ai/mcp"
    }
  }
}
```

[Guide for VS Code](https://www.extend.ai/agents/vscode)

### Windsurf

**~/.codeium/windsurf/mcp_config.json**

```json
{
  "mcpServers": {
    "extend": {
      "serverUrl": "https://mcp.extend.ai/mcp"
    }
  }
}
```

[Guide for Windsurf](https://www.extend.ai/agents/windsurf)

### Other clients

```json
{
  "mcpServers": {
    "extend": {
      "url": "https://mcp.extend.ai/mcp"
    }
  }
}
```

## Scope what the agent can reach

### Per-workspace consent

The OAuth consent screen names the client that's asking and lets you choose exactly which workspaces it may use and whether it acts in the Test Environment or Production. One environment per connection; reconnect to change the grant.

### Tool filtering

The server exposes every tool by default. For token-sensitive clients, append a comma-separated list of group or tool names in the tools query parameter.

```text
https://mcp.extend.ai/mcp?tools=extract,files
```

parse, extract, classify, split, edit, workflows, files, webhooks, evaluations

## 86 tools across the platform

Each tool includes instructions for choosing inputs, handling asynchronous work, and recovering from errors.

### Parsing

Convert PDFs, images, Office documents, and spreadsheets into structured markdown or raw blocks, one at a time or 1,000 per batch.

`parse_document`, `get_parse_run`, `list_parse_runs`, `delete_parse_run`, `run_parse_batch`, `get_parse_batch`

### Extraction

Extract fields, tables, and line items with a saved extractor or an inline schema; create, version, and publish extractors.

`extract_data`, `create_extractor`, `update_extractor`, `get_extractor`, `list_extractors`, `list_extractor_versions`, `publish_extractor_version`, `get_extract_run`, `list_extract_runs`, `cancel_extract_run`, `delete_extract_run`, `run_extract_batch`, `get_extract_batch`

### Classification

Classify a document with a saved classifier or an inline set of types; manage classifiers and their runs.

`classify_document`, `create_classifier`, `update_classifier`, `get_classifier`, `list_classifiers`, `list_classifier_versions`, `publish_classifier_version`, `get_classify_run`, `list_classify_runs`, `cancel_classify_run`, `delete_classify_run`, `run_classify_batch`, `get_classify_batch`

### Splitting

Split a multi-document file into page ranges with a saved splitter or an inline configuration.

`split_document`, `create_splitter`, `update_splitter`, `get_splitter`, `list_splitters`, `list_splitter_versions`, `publish_splitter_version`, `get_split_run`, `list_split_runs`, `cancel_split_run`, `delete_split_run`, `run_split_batch`, `get_split_batch`

### PDF editing

Detect fillable fields in a PDF, generate an edit schema, and fill the form from field values.

`detect_form_fields`, `edit_pdf`, `get_edit_run`, `delete_edit_run`, `get_form_detection_run`

### Workflows

Run deployed or draft workflows, manage versions, and operate runs, including batches of up to 1,000 inputs.

`run_workflow`, `create_workflow`, `update_workflow`, `get_workflow`, `list_workflows`, `list_workflow_versions`, `deploy_workflow_version`, `get_workflow_run`, `list_workflow_runs`, `cancel_workflow_run`, `delete_workflow_run`, `run_workflow_batch`

### Files

Request a browser upload for local files, then retrieve metadata, temporary download URLs, and listings.

`request_file_upload`, `get_file_upload`, `get_file`, `list_files`, `delete_file`

### Webhooks

Create and manage webhook endpoints and the event subscriptions that notify your app when runs finish.

`create_webhook_endpoint`, `list_webhook_endpoints`, `update_webhook_endpoint`, `delete_webhook_endpoint`, `create_webhook_subscription`, `list_webhook_subscriptions`, `update_webhook_subscription`, `delete_webhook_subscription`

### Evaluations

Turn labeled documents into evaluation sets, run a processor version against them, and read the results.

`create_evaluation_set`, `list_evaluation_sets`, `add_evaluation_items`, `list_evaluation_items`, `update_evaluation_item`, `delete_evaluation_item`, `run_evaluation`, `get_evaluation_run`

### Access and documentation

Always available, even when product tools are filtered, so the agent can authenticate, pick a workspace, and look up current guidance.

`get_me`, `get_documentation`, `search_documentation`

## How runs work

- **Polling is handled for you** — The agent starts a run, waits, and resumes checking until it finishes. Workflow runs can take minutes to hours. If a workflow pauses for human review, the agent hands you a dashboard link.
- **Uploading files from chat** — Chat clients don't expose local files. The agent requests an upload link; you open it, drop your files, and click Done. Links expire after 15 minutes and only members of the target workspace can use them. Public URLs need no upload.
- **Structured errors** — Tool errors tell the agent what was wrong, link to the relevant docs page, and include a request ID. If the agent can't resolve one, ask it for the request ID and include it when contacting support@extend.ai.

## Frequently asked questions

### Authentication fails or tools return UNAUTHORIZED. What now?

Reconnect the server in your client to re-run the OAuth sign-in. Most clients have a reconnect or re-authenticate action on the server's settings entry; disconnecting and re-adding also works.

### The agent can't find a resource I know exists.

It's usually targeting the wrong place: resources are separated per workspace and per Test/Production environment. Ask the agent to check its granted workspaces and environments with the get_me tool and to target where the resource actually lives.

### Should my coding agent use MCP, the CLI, or an SDK?

MCP is the best fit for chat and tool-calling clients. For agents writing durable integration code, use an SDK with the extend-api skill; for one-off shell-driven jobs, the CLI with the extend-cli skill. The paths are independent, so set up only what your agent will use.

### Does ChatGPT need a paid plan?

Yes. MCP connectors require a paid ChatGPT plan. Follow the OpenAI documentation to add a custom connector with the Extend server URL and OAuth.

## Other ways to connect

### [CLI and extend-cli skill](https://www.extend.ai/agents/cli)

- **If your agent** If your agent runs one-off and shell-driven document jobs
- **Give it** The extend CLI and the extend-cli skill generated from its command tree.

### [SDK and extend-api skill](https://www.extend.ai/agents/sdk)

- **If your agent** If your agent writes durable integration code with an SDK
- **Give it** The extend-api context file plus the Python, TypeScript, Java, or Go SDK.
