# MCP action reference

Source: https://pdfparse.net/docs/mcp/actions

Every PdfParse MCP action, its OAuth scope, parameters, and input and output schemas.



{/* Generated by pnpm --filter mcp run docs:export. Edit the server registrations, not this file. */}

The server exposes **29 actions**. This reference is generated from its actual MCP tools/list response.

See [Connect to MCP](https://pdfparse.net/docs/mcp) and [Usage examples](https://pdfparse.net/docs/mcp/examples). Download the [machine-readable catalog](https://pdfparse.net/mcp/tools.json).

## All actions

| Action                                                        | OAuth scope | Behavior                       |
| ------------------------------------------------------------- | ----------- | ------------------------------ |
| [`connection.profile`](https://pdfparse.net/docs/mcp/actions#connection-profile)                   | `mcp:read`  | Read                           |
| [`connection.info`](https://pdfparse.net/docs/mcp/actions#connection-info)                         | `mcp:read`  | Read                           |
| [`projects.create`](https://pdfparse.net/docs/mcp/actions#projects-create)                         | `mcp:write` | Creates or runs                |
| [`inboxes.list`](https://pdfparse.net/docs/mcp/actions#inboxes-list)                               | `mcp:read`  | Read                           |
| [`workflow.setup`](https://pdfparse.net/docs/mcp/actions#workflow-setup)                           | `mcp:write` | Creates or runs                |
| [`tables.list`](https://pdfparse.net/docs/mcp/actions#tables-list)                                 | `mcp:read`  | Read                           |
| [`tables.create`](https://pdfparse.net/docs/mcp/actions#tables-create)                             | `mcp:write` | Creates or runs                |
| [`routing_rules.list`](https://pdfparse.net/docs/mcp/actions#routing_rules-list)                   | `mcp:read`  | Read                           |
| [`routing_rules.create`](https://pdfparse.net/docs/mcp/actions#routing_rules-create)               | `mcp:write` | Creates or runs                |
| [`routing_rules.update`](https://pdfparse.net/docs/mcp/actions#routing_rules-update)               | `mcp:write` | Changes existing configuration |
| [`routing_rules.delete`](https://pdfparse.net/docs/mcp/actions#routing_rules-delete)               | `mcp:write` | Changes existing configuration |
| [`splitters.list`](https://pdfparse.net/docs/mcp/actions#splitters-list)                           | `mcp:read`  | Read                           |
| [`splitters.get`](https://pdfparse.net/docs/mcp/actions#splitters-get)                             | `mcp:read`  | Read                           |
| [`splitters.create_logical`](https://pdfparse.net/docs/mcp/actions#splitters-create_logical)       | `mcp:write` | Creates or runs                |
| [`splitters.update_logical`](https://pdfparse.net/docs/mcp/actions#splitters-update_logical)       | `mcp:write` | Changes existing configuration |
| [`splitters.create_page_range`](https://pdfparse.net/docs/mcp/actions#splitters-create_page_range) | `mcp:write` | Creates or runs                |
| [`splitters.update_page_range`](https://pdfparse.net/docs/mcp/actions#splitters-update_page_range) | `mcp:write` | Changes existing configuration |
| [`splitters.test_page_range`](https://pdfparse.net/docs/mcp/actions#splitters-test_page_range)     | `mcp:read`  | Read                           |
| [`splitters.publish`](https://pdfparse.net/docs/mcp/actions#splitters-publish)                     | `mcp:write` | Changes existing configuration |
| [`splitters.run_page_range`](https://pdfparse.net/docs/mcp/actions#splitters-run_page_range)       | `mcp:write` | Creates or runs                |
| [`splitters.archive`](https://pdfparse.net/docs/mcp/actions#splitters-archive)                     | `mcp:write` | Changes existing configuration |
| [`rows.search`](https://pdfparse.net/docs/mcp/actions#rows-search)                                 | `mcp:read`  | Read                           |
| [`jobs.create`](https://pdfparse.net/docs/mcp/actions#jobs-create)                                 | `mcp:write` | Creates or runs                |
| [`jobs.get`](https://pdfparse.net/docs/mcp/actions#jobs-get)                                       | `mcp:read`  | Read                           |
| [`documents.upload`](https://pdfparse.net/docs/mcp/actions#documents-upload)                       | `mcp:write` | Creates or runs                |
| [`documents.upload_file`](https://pdfparse.net/docs/mcp/actions#documents-upload_file)             | `mcp:write` | Creates or runs                |
| [`documents.get`](https://pdfparse.net/docs/mcp/actions#documents-get)                             | `mcp:read`  | Read                           |
| [`analysis.crosscheck`](https://pdfparse.net/docs/mcp/actions#analysis-crosscheck)                 | `mcp:read`  | Read                           |
| [`analysis.credit_memo`](https://pdfparse.net/docs/mcp/actions#analysis-credit_memo)               | `mcp:read`  | Read                           |

## connection profile

Action: `connection.profile`

Returns the stable, opaque ID of the connected PdfParse account.

OAuth scope: `mcp:read`.

### Parameters

| Parameter | Required | Type | Description |
| --------- | -------- | ---- | ----------- |
| None      | —        | —    | —           |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {},
  "additionalProperties": false
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": {}
}
```

## connection info

Action: `connection.info`

Returns the connected PdfParse account ID and its available projects, including project IDs, names, and slugs.

OAuth scope: `mcp:read`.

### Parameters

| Parameter | Required | Type | Description |
| --------- | -------- | ---- | ----------- |
| None      | —        | —    | —           |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string"
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "slug"
        ],
        "additionalProperties": {}
      }
    }
  },
  "required": [
    "user_id",
    "projects"
  ],
  "additionalProperties": {}
}
```

## projects create

Action: `projects.create`

Create an empty project in the connected PdfParse account. Returns its ID and slug for subsequent table and workflow setup.

OAuth scope: `mcp:write`.

### Parameters

| Parameter | Required | Type   | Description |
| --------- | -------- | ------ | ----------- |
| `name`    | Yes      | string | —           |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "project": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "slug": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "id",
        "slug"
      ],
      "additionalProperties": {}
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": {}
}
```

## inboxes list

Action: `inboxes.list`

Lists existing email inboxes in owned projects, including inbox IDs, addresses, and names.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    }
  }
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "inboxes": {}
  },
  "required": [
    "inboxes"
  ],
  "additionalProperties": {}
}
```

## workflow setup

Action: `workflow.setup`

Provisions one new table and routing rule, plus an optional new inbox and published logical splitter, in an existing owned project. With dry\_run: true, validates ownership, table-name collisions, and splitter conflicts without creating resources; blocked previews return blockers. Both preview and apply require mcp:write. Repeating the same intent resumes saved progress.

OAuth scope: `mcp:write`.

### Parameters

| Parameter          | Required | Type    | Description                                                                                                                                                                    |
| ------------------ | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `dry_run`          | No       | boolean | Set true to validate ownership and configuration conflicts and preview steps without creating resources. False (the default) applies the intent. Both modes require mcp:write. |
| `goal`             | Yes      | string  | Short statement of the requested workflow (10–2000 characters after trimming). The structured fields specify the configuration; the goal alone is not enough.                  |
| `project`          | Yes      | object  | Existing owned project in which to provision this workflow.                                                                                                                    |
| `table`            | Yes      | object  | One new extraction table and its columns. An integer id primary key is added automatically. Reusing an existing table is not supported by this operation.                      |
| `routing_rule`     | Yes      | object  | New classification rule targeting the table created by this intent; tableId is assigned automatically.                                                                         |
| `inbox`            | No       | object  | Optional new email inbox. classify uses project routing rules; direct routes to the table created by this intent. Omit to leave existing inboxes unchanged.                    |
| `logical_splitter` | No       | object  | Optional logical splitter to create and publish for the new inbox, or for project uploads when inbox is omitted. Uses project routing rules to choose destinations.            |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "dry_run": {
      "default": false,
      "description": "Set true to validate ownership and configuration conflicts and preview steps without creating resources. False (the default) applies the intent. Both modes require mcp:write.",
      "type": "boolean"
    },
    "goal": {
      "type": "string",
      "minLength": 10,
      "maxLength": 2000,
      "description": "Short statement of the requested workflow (10–2000 characters after trimming). The structured fields specify the configuration; the goal alone is not enough."
    },
    "project": {
      "type": "object",
      "properties": {
        "existing_slug": {
          "type": "string",
          "minLength": 1,
          "description": "Owned project slug. Setup never creates a project."
        }
      },
      "required": [
        "existing_slug"
      ],
      "additionalProperties": false,
      "description": "Existing owned project in which to provision this workflow."
    },
    "table": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1
        },
        "columns": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "prompt": {
                "type": "string"
              },
              "primaryKey": {
                "type": "boolean"
              },
              "unique": {
                "type": "boolean"
              },
              "autoIncrement": {
                "type": "boolean"
              },
              "nullable": {
                "type": "boolean"
              },
              "reanalyzeExisting": {
                "type": "boolean"
              },
              "type": {
                "type": "string",
                "enum": [
                  "text",
                  "number",
                  "date",
                  "boolean",
                  "foreign_key"
                ]
              },
              "referencedTable": {
                "type": "string"
              },
              "referencedColumn": {
                "type": "string"
              },
              "parentTable": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "prompt"
            ]
          }
        }
      },
      "required": [
        "name",
        "columns"
      ],
      "description": "One new extraction table and its columns. An integer id primary key is added automatically. Reusing an existing table is not supported by this operation."
    },
    "routing_rule": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 2,
          "maxLength": 100
        },
        "prompt": {
          "type": "string",
          "minLength": 10
        },
        "confidenceThreshold": {
          "type": "integer",
          "minimum": 60,
          "maximum": 100
        },
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "name",
        "prompt"
      ],
      "description": "New classification rule targeting the table created by this intent; tableId is assigned automatically."
    },
    "inbox": {
      "description": "Optional new email inbox. classify uses project routing rules; direct routes to the table created by this intent. Omit to leave existing inboxes unchanged.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80
        },
        "routing": {
          "default": "classify",
          "type": "string",
          "enum": [
            "classify",
            "direct"
          ]
        },
        "sender_allowlist": {
          "maxItems": 100,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "address",
                  "domain"
                ]
              },
              "value": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "type",
              "value"
            ]
          }
        }
      },
      "required": [
        "name"
      ]
    },
    "logical_splitter": {
      "description": "Optional logical splitter to create and publish for the new inbox, or for project uploads when inbox is omitted. Uses project routing rules to choose destinations.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        "instructions": {
          "type": "string",
          "minLength": 10,
          "maxLength": 4000
        },
        "section_types": {
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_]{1,63}$"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "description": {
                "type": "string",
                "maxLength": 500
              }
            },
            "required": [
              "key",
              "name"
            ]
          }
        },
        "review_uncertain_boundaries": {
          "default": true,
          "type": "boolean"
        },
        "review_uncertain_destinations": {
          "default": true,
          "type": "boolean"
        }
      },
      "required": [
        "name",
        "instructions",
        "section_types"
      ]
    }
  },
  "required": [
    "goal",
    "project",
    "table",
    "routing_rule"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "One of: preview, blocked, active, in_progress, partial"
    },
    "goal": {
      "type": "string"
    },
    "setup_id": {
      "type": "string"
    },
    "blockers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "status",
    "goal"
  ],
  "additionalProperties": {}
}
```

## tables list

Action: `tables.list`

Lists tables in an owned project, including their extraction columns. project\_slug is required for accounts with multiple visible projects.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    }
  }
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "tables": {}
  },
  "required": [
    "tables"
  ],
  "additionalProperties": {}
}
```

## tables create

Action: `tables.create`

Creates a table with extraction columns in an owned project. An integer primary key named id is added automatically and generated by the database during extraction.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `name`         | Yes      | string | —                                                                                                                                               |
| `columns`      | Yes      | array  | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "columns": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "prompt": {
            "type": "string"
          },
          "primaryKey": {
            "type": "boolean"
          },
          "unique": {
            "type": "boolean"
          },
          "autoIncrement": {
            "type": "boolean"
          },
          "nullable": {
            "type": "boolean"
          },
          "reanalyzeExisting": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "text",
              "number",
              "date",
              "boolean",
              "foreign_key"
            ]
          },
          "referencedTable": {
            "type": "string"
          },
          "referencedColumn": {
            "type": "string"
          },
          "parentTable": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "prompt"
        ]
      }
    }
  },
  "required": [
    "name",
    "columns"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "table": {}
  },
  "required": [
    "table"
  ],
  "additionalProperties": {}
}
```

## routing\_rules list

Action: `routing_rules.list`

List document classification rules and their destination tables in a project.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    }
  }
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "routing_rules": {}
  },
  "required": [
    "routing_rules"
  ],
  "additionalProperties": {}
}
```

