TaxDome logo

Help Center

Sign up Log in

TaxDome API & MCP tool catalog (Beta)

note icon

Beta

MCP and the API are open to every firm in the beta community. This list grows as we add to them.

This is the full list of what you can do through TaxDome’s MCP and API. See TaxDome API & MCP explained for what MCP and the API are, and how to connect. For request and response details on each endpoint, open the API docs tab in Settings > API & MCP.

tip icon

Tip

Want an automation but don’t write code? Send this page’s link to your AI assistant, describe what should happen, and ask it to write the automation for you.

What each tool can do

MCP and the API give access to the same set of actions. They’re two different ways to trigger them:

  • Through MCP, ask your AI assistant for the action in plain language. Use the What it does column as a guide. You don’t need to know any endpoint names.

  • Through the API, your program sends requests to the endpoints in the Endpoint (API) column, added to yoursubdomain.taxdome.com/api/v4. For example, GET yoursubdomain.taxdome.com/api/v4/clients lists your clients.

What each key or connection can do also depends on its access rights .

Clients and contacts

Endpoint (API) What it does Notes
GET /clients Lists the firm’s client accounts. Accepts a search term. Filters: account type, lead, state, tag, assignee (team member), last sign-in, and created, updated, and archived dates.
GET /clients/{id} Reads one client account. Contacts are a separate read.
POST /clients Creates a client account.
PATCH /clients/{id} Updates a client account. Only the fields you send change.
PATCH /clients/{id}/tags/{tag_id}
DELETE /clients/{id}/tags/{tag_id}
Adds a tag to a client or removes one. The tag itself doesn’t change.
GET /contacts
GET /contacts/{id}
Lists and reads contacts. Accepts a search term. Filter: client (the contacts linked to a client).
POST /contacts
PATCH /contacts/{id}
Creates and updates contacts.
GET /contact_links
POST /contact_links
DELETE /contact_links/{id}
Lists, links, and unlinks contacts and client accounts. Unlinking deletes the notes kept on the link; the contact and the client stay.
GET /client_assignments
GET /client_assignments/{id}
Shows who is on a client’s team. Needs a client filter. Read-only: the team is changed in TaxDome.
GET /account_role_assignments
GET /account_role_assignments/{id}
Shows which account role each team member holds on a client. Needs a client filter. Read-only.
GET /tags
GET /tags/{id}
POST /tags
PATCH /tags/{id}
Lists, reads, creates, and updates tags. GET /tags/colors lists the colors a tag can have.
GET /client_notes
POST /client_notes
PATCH /client_notes/{id}
DELETE /client_notes/{id}
Reads and writes notes on client accounts. Deleting a note archives it, and it can’t be restored through MCP or the API.
GET /client_custom_fields
POST /client_custom_fields
GET /contact_custom_fields
POST /contact_custom_fields
Lists and creates client and contact custom fields.
GET /organizers
GET /organizers/{id}
Lists and reads organizers. Filters: client, archived, finished, sealed, and submitted, created, and updated dates.

Jobs and pipelines

Endpoint (API) What it does Notes
GET /jobs
GET /jobs/{id}
Lists and reads jobs. Accepts a search term (matches the job name). Filters: client, assignee, pipeline stage, job status, priority, due date, internal deadline, and created and completed dates.
POST /jobs Creates a job for a client in a pipeline. The job starts at the stage you name, or at the pipeline’s first stage. Stage automations run only if you name each one.
PATCH /jobs/{id} Edits a job’s name, description, priority, dates, and time budget. Status, stage, and assignees are changed separately.
PATCH /jobs/{id}/status Sets a job’s status. This is the job status, not the stage.
POST /jobs/{id}/move Moves a job to another stage of its pipeline. Runs that stage’s automations, as in TaxDome. They can email or text the client, send a real invoice, or send an engagement letter to real signers.
GET /jobs/{id}/unfinished_requirements Shows what’s keeping a job from moving on by itself. Open tasks, invoices, organizers, proposals, chats, tax returns, and documents waiting for a signature, approval, or payment.
GET /job_assignments
POST /job_assignments
DELETE /job_assignments/{id}
Lists, adds, and removes job assignees.
GET /jobs/{id}/links
POST /jobs/{id}/links
Lists and adds records linked to a job. For example, documents, invoices, and tasks.
GET /pipelines
GET /pipelines/{id}
POST /pipelines
POST /pipelines/{id}/clone
Lists, reads, creates, and copies pipelines. A copy includes the pipeline’s stages and automations.
GET /pipeline_stages
GET /job_statuses
GET /job_client_statuses
Lists pipeline stages, job statuses, and client-facing job statuses.
GET /job_recurrences
GET /job_recurrence_assignments
POST /job_recurrence_assignments
DELETE /job_recurrence_assignments/{id}
Lists recurring job rules and manages who their future jobs are assigned to.

