The Dovetail MCP connector routes your AI agent's tool calls to Dovetail's own MCP server through Scalekit. Each user connects their own Dovetail access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 56 tools.
- Tools
- 56
- What they doRead · write · destructive
- 39 · 17 · 039 read17 write0 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Dovetail MCP connection
In AgentKit > Connections, create a Dovetail MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'dovetailmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Dovetail MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'dovetailmcp_get_dovetail_projects',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "dovetailmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Dovetail MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="dovetailmcp_get_dovetail_projects",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Dovetail MCP server credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_tooldovetailmcp_download_fileGet a short-lived presigned URL to download the raw content of a file attachment.Read-onlyDownload File
Get a short-lived presigned URL to download the raw content of a file attachment.
Inputs
file_idstringrequired- The ID of the file
dovetailmcp_get_channelRetrieve detailed information about a specific channel by its unique ID, including its topics.Read-onlyGet Channel
Retrieve detailed information about a specific channel by its unique ID, including its topics.
Inputs
channel_idstringrequired- The ID of the channel
dovetailmcp_get_channel_datumRetrieve a single channel data point by its ID, including its theme classifications.Read-onlyGet Channel Datum
Retrieve a single channel data point by its ID, including its theme classifications.
Inputs
datum_idstringrequired- The ID of the datum
dovetailmcp_get_contactRetrieve a single contact by its unique identifier.Read-onlyGet Contact
Retrieve a single contact by its unique identifier. Contacts represent research participants or customers in the Dovetail workspace.
Inputs
contact_idstringrequired- The ID of the contact
dovetailmcp_get_data_contentExport and retrieve the complete content of a research data entry as markdown.Read-onlyGet Data Content
Export and retrieve the complete content of a research data entry as markdown.
Inputs
data_idstringrequired- The ID of the data
include_file_contentboolean- Set to true to also read the extracted text of the entry's attached document files (PDF, DOCX, PPTX, XLSX) — by default attached files appear only as links and their text is not included. When true, the response body becomes the entry's full indexed content (its own text plus all files' text, each file's pages delimited by a `<file name> - <page number>` header so you can attribute content to its source file) and the response includes a files list with per-file text_status (ready/pending/failed/unsupported/unavailable) plus indexed/truncated flags: if indexed is false the entry hasn't reached the search index yet — retry shortly; for pending files, retry later. The call fails with 403 if any attached file has been deleted under the workspace's data retention policy — retention removes the file's bytes but its extracted text remains in the search index, so the request is refused rather than returning that text. For audio/video files, transcripts are already part of the entry body. Formatting note: extracted file text comes from OCR/PDF text extraction and often contains artifacts — spaces inside words, irregular whitespace, broken line breaks, stray page numbers or headers, out-of-order columns. These are extraction noise, not the author's formatting: mentally reconstruct the intended text before analyzing, and normalize whitespace when quoting rather than reproducing artifacts verbatim.
max_charsinteger- Maximum number of characters of the content body to return. Omit to return from offset to the end. Use this to re-fetch in chunks when a previous response was truncated by your client — see the content_pagination field in the response.
offsetinteger- Character offset into the content body to start from. Combine with max_chars to page through long content. Defaults to 0 (start of body).
dovetailmcp_get_docRetrieve detailed metadata for a single Dovetail doc by its unique ID.Read-onlyGet Doc
Retrieve detailed metadata for a single Dovetail doc by its unique ID.
Inputs
doc_idstringrequired- The ID of the doc
dovetailmcp_get_doc_commentRetrieve a single comment on a Dovetail doc by its unique identifier.Read-onlyGet Doc Comment
Retrieve a single comment on a Dovetail doc by its unique identifier.
Inputs
comment_idstringrequired- The ID of the comment
doc_idstringrequired- The ID of the doc
dovetailmcp_get_doc_contentExport and retrieve the complete content of a Dovetail doc in markdown format.Read-onlyGet Doc Content
Export and retrieve the complete content of a Dovetail doc in markdown format.
Inputs
doc_idstringrequired- The ID of the doc
max_charsinteger- Maximum number of characters of the content body to return. Omit to return from offset to the end. Use this to re-fetch in chunks when a previous response was truncated by your client — see the content_pagination field in the response.
offsetinteger- Character offset into the content body to start from. Combine with max_chars to page through long content. Defaults to 0 (start of body).
dovetailmcp_get_dovetail_projectsBrowse and discover all projects in the Dovetail workspace.Read-onlyGet Dovetail Projects
Browse and discover all projects in the Dovetail workspace. Projects are the primary container for research data, docs, and insights.
Inputs
folder_idstring- Filter by folder id
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
titlestring- Filter by title
dovetailmcp_get_fieldRetrieve a single custom field definition by its unique identifier.Read-onlyGet Field
Retrieve a single custom field definition by its unique identifier.
Inputs
field_idstringrequired- The ID of the field
dovetailmcp_get_fileRetrieve metadata for a single file attachment by its unique identifier.Read-onlyGet File
Retrieve metadata for a single file attachment by its unique identifier.
Inputs
file_idstringrequired- The ID of the file
dovetailmcp_get_folderRetrieve a single folder by its unique identifier, including its metadata.Read-onlyGet Folder
Retrieve a single folder by its unique identifier, including its metadata.
Inputs
folder_idstringrequired- The ID of the folder
dovetailmcp_get_folder_contentsList all items contained directly within a specific folder — projects, docs, and channels.Read-onlyGet Folder Contents
List all items contained directly within a specific folder — projects, docs, and channels.
Inputs
folder_idstringrequired- The ID of the folder
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_get_highlightRetrieve a single highlight by its unique identifier, including its content and associated tags.Read-onlyGet Highlight
Retrieve a single highlight by its unique identifier, including its content and associated tags.
Inputs
highlight_idstringrequired- The ID of the highlight
dovetailmcp_get_insight_content(Deprecated — use get_doc_content instead.) Export and retrieve the complete content of an insight in markdown format.Read-onlyGet Insight Content
(Deprecated — use get_doc_content instead.) Export and retrieve the complete content of an insight in markdown format.
Inputs
insight_idstringrequired- The ID of the insight
max_charsinteger- Maximum number of characters of the content body to return. Omit to return from offset to the end. Use this to re-fetch in chunks when a previous response was truncated by your client — see the content_pagination field in the response.
offsetinteger- Character offset into the content body to start from. Combine with max_chars to page through long content. Defaults to 0 (start of body).
dovetailmcp_get_projectRetrieve metadata for a single Dovetail project by its unique identifier.Read-onlyGet Project
Retrieve metadata for a single Dovetail project by its unique identifier.
Inputs
project_idstringrequired- The ID of the project
max_charsinteger- Maximum number of characters of the content body to return. Omit to return from offset to the end. Use this to re-fetch in chunks when a previous response was truncated by your client — see the content_pagination field in the response.
offsetinteger- Character offset into the content body to start from. Combine with max_chars to page through long content. Defaults to 0 (start of body).
dovetailmcp_get_project_contextGet a project's AI context: keywords and linked insight docs.Read-onlyGet Project Context
Get a project's AI context: keywords and linked insight docs. Requires project_id from get_dovetail_projects or search_workspace. Each doc is `{ id, type: "doc" }` only — resolve a title via get_doc, list_docs, or search_workspace. Dovetail URL: matches /projects/<id> — extract the project ID from the path segment after /projects/.
Inputs
project_idstringrequired- The ID of the project
dovetailmcp_get_project_dataRetrieve detailed metadata and information about a specific research data entry.Read-onlyGet Project Data
Retrieve detailed metadata and information about a specific research data entry.
Inputs
data_idstringrequired- The ID of the data
dovetailmcp_get_project_highlightsRetrieve customer feedback highlights and key quotes from a Dovetail project.Read-onlyGet Project Highlights
Retrieve customer feedback highlights and key quotes from a Dovetail project.
Inputs
project_idstringrequired- Filter by project id
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_get_project_insight(Deprecated — use get_doc instead.) Retrieve a specific insight by its unique identifier.Read-onlyGet Project Insight
(Deprecated — use get_doc instead.) Retrieve a specific insight by its unique identifier.
Inputs
insight_idstringrequired- The ID of the insight
dovetailmcp_get_tagRetrieve a single tag by its unique identifier, including its title and color.Read-onlyGet Tag
Retrieve a single tag by its unique identifier, including its title and color.
Inputs
tag_idstringrequired- The ID of the tag
dovetailmcp_get_userRetrieve a single workspace member's profile by their unique identifier.Read-onlyGet User
Retrieve a single workspace member's profile by their unique identifier.
Inputs
user_idstringrequired- The ID of the user
dovetailmcp_get_workspace_contextGet the workspace AI context: linked insight docs.Read-onlyGet Workspace Context
Get the workspace AI context: linked insight docs. Each doc is `{ id, type: "doc" }` only — resolve a title via get_doc, list_docs, or search_workspace.
Inputs
This tool takes no inputs.
dovetailmcp_list_channel_dataList the raw data points (e.g.Read-onlyList Channel Data
List the raw data points (e.g. app reviews, NPS responses, support tickets) in a Dovetail channel.
Inputs
channel_idstringrequired- The ID of the channel
limitinteger- Maximum number of results to return (default 20, max 100)
source_timestamp_fromstring- Filter by source timestamp from
source_timestamp_tostring- Filter by source timestamp to
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_channel_themesRetrieve all AI-generated themes for a Dovetail channel.Read-onlyList Channel Themes
Retrieve all AI-generated themes for a Dovetail channel. Themes are AI-generated clusters of related feedback.
Inputs
channel_idstringrequired- The ID of the channel
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_channelsBrowse and discover all channels in the Dovetail workspace.Read-onlyList Channels
Browse and discover all channels in the Dovetail workspace. Channels are automated analysis pipelines processing high-volume customer feedback into structured insights.
Inputs
folder_idstring- Filter by folder id
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_contactsBrowse the contacts database in the Dovetail workspace.Read-onlyList Contacts
Browse the contacts database in the Dovetail workspace. Contacts are research participants or customers linked to data entries.
Inputs
limitinteger- Maximum number of results to return (default 20, max 100)
namestring- Filter by name
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_doc_commentsRetrieve all comments on a specific Dovetail doc, returned in chronological order.Read-onlyList Doc Comments
Retrieve all comments on a specific Dovetail doc, returned in chronological order.
Inputs
doc_idstringrequired- The ID of the doc
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_docsBrowse and discover all docs in the Dovetail workspace.Read-onlyList Docs
Browse and discover all docs in the Dovetail workspace. Docs are rich-text documents used for insights, reports, and notes.
Inputs
limitinteger- Maximum number of results to return (default 20, max 100)
project_idstring- Filter by project id
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_fieldsRetrieve all custom fields defined on a Dovetail project.Read-onlyList Fields
Retrieve all custom fields defined on a Dovetail project. Fields are user-defined metadata attributes attached to data entries.
Inputs
field_set_typestringrequired- Filter by field set type
project_idstringrequired- Filter by project id
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_foldersBrowse all folders in the Dovetail workspace.Read-onlyList Folders
Browse all folders in the Dovetail workspace. Folders organize projects, docs, and channels.
Inputs
limitinteger- Maximum number of results to return (default 20, max 100)
parent_folder_idstring- Filter by parent folder id
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
titlestring- Filter by title
dovetailmcp_list_personal_docsRetrieve all docs authored by or assigned to a specific user in the Dovetail workspace.Read-onlyList Personal Docs
Retrieve all docs authored by or assigned to a specific user in the Dovetail workspace.
Inputs
user_idstringrequired- The ID of the user
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_project_dataBrowse and discover all research data entries within a specific Dovetail project.Read-onlyList Project Data
Browse and discover all research data entries within a specific Dovetail project.
Inputs
project_idstringrequired- Filter by project id
created_at_fromstring- Filter by created at from
created_at_tostring- Filter by created at to
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
titlestring- Filter by title
dovetailmcp_list_project_insights(Deprecated — use list_docs instead.) List insights within a Dovetail project.Read-onlyList Project Insights
(Deprecated — use list_docs instead.) List insights within a Dovetail project.
Inputs
project_idstringrequired- Filter by project id
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_project_templatesList all project templates available in the Dovetail workspace.Read-onlyList Project Templates
List all project templates available in the Dovetail workspace.
Inputs
limitinteger- Maximum number of results to return (default 20, max 100)
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_tag_boardsList tag boards in your Dovetail workspace.Read-onlyList Tag Boards
List tag boards in your Dovetail workspace. A tag board holds the tags and tag groups used to categorise highlights. With no arguments, the workspace's shared tag boards are returned — these are the boards whose tags can be applied across every linked project, and the boards you target with create_tag's tag_board_id. Pass project_id (resolve via get_dovetail_projects or search_workspace) to list a single project's own tag board instead. Each board includes its ID, title, tag count, and tag groups (each with its ID, title, and tag count) in display order. Results are paginated.
Inputs
limitinteger- Maximum number of results to return (default 20, max 100)
project_idstring- Filter by project id
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_list_usersList all members of the Dovetail workspace, including their roles and contact information.Read-onlyList Users
List all members of the Dovetail workspace, including their roles and contact information.
Inputs
emailstring- Filter by email
limitinteger- Maximum number of results to return (default 20, max 100)
namestring- Filter by name
start_cursorstring- Cursor for pagination. Use the next_cursor value from a previous response to get the next page of results.
dovetailmcp_search_workspacePerform powerful text-based search across all content types in the Dovetail workspace — projects, docs, data, highlights, and contacts.Read-onlySearch Workspace
Perform powerful text-based search across all content types in the Dovetail workspace — projects, docs, data, highlights, and contacts.
Inputs
contributor_idsarray- Scope results to objects authored or contributed to by these workspace users. Accepts user IDs (as returned by list_users or get_user). This is not a speaker filter — use speaker_ids for contacts or users linked as transcript speakers, including user IDs from get_project_data speakers. To search for a user by name, call list_users first, then pass the ID here.
date_fieldstring- Which timestamp the date filter applies to. `CREATED` filters by when the item was first created, `UPDATED` by when it was last modified. Defaults to `CREATED`. Has no effect unless `date_from` and `date_to` are both provided.one of
CREATEDUPDATEDdefaultCREATED date_fromstring- Start of the date range filter, as an ISO 8601 datetime string (e.g. `2025-01-01T00:00:00Z`). Must be provided together with `date_to`. To filter by relative ranges like "last 7 days", compute the corresponding ISO 8601 timestamps.
date_tostring- End of the date range filter, as an ISO 8601 datetime string (e.g. `2025-01-31T23:59:59Z`). Must be provided together with `date_from`.
limitinteger- Maximum number of results to return (default 20, max 100)
location_idsarray- Scope results to objects located inside these folders or projects. Accepts folder and/or project IDs (as returned by this tool when searching with `types: ["FOLDER"]` or `types: ["PROJECT"]`). Folder IDs are expanded recursively to include all nested sub-folders and their projects.
offsetinteger- Number of items to skip for pagination (default 0)
querystring- The search query text (maximum 512 characters). Omit or pass an empty string to list all items of the chosen types.
speaker_idsarray- Scope results to objects where these people are linked as transcript speakers. Accepts contact IDs (from list_contacts, get_contact, or a speaker with type "contact" on get_project_data) and workspace-user IDs (from list_users, get_user, or a speaker with type "user"). This is not an author/contributor filter — use contributor_ids for that. To search by name, resolve the ID first. The query can be omitted (or set to an empty string) when filtering by speakers only.
typesarray- Content types to include in search results (default: all types)
dovetailmcp_add_project_context_docLink an insight doc to a project's AI context.WriteAdd Project Context Doc
Link an insight doc to a project's AI context. Requires project_id and doc_id. Max 10 docs.
Inputs
doc_idstringrequired- Insight doc ID. Required.
project_idstringrequired- Project ID. Required.
dovetailmcp_add_project_context_keywordsAdd keywords to a project's AI context.WriteAdd Project Context Keywords
Add keywords to a project's AI context. Requires project_id and keywords. Duplicates are ignored. A project can have at most 50 keywords.
Inputs
keywordsarrayrequired- Keywords to add. Required.
project_idstringrequired- Project ID. Required.
dovetailmcp_add_workspace_context_docLink an insight doc to the workspace AI context.WriteAdd Workspace Context Doc
Link an insight doc to the workspace AI context. Requires doc_id and a workspace admin. Max 10 docs. Duplicates are ignored.
Inputs
doc_idstringrequired- Insight doc ID. Required. Resolve via get_doc, list_docs, or search_workspace.
dovetailmcp_complete_file_uploadFinalize a file upload started with upload_file, after the file's bytes have been PUT to the presigned upload_url.WriteComplete File Upload
Finalize a file upload started with upload_file, after the file's bytes have been PUT to the presigned upload_url. The server verifies the bytes in cloud storage and marks the file as uploaded. Once completed, pass the file_id to import_file_to_data or import_file_to_doc to add the file to a project as data or a doc. The file's processing status may still be pending afterwards — poll get_file to check. Safe to retry: completing an already-finalized file returns its metadata. Requires data:file_import or doc:file_import.
Inputs
file_idstringrequired- The file_id returned by upload_file. Required.
dovetailmcp_create_channel_datumSend a new data point to a Dovetail channel for automated AI processing.WriteCreate Channel Datum
Send a new data point to a Dovetail channel for automated AI processing.
Inputs
channel_idstringrequired- ID of the channel to send the data point to. Required.
textstringrequired- Content of the customer feedback to analyse. Required.
timestampstringrequired- ISO 8601 timestamp recording when the feedback was originally received. Required.
source_titlestring- Title of the source the feedback came from (e.g. the support ticket subject).
source_urlstring- URL of the source the feedback came from, if available.
dovetailmcp_create_commentPost a top-level comment on a Dovetail doc.WriteCreate Comment
Post a top-level comment on a Dovetail doc. Comments are discussion threads attached to docs.
Inputs
bodystringrequired- The comment content. Interpreted according to body_type. Required.
doc_idstringrequired- ID of the doc to comment on. Resolve via list_docs, get_doc, or search_workspace. Required.
body_typestring- Format of the body. Defaults to "text"; use "html" for rich-text content.one of
texthtml thread_idstring- Thread to reply on. From list_doc_comments or get_doc_comment.
dovetailmcp_create_dataCreate a new research data entry within a Dovetail project.WriteCreate Data
Create a new research data entry within a Dovetail project. Data entries store raw research materials such as interview transcripts, survey responses, or notes.
Inputs
project_idstringrequired- ID of the project the new data entry belongs to. Required.
contentstring- Initial body content for the data entry. Plain text or HTML; defaults to empty.
fieldsarray- Custom fields to set on the new data entry. Each item is an object with `label`, `value`, and optional `type`. `label` matches an existing field in the project (or creates a new one). `value` depends on the field type: a string for TEXT/EMAIL/URL/PHONE, a boolean for BOOLEAN, a number for NUMBER/NPS, an ISO 8601 string for DATETIME, a string array for SELECT, a contact name for PERSON, or null to clear. Include `type` (one of BOOLEAN, DATETIME, EMAIL, NPS, NUMBER, PERSON, PHONE, SELECT, TEXT, URL) only when creating a new field; it defaults to TEXT and must be omitted when referencing an existing field.
titlestring- Title for the new data entry.
dovetailmcp_create_docCreate a new doc in the Dovetail workspace.WriteCreate Doc
Create a new doc in the Dovetail workspace. Docs are rich-text documents used for insights, reports, and notes.
Inputs
contentstring- Initial body content. Interpreted according to content_type (defaults to HTML).
content_typestring- Format of the content field. Defaults to "html". Use "markdown" or "text" for those formats.one of
htmlmarkdowntext folder_idstring- Place the doc inside this folder. Mutually exclusive with project_id.
project_idstring- Place the doc inside this project. Mutually exclusive with folder_id.
titlestring- Title for the new doc.
dovetailmcp_create_folderCreate a new folder in the Dovetail workspace to organize projects, docs, and channels.WriteCreate Folder
Create a new folder in the Dovetail workspace to organize projects, docs, and channels.
Inputs
titlestringrequired- The folder's title, e.g. "Q2 Research". Required.
parent_folder_idstring- ID of the parent folder to nest this folder inside. Resolve via list_folders or get_folder. Omit to create the folder at the workspace root.
dovetailmcp_create_projectCreate a new project in the Dovetail workspace.WriteCreate Project
Create a new project in the Dovetail workspace. Projects are the primary container for research data, docs, and insights.
Inputs
folder_idstring- The unique identifier of the folder to create the project in. Optional — omit to create the project at the workspace root.
template_idstring- The unique identifier of a project template to use as the starting structure for the new project. Optional.
titlestring- The name of the new project to create. Optional.
dovetailmcp_create_tagCreate a new tag within a Dovetail project.WriteCreate Tag
Create a new tag within a Dovetail project. Tags are project-scoped labels used to categorize highlights and data.
Inputs
project_idstringrequired- ID of the project to create the tag in. Resolve via get_dovetail_projects or search_workspace. Required unless tag_board_id is provided.
titlestringrequired- The tag's title, e.g. "Usability Issue". Required.
group_idstring- ID of the tag group to create the tag in; must belong to the resolved board. Defaults to the board's first group. Find group IDs via list_tag_boards.
tag_board_idstring- ID of the tag board to create the tag in — a project board with project_id, or a workspace board without (a shared workspace tag). Required unless project_id is provided. Find board IDs via list_tag_boards.
dovetailmcp_create_transcript_highlightCreate a highlight on an audio or video transcript by marking a start/end time range in seconds.WriteCreate Transcript Highlight
Create a highlight on an audio or video transcript by marking a start/end time range in seconds.
Inputs
end_timenumberrequired- End of the highlight in seconds within the transcript. Required.
note_idstringrequired- ID of the data entry (note) containing the transcript to highlight. Required.
start_timenumberrequired- Start of the highlight in seconds within the transcript. Required.
tag_idsarray- Optional list of tag IDs to apply to the new highlight. Resolve tag IDs via list_tags.
dovetailmcp_import_file_to_dataCreate a new data entry in a Dovetail project by importing a file — interview recordings, PDF/DOCX documents, survey exports, and similar research material.WriteImport File To Data
Create a new data entry in a Dovetail project by importing a file — interview recordings, PDF/DOCX documents, survey exports, and similar research material. Provide the file in exactly one of two ways: url (a publicly accessible URL that Dovetail downloads itself — pass mime_type if the URL has no file extension) or file_id (a file already uploaded via upload_file + complete_file_upload). Audio and video files (MP3, WAV, M4A, MP4, MOV) are automatically queued for transcription, with the transcript added to the data body once processing completes. Returns the new entry's metadata; use get_data_content to read its body once processed.
Inputs
project_idstringrequired- ID of the project the new data entry belongs to. Resolve via get_dovetail_projects or search_workspace. Required.
titlestringrequired- Title for the new data entry. Required.
fieldsarray- Custom fields to set on the new data entry. Each item is an object with `label`, `value`, and optional `type`. `label` matches an existing field in the project. `value` depends on the field type: a string for TEXT/EMAIL/URL/PHONE, a boolean for BOOLEAN, a number for NUMBER/NPS, an ISO 8601 string for DATETIME, a string array for SELECT, a contact name for PERSON, or null to clear. Include `type` (one of BOOLEAN, DATETIME, EMAIL, NPS, NUMBER, PERSON, PHONE, SELECT, TEXT, URL) only when creating a new field; it defaults to TEXT and must be omitted when referencing an existing field.
file_idstring- ID of a file already uploaded via upload_file + complete_file_upload. Provide exactly one of url or file_id.
mime_typestring- MIME type of the file. Only used when importing from url.
urlstring- Publicly accessible URL of the file to import. Provide exactly one of url or file_id. Pass mime_type too if the URL has no file extension.
dovetailmcp_import_file_to_docCreate a new doc by importing a file — PDF/DOCX documents, audio/video recordings, and similar material.WriteImport File To Doc
Create a new doc by importing a file — PDF/DOCX documents, audio/video recordings, and similar material. Provide the file in exactly one of two ways: url (a publicly accessible URL that Dovetail downloads itself — pass mime_type if the URL has no file extension) or file_id (a file already uploaded via upload_file + complete_file_upload). Audio and video files (MP3, WAV, M4A, MP4, MOV) are automatically queued for transcription, with the transcript added to the doc body once processing completes. Place the doc inside a project (project_id) or a folder (folder_id), but not both; omit both to create it at the workspace root. Optionally set cover_image_file_id to an uploaded image file. Returns the new doc's metadata; use get_doc_content to read the body once processed.
Inputs
titlestringrequired- Title for the new doc. Required.
cover_image_file_idstring- ID of an already-uploaded image file to use as the doc's cover image.
fieldsarray- Custom fields to set on the new doc. Each item is an object with `label`, `value`, and optional `type`. `label` matches an existing field. `value` depends on the field type: a string for TEXT/EMAIL/URL/PHONE, a boolean for BOOLEAN, a number for NUMBER/NPS, an ISO 8601 string for DATETIME, a string array for SELECT, a contact name for PERSON, or null to clear. Include `type` (one of BOOLEAN, DATETIME, EMAIL, NPS, NUMBER, PERSON, PHONE, SELECT, TEXT, URL) only when creating a new field; it defaults to TEXT and must be omitted when referencing an existing field.
file_idstring- ID of a file already uploaded via upload_file + complete_file_upload. Provide exactly one of url or file_id.
folder_idstring- Place the doc inside this folder. Mutually exclusive with project_id.
mime_typestring- MIME type of the file. Only used when importing from url.
project_idstring- Place the doc inside this project. Mutually exclusive with folder_id.
urlstring- Publicly accessible URL of the file to import. Provide exactly one of url or file_id. Pass mime_type too if the URL has no file extension.
dovetailmcp_link_workspace_field_groupLink a workspace field group to a project so shared fields (for example Call type) can be set on data and docs in that project.WriteLink Workspace Field Group
Link a workspace field group to a project so shared fields (for example Call type) can be set on data and docs in that project. Use this after creating a project that does not already have the required field group. Requires project_id (from create_project or get_dovetail_projects) and workspace_field_group_id (the same ID used by list_fields and other field endpoints, or the ID in the /settings/fields/{id} URL). For callers with write permission, linking an already-linked group is a no-op. Dovetail URL: matches /projects/<id> — extract the project ID from the path segment after /projects/.
Inputs
project_idstringrequired- ID of the project to link the workspace field group to. Resolve via create_project or get_dovetail_projects. Required.
workspace_field_group_idstringrequired- ID of the workspace field group to link. Same as workspace_field_group_id on field endpoints, or the ID in /settings/fields/{id}. Required.
dovetailmcp_upload_fileInitiate an upload of a local file's bytes to Dovetail, for files up to 5 GB.WriteUpload File
Initiate an upload of a local file's bytes to Dovetail, for files up to 5 GB. This is step 1 of 3 for adding a file to a project as data or a doc: (1) call this tool with the file's name, MIME type, and exact size in bytes; (2) HTTP PUT the raw file bytes to the returned upload_url — the PUT needs no authentication but must include the header `x-amz-server-side-encryption: aws:kms` and a Content-Type header exactly matching the declared type, or it fails with 403; (3) call complete_file_upload with the returned file_id, then pass the file_id to import_file_to_data or import_file_to_doc. The upload_url expires at expires_at, and abandoned uploads are cleaned up after 24 hours, so complete the flow promptly. If the file is already publicly downloadable, skip this entirely and pass its URL straight to import_file_to_data or import_file_to_doc. Requires data:file_import or doc:file_import; importing the file into data or a doc still requires the matching import scope.
Inputs
namestringrequired- The file's original name, including extension. Required.
sizeintegerrequired- Exact size of the file in bytes. Must be no more than 5 GB. Required.
typestringrequired- The file's MIME type (e.g. `image/png`, `video/mp4`). Required.
No tools match.