## routing\_rules create

Action: `routing_rules.create`

Create a rule that recognizes a document type and routes it to an extraction table. The table must belong to this project.

OAuth scope: `mcp:write`.

### Parameters

| Parameter             | Required | Type    | Description                                                                                                                                     |
| --------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug`        | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `name`                | Yes      | string  | —                                                                                                                                               |
| `prompt`              | Yes      | string  | —                                                                                                                                               |
| `confidenceThreshold` | No       | integer | —                                                                                                                                               |
| `tableId`             | Yes      | string  | —                                                                                                                                               |
| `enabled`             | No       | boolean | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100
    },
    "prompt": {
      "type": "string",
      "minLength": 10
    },
    "confidenceThreshold": {
      "type": "integer",
      "minimum": 60,
      "maximum": 100
    },
    "tableId": {
      "type": "string",
      "minLength": 1
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "name",
    "prompt",
    "tableId"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "routing_rule": {}
  },
  "required": [
    "routing_rule"
  ],
  "additionalProperties": {}
}
```

## routing\_rules update

Action: `routing_rules.update`

Change a routing rule, including its prompt, destination, confidence threshold, or enabled state.

OAuth scope: `mcp:write`.

### Parameters

| Parameter             | Required | Type    | Description                                                                                                                                     |
| --------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug`        | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `rule_id`             | Yes      | string  | —                                                                                                                                               |
| `name`                | No       | string  | —                                                                                                                                               |
| `prompt`              | No       | string  | —                                                                                                                                               |
| `confidenceThreshold` | No       | integer | —                                                                                                                                               |
| `tableId`             | No       | string  | —                                                                                                                                               |
| `enabled`             | No       | boolean | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "rule_id": {
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100
    },
    "prompt": {
      "type": "string",
      "minLength": 10
    },
    "confidenceThreshold": {
      "type": "integer",
      "minimum": 60,
      "maximum": 100
    },
    "tableId": {
      "type": "string",
      "minLength": 1
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "rule_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "routing_rule": {}
  },
  "required": [
    "routing_rule"
  ],
  "additionalProperties": {}
}
```