Tasks

Endpoint (API) What it does Notes
GET /tasks
GET /tasks/{id}
Lists and reads tasks. Accepts a search term (matches the task name, not the description). Filters: client, assignee, status, priority, due date, and created and completed dates.
POST /tasks Creates a task.
PATCH /tasks/{id} Updates a task. Only the fields you send change.
DELETE /tasks/{id} Deletes a task. Permanent. Tasks don’t go to the trash.
GET /task_assignments
POST /task_assignments
DELETE /task_assignments/{id}
Lists, adds, and removes task assignees. Assigned team members are notified, as in TaxDome.
GET /tasks/{id}/notes
POST /tasks/{id}/notes
PATCH /tasks/{id}/notes/{note_id}
DELETE /tasks/{id}/notes/{note_id}
Reads and writes notes on a task. A deleted note can’t be restored.

Tax return delivery

Endpoint (API) What it does Notes
GET /tax_returns
GET /tax_returns/{id}
Lists the tax returns sent to clients and shows where each one stands. Includes the client, preparation status, amount owed or refunded and to which tax authority, and when it was sent. For example, ask your AI assistant to message every client who owes tax to California. Filters: client, preparation state, and created and sent-to-client dates.
GET /tax_returns/{id}/categories Shows how the return’s pages are organized into transmittal letters, e-sign pages, and payment vouchers. Returns the whole set at once, no paging.

Invoices and billing

Endpoint (API) What it does Notes
GET /bills
GET /bills/{id}
Lists and reads invoices. Filters: client, status, overdue, amount, and posted, paid, created, and updated dates.
GET /bills/{bill_id}/line_items Reads an invoice’s line items.
GET /payments
GET /payments/{id}
Lists and reads payments. Filters: client, payment type, state, and paid, created, and updated dates.
GET /proposals
GET /proposals/{id}
GET /proposals/{id}/line_items
GET /proposals/{id}/packages
Lists and reads proposals, with their services, prices, and packages.
GET /time_entries Lists time entries. Filters: client, assignee, task, invoice, invoice status, state, and start and created dates.
POST /time_entries/{id}/pause
POST /time_entries/{id}/resume
POST /time_entries/{id}/finish
Pauses, resumes, or stops a timer. A finished timer can’t be restarted.

Documents

Endpoint (API) What it does Notes
GET /documents
GET /documents/{id}
Lists and reads document records. Metadata only: name, client, folder, and approval and e-signature state. The file itself can’t be downloaded or read yet. Filter: e-signature state.
POST /blobs
GET /blobs/{id}/upload_url
Gets a secure link to upload a file. The first step of adding a document.
POST /documents Adds an uploaded file as a document in a client’s folder. Can also email the client about it or ask for their approval.
PATCH /documents/{id} Changes a document’s name, notes, tags, sealing, and approval setting. Turning on approval emails the client an approval request.
POST /documents/{id}/move Moves a document to another folder of the same client.
POST /documents/{id}/notify_client Emails the client about a document, or asks for their approval if it needs one.
DELETE /documents/{id}
POST /documents/{id}/restore
POST /documents/{id}/delete_forever
Moves a document to the trash, restores it, or deletes it permanently. Only a document in the trash can be deleted permanently.
GET /documents/{document_id}/signature_request Reads a document’s e-signature request. Signers, their status, and when each one signed.
GET /directories
POST /directories
PATCH /directories/{id}
POST /directories/{id}/move
Lists, creates, renames, and moves client folders, and sets what the client can do in them. Client access can be set on top-level folders only. Moving a folder into one with the same name merges them.
GET /document_checklists
GET /document_checklists/{id}
Lists and reads the document checklists sent to clients. Filters: client, checklist type, period, status, and created date. Read-only.
GET /document_checklist_items Lists the items of a checklist. Needs a checklist filter. The attached file is read as a document.

Communication

