> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apps.filed.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Reference for the Filed GraphQL API: endpoint, authentication, and operations

The Filed API is a single GraphQL endpoint. You send queries and mutations to one
URL and request exactly the fields you need.

```
https://router.apps.filed.com/graphql
```

Every request except [`health`](/apis/health) and the token exchange needs a
`Bearer` token. Most operations act on a workspace and need a **`workspaceToken`**;
see [Authentication](/guides/authentication) to create an API key and exchange it
for a token.

<Note>
  Clients and tasks are **not** top-level queries. They belong to a workspace and
  are reached through `me`, resolved as a `WorkspaceUser`:
  `me { ... on WorkspaceUser { workspace { clients { ... } tasks { ... } } } }`.
  The `workspaceToken` identifies the workspace, so you never pass a workspace ID.
</Note>

## Operations

Start with the operation that matches the product object you are trying to
work with. Most product workflows are not top-level GraphQL queries: read
`me`, resolve the caller as a `WorkspaceUser`, then traverse through
`workspace`, `clients`, `tasks`, and each client's `binder`.

| Need                                        | Start here                                                                        | Then use                                                                              |
| ------------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| Check auth and workspace scope              | [`me`](/apis/me)                                                                  | Read `workspace.id`, `workspace.name`, clients, and tasks.                            |
| Create or find a client                     | [`Clients`](/apis/clients)                                                        | Use client IDs for binder, task, and document operations.                             |
| Upload or attach source files               | [`Clients`](/apis/clients) and [Uploading documents](/guides/uploading-documents) | Attach uploaded file IDs to a client, then read the binder.                           |
| Read organized client documents             | [`Binder`](/apis/binder)                                                          | Query `binder.subdocuments`, `missingItemsAssessment`, `messageCounts`, and `search`. |
| Search across binder content                | [`Binder.search`](/apis/binder#search-the-binder)                                 | Search bookmarks, notes, marks, and extracted document content.                       |
| Add notes, flags, comments, or sign-offs    | [`Document messages`](/apis/document-messages)                                    | Use subdocument IDs from the binder as `documentPath`.                                |
| Read tax prep output and reviewer sign-offs | [`Leadsheets`](/apis/leadsheets)                                                  | Pass a tax prep or tax review `taskId` when you need a specific run.                  |
| Start data entry or tax prep work           | [`Task triggers`](/apis/task-triggers)                                            | Trigger the run, then poll [`Tasks`](/apis/tasks).                                    |
| Monitor background work                     | [`Tasks`](/apis/tasks)                                                            | Poll status, read errors, and link task results back to clients.                      |
| Run provider-specific integration actions   | [`Integration capabilities`](/apis/integration-capabilities)                      | List provider capabilities, run one, then poll the capability run.                    |
| Generate workpapers                         | [`Workpapers`](/apis/workpapers)                                                  | Use client and task context to request or read workpaper bundles.                     |
| Run planning workflows                      | [`Planning`](/apis/planning)                                                      | Use when the workflow is planning-specific rather than tax-prep-specific.             |
| Automate repeatable work                    | [`Skills`](/apis/skills)                                                          | Use skill APIs for stored automation behavior.                                        |

## MCP operation routing

When an MCP client reads these docs, prefer this routing pattern:

1. Call the docs tool first, then start at this API introduction.
2. Use [`me`](/apis/me) to verify the token resolves to a `WorkspaceUser`.
3. Use [`Clients`](/apis/clients) to find or create the client.
4. Use [`Binder`](/apis/binder) as the source of truth for client documents,
   missing items, document search, and document IDs.
5. Use [`Document messages`](/apis/document-messages) for all note, flag,
   comment, reply, hide, unhide, and sign-off writes.
6. Use [`Task triggers`](/apis/task-triggers) to start data entry or tax prep,
   then [`Tasks`](/apis/tasks) to poll the run.
7. Use [`Leadsheets`](/apis/leadsheets) to read tax prep review output and
   inspect sign-off state after a run.
8. Use [`Integration capabilities`](/apis/integration-capabilities) only after
   the user has named a provider action or integration workflow.

<Note>
  For MCP use, prefer a small number of focused GraphQL operations over one very
  large query. First discover workspace, client, binder, and task IDs. Then fetch
  the specific object needed for the user's request.
</Note>

<CardGroup cols={2}>
  <Card title="health" icon="heart-pulse" href="/apis/health">
    Unauthenticated liveness check for the API and its services.
  </Card>

  <Card title="me" icon="user" href="/apis/me">
    Identify the caller: a `User` (userToken) or `WorkspaceUser` (workspaceToken).
  </Card>

  <Card title="Clients" icon="users" href="/apis/clients">
    Create clients, list and fetch them, and add documents to a binder.
  </Card>

  <Card title="Tasks" icon="list-check" href="/apis/tasks">
    List background tasks and check a single task's status.
  </Card>

  <Card title="Conventions" icon="ruler" href="/apis/conventions">
    Scalars, IDs, pagination, sorting, and filtering.
  </Card>
</CardGroup>

## Guides

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/guides/authentication">
    Create an API key and exchange it for an access token.
  </Card>

  <Card title="Making requests" icon="code" href="/guides/making-requests">
    Request shape, variables, and the error model.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/guides/quickstart">
    Zero to a processed client in five steps.
  </Card>

  <Card title="Uploading documents" icon="upload" href="/guides/uploading-documents">
    Stage files through the resumable upload endpoint, then attach them.
  </Card>
</CardGroup>

## A first request

Confirm your token works with [`me`](/apis/me):

```bash cURL theme={null}
curl -X POST https://router.apps.filed.com/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_WORKSPACE_TOKEN" \
  -d '{ "query": "query { me { __typename ... on WorkspaceUser { workspace { id name } } } }" }'
```