## routing\_rules delete

Action: `routing_rules.delete`

Delete a routing rule from a project.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `rule_id`      | Yes      | string | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "rule_id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "rule_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": {}
}
```

## splitters list

Action: `splitters.list`

List page-range and logical splitters, including drafts and published versions, in a project.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    }
  }
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "splitters": {}
  },
  "required": [
    "splitters"
  ],
  "additionalProperties": {}
}
```

## splitters get

Action: `splitters.get`

Returns a splitter draft and its published versions.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `splitter_id`  | Yes      | string | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "splitter_id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "splitter_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "splitter": {}
  },
  "required": [
    "splitter"
  ],
  "additionalProperties": {}
}
```

## splitters create\_logical

Action: `splitters.create_logical`

Creates an inactive logical splitter draft for mixed PDF attachments. sourceInboxId binds it to one inbox; null applies to project uploads. Routing uses project routing rules. The draft becomes active only after publication.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `name`         | Yes      | string | —                                                                                                                                               |
| `description`  | No       | union  | —                                                                                                                                               |
| `config`       | Yes      | object | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "description": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "config": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "const": "logical"
        },
        "sourceInboxId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        },
        "instructions": {
          "type": "string",
          "minLength": 10,
          "maxLength": 4000
        },
        "sectionTypes": {
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_]{1,63}$"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "description": {
                "type": "string",
                "maxLength": 500
              }
            },
            "required": [
              "key",
              "name"
            ]
          }
        },
        "routingMode": {
          "type": "string",
          "const": "project_rules"
        },
        "reviewUncertainBoundaries": {
          "type": "boolean"
        },
        "reviewUncertainDestinations": {
          "type": "boolean"
        },
        "boundaryConfidenceThreshold": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "maxSegments": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        }
      },
      "required": [
        "mode",
        "sourceInboxId",
        "instructions",
        "sectionTypes",
        "routingMode",
        "reviewUncertainBoundaries",
        "reviewUncertainDestinations"
      ]
    }
  },
  "required": [
    "name",
    "config"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "splitter": {}
  },
  "required": [
    "splitter"
  ],
  "additionalProperties": {}
}
```