Endpoint (API) What it does Notes
GET /mailbox_threads
GET /mailbox_threads/{id}
Lists and reads email threads. Returns the subject, snippet, participants, and read and assignee status. The message body isn’t available yet.
POST /mailbox_messages Sends an email to a client. Can include uploaded files or be scheduled for later. A sent email can’t be recalled.
POST /mailbox_threads/{id}/assign
POST /mailbox_threads/{id}/unassign
Assigns or unassigns an email thread.
POST /mailbox_threads/{id}/internal_comments
PATCH /mailbox_threads/{id}/internal_comments/{comment_id}
DELETE /mailbox_threads/{id}/internal_comments/{comment_id}
Adds, edits, and deletes internal comments on an email thread. Not visible to the client.
GET /chat_threads
POST /chat_threads
Lists client chat threads or starts a new one. Filter: unread messages.
POST /chat_threads/{id}/messages Posts a message into a client chat. The client sees it right away and is notified. It can’t be taken back.
POST /chat_threads/{id}/archive
POST /chat_threads/{id}/unarchive
POST /chat_threads/{id}/assign
POST /chat_threads/{id}/unassign
Archives, unarchives, assigns, or unassigns a client chat thread.
GET /sms_threads Lists SMS threads.
POST /sms_threads/{id}/messages
POST /sms_threads/{id}/messages/{message_id}/resend
Sends a text message, or resends one that failed. A sent text can’t be recalled.
GET /team_channels
GET /team_channels/{id}
POST /team_channels
Lists, reads, and creates Team chat channels.
GET /team_channels/{id}/messages
GET /team_channels/{id}/messages/{message_id}
POST /team_channels/{id}/messages
Reads and posts Team chat messages. Clients never see Team chat.
GET /email_templates
GET /email_templates/{id}
GET /message_templates
GET /message_templates/{id}
GET /sms_templates
GET /sms_templates/{id}
Lists and reads email, chat, and SMS templates. Returns each template’s name and settings, such as an email template’s subject, but not the template text.

Firm

Endpoint (API) What it does Notes
GET /me Shows who the key or connection acts as, plus your firm’s details. Name, subdomain, time zone, currency, and date format.
GET /employees Lists the firm’s employees. Accepts a search term that matches names and emails.
GET /owner Reads the firm owner’s details.
GET /firm_members Looks up team members by ID. Turns the assignee or creator IDs on other records into names and emails.
GET /account_roles
GET /account_roles/{id}
Lists the firm’s account roles (the roles a team member can hold on a client).

Not available yet

These aren’t part of MCP or the API yet:

  • Deleting clients, contacts, or jobs

  • Reading what’s inside documents or emails. Only details like a file’s name or a thread’s subject and status come back, not the file itself or the message text.

  • Creating an e-signature request

  • Marking an email thread as read, or archiving it

  • Unlinking a record from a job

Need one of these, or something else that isn’t here? Tell us what you’re trying to build in the beta community post.

Things to know

warning icon

Important

There’s no test mode. Emails, chat messages, and texts really send, and they can’t be recalled. Moving a job can email or text a client, send a real invoice payable with a live card, or send an engagement letter to real signers. Test on records you don’t mind clients hearing from.

  • Creating a job doesn’t run automations unless you ask: A new job’s stage automations run only if you name each one. Moving a job to another stage runs that stage’s automations, as in TaxDome.

  • Check the results: Your AI assistant can misread a request or give a wrong answer, and MCP and the API can have bugs in beta. Check results before you act on them, and before anything goes to a client.

If you’re calling the API directly

Through MCP, your AI assistant handles these for you.

  • Text search only works on some lists: Clients, contacts, jobs, tasks, tags, custom fields, employees, and email and chat templates accept a search term. Other lists return an error instead of an unfiltered list.

  • Results are paged: Long lists come back in pages of 50 by default (up to 200). Each response includes a cursor for the next page. Keep passing it back until there isn’t one left. To get the total number of records, ask for the count on the first page.

  • Records you already know can be read together: Send up to 200 IDs in one request instead of reading them one by one.

  • Only declared filters work: Each list accepts specific filter fields and operators. Ask for one it doesn’t support and the call returns an error instead of an unfiltered list.

  • Related records need their own call: A client’s contacts, an invoice’s line items, and a proposal’s packages, among others, each need a separate read.

Was this article helpful?

Share

Link copied Share on linkedin Share on facebook