TaxDome logo

Help Center

Sign up Log in

TaxDome API and MCP tool catalog

note icon

Note

In the US, MCP and the API are part of the AI add-on . Outside the US, contact TaxDome Sales to get access.

This is the full list of what you can do through TaxDome’s MCP and API. For an overview of MCP and the API, see how they work and how to connect them . 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}
POST /client_assignments
DELETE /client_assignments/{id}
Shows who is on a client’s team, and adds or removes team members. Needs a client filter to list.
GET /account_role_assignments
GET /account_role_assignments/{id}
POST /account_role_assignments
DELETE /account_role_assignments/{id}
Shows, gives, or takes away a team member’s account role on a client. Needs a client filter to list.
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
Lists pipeline stages and job statuses.
GET /job_client_statuses
POST /job_client_statuses
PATCH /job_client_statuses/{id}
Lists, creates, and updates client-facing job statuses.
GET /job_templates
GET /job_templates/{id}
Lists and reads job templates.
GET /job_recurrences
POST /job_recurrences
PATCH /job_recurrences/{id}
DELETE /job_recurrences/{id}
GET /job_recurrence_assignments
POST /job_recurrence_assignments
DELETE /job_recurrence_assignments/{id}
Lists, schedules, changes, and stops recurring jobs for a client, and manages who their future jobs are assigned to. Changes can update a rule’s template, schedule, or dates. Deleting a rule stops it for good.

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.
POST /tasks/{id}/checklist
PATCH /tasks/{id}/checklist/{item_id}
DELETE /tasks/{id}/checklist/{item_id}
Adds, checks or unchecks, renames, and removes items in a task’s checklist.
PATCH /tasks/{id}/tags/{tag_id}
DELETE /tasks/{id}/tags/{tag_id}
Adds a tag to a task or removes one. The tag itself doesn’t change.

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.
GET /tax_return_templates Lists delivery templates.
POST /tax_returns Starts a draft tax return delivery from an uploaded document.
POST /tax_returns/{id}/apply_template Fills the draft’s delivery package from a template.
PATCH /tax_returns/{id} Sends a draft to the client, or turns its payment reminder on or off. Sending reaches the client and can’t be recalled.
GET /tax_returns/{id}/intro
PATCH /tax_returns/{id}/intro
Reads and writes the intro.
DELETE /tax_returns/{id}/document_lock Unlocks the tax return document.
DELETE /tax_returns/{id} Deletes a tax return delivery.

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
GET /employees/{id}
Lists and reads 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

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, so 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