## splitters update\_logical

Action: `splitters.update_logical`

Updates a logical splitter draft. expected\_draft\_revision must match its current draft revision.

OAuth scope: `mcp:write`.

### Parameters

| Parameter                 | Required | Type    | Description                                                                                                                                     |
| ------------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug`            | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `splitter_id`             | Yes      | string  | —                                                                                                                                               |
| `expected_draft_revision` | Yes      | integer | —                                                                                                                                               |
| `name`                    | Yes      | string  | —                                                                                                                                               |
| `description`             | No       | union   | —                                                                                                                                               |
| `config`                  | Yes      | object  | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "splitter_id": {
      "type": "string",
      "minLength": 1
    },
    "expected_draft_revision": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "description": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "config": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "const": "logical"
        },
        "sourceInboxId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        },
        "instructions": {
          "type": "string",
          "minLength": 10,
          "maxLength": 4000
        },
        "sectionTypes": {
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_]{1,63}$"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "description": {
                "type": "string",
                "maxLength": 500
              }
            },
            "required": [
              "key",
              "name"
            ]
          }
        },
        "routingMode": {
          "type": "string",
          "const": "project_rules"
        },
        "reviewUncertainBoundaries": {
          "type": "boolean"
        },
        "reviewUncertainDestinations": {
          "type": "boolean"
        },
        "boundaryConfidenceThreshold": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "maxSegments": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        }
      },
      "required": [
        "mode",
        "sourceInboxId",
        "instructions",
        "sectionTypes",
        "routingMode",
        "reviewUncertainBoundaries",
        "reviewUncertainDestinations"
      ]
    }
  },
  "required": [
    "splitter_id",
    "expected_draft_revision",
    "name",
    "config"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "splitter": {}
  },
  "required": [
    "splitter"
  ],
  "additionalProperties": {}
}
```

## splitters create\_page\_range

Action: `splitters.create_page_range`

Create a splitter draft with fixed page ranges and project-owned destination tables.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `name`         | Yes      | string | —                                                                                                                                               |
| `description`  | No       | string | —                                                                                                                                               |
| `config`       | Yes      | object | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "config": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "const": "page_range"
        },
        "overlap_policy": {
          "type": "string",
          "enum": [
            "exclusive",
            "allowed"
          ]
        },
        "unassigned_policy": {
          "type": "string",
          "enum": [
            "review",
            "ignore",
            "fallback"
          ]
        },
        "fallback_section_key": {
          "type": "string"
        },
        "max_segments": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        },
        "sections": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "section_key": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_]{1,63}$"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 1000
              },
              "destination_table_id": {
                "type": "string",
                "minLength": 1
              },
              "page_spans": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "start_page": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991
                    },
                    "end_page": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "start_page",
                    "end_page"
                  ]
                }
              }
            },
            "required": [
              "section_key",
              "name",
              "destination_table_id",
              "page_spans"
            ]
          }
        }
      },
      "required": [
        "sections"
      ]
    }
  },
  "required": [
    "name",
    "config"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "splitter": {}
  },
  "required": [
    "splitter"
  ],
  "additionalProperties": {}
}
```

## splitters update\_page\_range

Action: `splitters.update_page_range`

Update a fixed page-range splitter draft using its current draft revision.

OAuth scope: `mcp:write`.

### Parameters

| Parameter                 | Required | Type    | Description                                                                                                                                     |
| ------------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug`            | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `splitter_id`             | Yes      | string  | —                                                                                                                                               |
| `expected_draft_revision` | Yes      | integer | —                                                                                                                                               |
| `name`                    | No       | string  | —                                                                                                                                               |
| `description`             | No       | union   | —                                                                                                                                               |
| `config`                  | No       | object  | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "splitter_id": {
      "type": "string",
      "minLength": 1
    },
    "expected_draft_revision": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100
    },
    "description": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 1000
        },
        {
          "type": "null"
        }
      ]
    },
    "config": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "const": "page_range"
        },
        "overlap_policy": {
          "type": "string",
          "enum": [
            "exclusive",
            "allowed"
          ]
        },
        "unassigned_policy": {
          "type": "string",
          "enum": [
            "review",
            "ignore",
            "fallback"
          ]
        },
        "fallback_section_key": {
          "type": "string"
        },
        "max_segments": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        },
        "sections": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "section_key": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_]{1,63}$"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 1000
              },
              "destination_table_id": {
                "type": "string",
                "minLength": 1
              },
              "page_spans": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "start_page": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991
                    },
                    "end_page": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "start_page",
                    "end_page"
                  ]
                }
              }
            },
            "required": [
              "section_key",
              "name",
              "destination_table_id",
              "page_spans"
            ]
          }
        }
      },
      "required": [
        "sections"
      ]
    }
  },
  "required": [
    "splitter_id",
    "expected_draft_revision"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "splitter": {}
  },
  "required": [
    "splitter"
  ],
  "additionalProperties": {}
}
```

## splitters test\_page\_range

Action: `splitters.test_page_range`

Preview page assignments and review flags for a fixed page-range splitter without saving a run.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type    | Description                                                                                                                                     |
| -------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `splitter_id`  | Yes      | string  | —                                                                                                                                               |
| `page_count`   | Yes      | integer | —                                                                                                                                               |
| `version`      | No       | integer | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "splitter_id": {
      "type": "string",
      "minLength": 1
    },
    "page_count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "splitter_id",
    "page_count"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "preview": {}
  },
  "required": [
    "preview"
  ],
  "additionalProperties": {}
}
```

## splitters publish

Action: `splitters.publish`

Publish a splitter draft. A logical splitter becomes active for its source inbox or project uploads.

OAuth scope: `mcp:write`.

### Parameters

| Parameter                 | Required | Type    | Description                                                                                                                                     |
| ------------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug`            | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `splitter_id`             | Yes      | string  | —                                                                                                                                               |
| `expected_draft_revision` | Yes      | integer | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "splitter_id": {
      "type": "string",
      "minLength": 1
    },
    "expected_draft_revision": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "splitter_id",
    "expected_draft_revision"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "publication": {}
  },
  "required": [
    "publication"
  ],
  "additionalProperties": {}
}
```

## splitters run\_page\_range

Action: `splitters.run_page_range`

Run a published fixed page-range splitter on a document in this project.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type    | Description                                                                                                                                     |
| -------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `splitter_id`  | Yes      | string  | —                                                                                                                                               |
| `document_id`  | Yes      | integer | —                                                                                                                                               |
| `version`      | No       | integer | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "splitter_id": {
      "type": "string",
      "minLength": 1
    },
    "document_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "splitter_id",
    "document_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "run": {}
  },
  "required": [
    "run"
  ],
  "additionalProperties": {}
}
```

## splitters archive

Action: `splitters.archive`

Archive a splitter to stop using it for future documents.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `splitter_id`  | Yes      | string | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "splitter_id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "splitter_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": {}
}
```

## rows search

Action: `rows.search`

Returns paginated extracted rows from a table in an owned project, with optional filters and ordering.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type    | Description                                                                                                                                     |
| -------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `table_id`     | Yes      | string  | —                                                                                                                                               |
| `filters`      | No       | array   | Row conditions combined with AND. Omit or pass \[] for no filtering.                                                                            |
| `orderBy`      | No       | object  | —                                                                                                                                               |
| `page`         | No       | integer | —                                                                                                                                               |
| `pageSize`     | No       | integer | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "table_id": {
      "type": "string",
      "minLength": 1
    },
    "filters": {
      "description": "Row conditions combined with AND. Omit or pass [] for no filtering.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "column": {
            "type": "string",
            "minLength": 1,
            "description": "Exact column name in the selected table, or document_record_id to select source file IDs. Unknown columns are rejected."
          },
          "op": {
            "type": "string",
            "enum": [
              "eq",
              "ne",
              "gt",
              "gte",
              "lt",
              "lte",
              "like",
              "in"
            ],
            "description": "Comparison operator: eq/ne for equality/inequality, gt/gte/lt/lte for ordered comparisons, like for SQL patterns (% matches any sequence, _ one character), or in for membership."
          },
          "value": {
            "description": "Value matching the column type. Use a scalar for comparisons, a string pattern for like (for example Acme%), or an array for in (a scalar is also accepted as one item; an empty array matches no rows)."
          }
        },
        "required": [
          "column",
          "op",
          "value"
        ]
      }
    },
    "orderBy": {
      "type": "object",
      "properties": {
        "column": {
          "type": "string"
        },
        "direction": {
          "type": "string",
          "enum": [
            "asc",
            "desc"
          ]
        }
      },
      "required": [
        "column",
        "direction"
      ]
    },
    "page": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 200
    }
  },
  "required": [
    "table_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "rows": {}
  },
  "required": [
    "rows"
  ],
  "additionalProperties": {}
}
```

## jobs create

Action: `jobs.create`

Start extraction for documents already uploaded to a table.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `tableSlug`    | Yes      | string | —                                                                                                                                               |
| `documentKeys` | Yes      | array  | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "tableSlug": {
      "type": "string",
      "minLength": 1
    },
    "documentKeys": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "tableSlug",
    "documentKeys"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "job": {}
  },
  "required": [
    "job"
  ],
  "additionalProperties": {}
}
```

## jobs get

Action: `jobs.get`

Returns an extraction job in an owned project.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type    | Description                                                                                                                                     |
| -------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `job_id`       | Yes      | integer | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "job_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "job": {}
  },
  "required": [
    "job"
  ],
  "additionalProperties": {}
}
```

## documents upload

Action: `documents.upload`

Uploads and saves a PDF from base64 file bytes. With tableSlug, attempts to create an extraction job immediately, returning job on success or job\_error on failure. Without tableSlug, automatic processing uses project routing rules or an active splitter. Returns document identifiers and processing details. Maximum decoded file size: 8 MiB.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `filename`     | Yes      | string | —                                                                                                                                               |
| `data_base64`  | Yes      | string | —                                                                                                                                               |
| `tableSlug`    | No       | string | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "filename": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "data_base64": {
      "type": "string",
      "minLength": 1,
      "maxLength": 11200000
    },
    "tableSlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    }
  },
  "required": [
    "filename",
    "data_base64"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "uploadId": {
      "type": "string"
    },
    "fileId": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "file_id": {
      "type": "string"
    },
    "document_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "routing_mode": {
      "type": "string",
      "enum": [
        "direct",
        "automatic"
      ]
    },
    "job": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "job_error": {
      "type": "string"
    },
    "next_action": {
      "type": "object",
      "properties": {
        "tool": {
          "type": "string"
        },
        "arguments": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "tool",
        "arguments"
      ],
      "additionalProperties": {}
    }
  },
  "required": [
    "uploadId",
    "fileId",
    "status",
    "file_id",
    "document_id",
    "routing_mode",
    "job",
    "next_action"
  ],
  "additionalProperties": {}
}
```

## documents upload\_file

Action: `documents.upload_file`

Uploads and saves a user-selected ChatGPT PDF attachment from an approved HTTPS file host. With tableSlug, attempts to create an extraction job immediately, returning job on success or job\_error on failure. Without tableSlug, automatic processing uses project routing rules or an active splitter. Returns document identifiers and processing details. Maximum file size: 8 MiB.

OAuth scope: `mcp:write`.

### Parameters

| Parameter      | Required | Type   | Description                                                                                                                                     |
| -------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `file`         | Yes      | object | —                                                                                                                                               |
| `tableSlug`    | No       | string | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "file": {
      "type": "object",
      "properties": {
        "download_url": {
          "type": "string",
          "format": "uri"
        },
        "file_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        },
        "mime_type": {
          "type": "string"
        },
        "file_name": {
          "type": "string",
          "maxLength": 255
        }
      },
      "required": [
        "download_url",
        "file_id"
      ],
      "additionalProperties": false
    },
    "tableSlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    }
  },
  "required": [
    "file"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "uploadId": {
      "type": "string"
    },
    "fileId": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "file_id": {
      "type": "string"
    },
    "document_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "routing_mode": {
      "type": "string",
      "enum": [
        "direct",
        "automatic"
      ]
    },
    "job": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "job_error": {
      "type": "string"
    },
    "next_action": {
      "type": "object",
      "properties": {
        "tool": {
          "type": "string"
        },
        "arguments": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "tool",
        "arguments"
      ],
      "additionalProperties": {}
    }
  },
  "required": [
    "uploadId",
    "fileId",
    "status",
    "file_id",
    "document_id",
    "routing_mode",
    "job",
    "next_action"
  ],
  "additionalProperties": {}
}
```

## documents get

Action: `documents.get`

Returns a saved document by file\_id or numeric document\_id, including its numeric ID, status, destination table, extraction job IDs, and processing runs. At least one document identifier is required.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type    | Description                                                                                                                                     |
| -------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects. |
| `file_id`      | No       | string  | —                                                                                                                                               |
| `document_id`  | No       | integer | —                                                                                                                                               |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "file_id": {
      "type": "string",
      "minLength": 1
    },
    "document_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  }
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "document": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "file_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "type": "string"
        },
        "page_count": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "file_size": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "table_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "project_slug": {
          "type": "string"
        },
        "created_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "updated_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "processed_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "job_ids": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "processing_runs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "job_id": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "job_status": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": "string"
              },
              "current_stage": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "failure_code": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "created_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "updated_at": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "job_id",
              "job_status",
              "status",
              "current_stage",
              "failure_code",
              "created_at",
              "updated_at"
            ],
            "additionalProperties": {}
          }
        }
      },
      "required": [
        "id",
        "file_id",
        "name",
        "status",
        "page_count",
        "file_size",
        "table_id",
        "project_slug",
        "created_at",
        "updated_at",
        "processed_at",
        "job_ids",
        "processing_runs"
      ],
      "additionalProperties": {}
    },
    "next_action": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "tool": {
              "type": "string"
            },
            "arguments": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "required": [
            "tool",
            "arguments"
          ],
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "document",
    "next_action"
  ],
  "additionalProperties": {}
}
```

## analysis crosscheck

Action: `analysis.crosscheck`

Analyzes already extracted rows for consistency issues and underwriting risk contradictions, returning findings with row and field references in this call. Does not run or wait for extraction or save changes. Requires mcp:read and sends bounded row evidence to an external model: at most 80 rows from the first 200 matches, with long values shortened. Returns evidence coverage metadata.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type    | Description                                                                                                                                                                                                                                             |
| -------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.                                                                                                         |
| `table_id`     | Yes      | string  | ID or slug of the table containing already extracted rows in the selected project. Required even with job\_id; the job must belong to this table.                                                                                                       |
| `job_id`       | No       | integer | Positive integer extraction job ID. Restricts rows to that job's document file IDs and must belong to table\_id in the selected project. Omitting it adds no job restriction. This selects existing evidence; it does not start or wait for extraction. |
| `filters`      | No       | array   | Row conditions combined with AND, also intersected with the job document restriction when job\_id is supplied. An omitted or empty array adds no filtering. Each condition contains column, op, and value.                                              |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "table_id": {
      "type": "string",
      "minLength": 1,
      "description": "ID or slug of the table containing already extracted rows in the selected project. Required even with job_id; the job must belong to this table."
    },
    "job_id": {
      "description": "Positive integer extraction job ID. Restricts rows to that job's document file IDs and must belong to table_id in the selected project. Omitting it adds no job restriction. This selects existing evidence; it does not start or wait for extraction.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "filters": {
      "description": "Row conditions combined with AND, also intersected with the job document restriction when job_id is supplied. An omitted or empty array adds no filtering. Each condition contains column, op, and value.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "column": {
            "type": "string",
            "minLength": 1,
            "description": "Exact column name in the selected table, or document_record_id to select source file IDs. Unknown columns are rejected."
          },
          "op": {
            "type": "string",
            "enum": [
              "eq",
              "ne",
              "gt",
              "gte",
              "lt",
              "lte",
              "like",
              "in"
            ],
            "description": "Comparison operator: eq/ne for equality/inequality, gt/gte/lt/lte for ordered comparisons, like for SQL patterns (% matches any sequence, _ one character), or in for membership."
          },
          "value": {
            "description": "Value matching the column type. Use a scalar for comparisons, a string pattern for like (for example Acme%), or an array for in (a scalar is also accepted as one item; an empty array matches no rows)."
          }
        },
        "required": [
          "column",
          "op",
          "value"
        ]
      }
    }
  },
  "required": [
    "table_id"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "mismatches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ]
          },
          "message": {
            "type": "string"
          },
          "row_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "code",
          "severity",
          "message",
          "row_refs",
          "source_refs"
        ],
        "additionalProperties": false
      }
    },
    "summary": {
      "type": "string"
    },
    "evidence": {
      "type": "object",
      "properties": {
        "rows_total": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "rows_used": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "truncated": {
          "type": "boolean"
        },
        "job_id": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "job_document_count": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "rows_total",
        "rows_used",
        "truncated",
        "job_id",
        "job_document_count"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "mismatches",
    "summary"
  ],
  "additionalProperties": {}
}
```

## analysis credit\_memo

Action: `analysis.credit_memo`

Generates a first-pass commercial loan credit memo with citations from already extracted rows, returning the memo in this call. Includes a crosscheck internally. Does not run or wait for extraction or save changes. Requires mcp:read and sends bounded row evidence to an external model: at most 80 rows from the first 200 matches, with long values shortened. Returns evidence coverage metadata and assumptions.

OAuth scope: `mcp:read`.

### Parameters

| Parameter      | Required | Type    | Description                                                                                                                                                                                                                                             |
| -------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `project_slug` | No       | string  | Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.                                                                                                         |
| `table_id`     | Yes      | string  | ID or slug of the table containing already extracted rows in the selected project. Required even with job\_id; the job must belong to this table.                                                                                                       |
| `job_id`       | No       | integer | Positive integer extraction job ID. Restricts rows to that job's document file IDs and must belong to table\_id in the selected project. Omitting it adds no job restriction. This selects existing evidence; it does not start or wait for extraction. |
| `filters`      | No       | array   | Row conditions combined with AND, also intersected with the job document restriction when job\_id is supplied. An omitted or empty array adds no filtering. Each condition contains column, op, and value.                                              |
| `memo_profile` | Yes      | string  | Required memo template identifier. The only supported value is commercial-loan-v1, for a first-pass commercial loan underwriting memo.                                                                                                                  |

### Input schema

```json
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "project_slug": {
      "description": "Slug of an owned project. Optional only when the account has exactly one visible project; required for accounts with multiple visible projects.",
      "type": "string",
      "minLength": 1
    },
    "table_id": {
      "type": "string",
      "minLength": 1,
      "description": "ID or slug of the table containing already extracted rows in the selected project. Required even with job_id; the job must belong to this table."
    },
    "job_id": {
      "description": "Positive integer extraction job ID. Restricts rows to that job's document file IDs and must belong to table_id in the selected project. Omitting it adds no job restriction. This selects existing evidence; it does not start or wait for extraction.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "filters": {
      "description": "Row conditions combined with AND, also intersected with the job document restriction when job_id is supplied. An omitted or empty array adds no filtering. Each condition contains column, op, and value.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "column": {
            "type": "string",
            "minLength": 1,
            "description": "Exact column name in the selected table, or document_record_id to select source file IDs. Unknown columns are rejected."
          },
          "op": {
            "type": "string",
            "enum": [
              "eq",
              "ne",
              "gt",
              "gte",
              "lt",
              "lte",
              "like",
              "in"
            ],
            "description": "Comparison operator: eq/ne for equality/inequality, gt/gte/lt/lte for ordered comparisons, like for SQL patterns (% matches any sequence, _ one character), or in for membership."
          },
          "value": {
            "description": "Value matching the column type. Use a scalar for comparisons, a string pattern for like (for example Acme%), or an array for in (a scalar is also accepted as one item; an empty array matches no rows)."
          }
        },
        "required": [
          "column",
          "op",
          "value"
        ]
      }
    },
    "memo_profile": {
      "type": "string",
      "const": "commercial-loan-v1",
      "description": "Required memo template identifier. The only supported value is commercial-loan-v1, for a first-pass commercial loan underwriting memo."
    }
  },
  "required": [
    "table_id",
    "memo_profile"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "risk_score": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "citations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "title",
          "content",
          "citations"
        ],
        "additionalProperties": false
      }
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "memo_profile": {
      "type": "string",
      "const": "commercial-loan-v1"
    },
    "evidence": {
      "type": "object",
      "properties": {
        "rows_total": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "rows_used": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "truncated": {
          "type": "boolean"
        },
        "job_id": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "job_document_count": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "rows_total",
        "rows_used",
        "truncated",
        "job_id",
        "job_document_count"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "risk_score",
    "sections",
    "assumptions",
    "memo_profile"
  ],
  "additionalProperties": {}
}
```

