Connect-MCP

Duvo MCP

io.github.duvoai/duvo · v2026-05-24

Governed retail, FMCG, and CPG operational tools: runs, cases, approvals, audit-ready execution.

MCPremoteAPI key

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 393 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

B 80/100

What it does: 393 tools · 141 read, 252 write (incl. delete/pay)

Test call listPluginCatalog: needs a key: rpc error: Unauthorized: missing Authorization for this MCP method (618 ms)

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +15
  • Parameter descriptions: +7
  • Read/write annotations: +5
  • Safe test call: +8
  • More than 80 tools: -5

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://api.duvo.ai/v1/mcp

Tools

200 tools listed at last check
  • listAgentMemoryFiles List the memory files stored for an agent.
  • getAgentMemoryFile Get the contents of a single memory file for an agent.
  • listPluginCatalog List plugins that can be referenced by name in a build's plugins array. Builds may also reference any public GitHub repository URL (https://github.com/owner/repo) as a plugin; those are not enumerated here.
  • createSchedule Create a schedule for an agent. The schedule fires against the agent's live build. The authenticated user owns the schedule. On a team with versions, a repeating schedule for an Agent in an automation joins that automation's versions: one matching a schedule the automation already runs fires at once
  • updateSchedule Update fields on an existing schedule. Only supplied fields are changed; omitted fields retain their current values. Owners may update their own schedules; team superadmins may update any schedule on agents in the current team. A schedule that belongs to an automation with versions keeps firing as i
  • deleteSchedule Delete a schedule. Owners may delete their own schedules; team superadmins may delete any schedule on agents in the current team. Deleting a schedule that belongs to an automation with versions stops it for its owner at once; the automation's versions keep the schedule for anyone else subscribed to
  • getTeam Get a team by ID. The caller must be scoped to the requested team.
  • startNativeOAuth Start an OAuth-based connection with a native provider (Gmail, Google Sheets, Outlook, etc.). The provider path parameter is the native OAuth provider key from listIntegrations, not the integration type. Returns an authorization URL that must be opened in a browser by a human end-user; once they gra
  • authorizeMcpOAuth Start an OAuth-based connection with a remote MCP server using Dynamic Client Registration. Returns an authorization URL the user must open in a browser; once they grant consent, Duvo creates the matching connection and redirects the browser to the optional `returnUrl`.
  • checkMcpOAuth Probe an MCP server URL to discover whether it supports OAuth Dynamic Client Registration. Returns the authorization endpoint and required scopes when supported. Useful as a precursor to `/v2/teams/:team_id/connections/oauth/mcp/start` or `/v2/teams/:team_id/connections`. Performs no writes.
  • listPulseDashboards List your Duvo Pulse dashboards (live, agent-generated visualizations of your Duvo data). Ordered most recently updated first, except scope=automation, which is ordered by creation time (then id) so the whole scope can be read with the after_id cursor without a concurrent change shifting a page boun
  • createPulseDashboard Create a new Duvo Pulse dashboard from a natural-language prompt (e.g. 'open cases by queue this week') and dispatch the first generation turn. Generation is asynchronous — poll GET /artifacts/{artifactId} until status is completed. The dashboard is private to you unless you set visibility to 'team'
  • getPulseDashboard Get a Duvo Pulse dashboard's metadata and generation status. When status is completed and html_code_present is true, fetch the rendered HTML from GET /artifacts/{artifactId}/render; the conversation is served by GET /artifacts/{artifactId}/messages.
  • listPulseDataSources Discover queues the current editor may connect to this team-created Pulse before sampling data. Requires live dashboard edit permission and ordinary team data access. Module sources are installed with the Module. A queue ID in generated code does not grant access.
  • connectPulseDataSource Connect an authorized same-team queue to a team-created Pulse before sampling it. Idempotent. This bounds dashboard data access; it never grants Process membership or case-action authority. Requires both edit permission and ordinary team source access.
  • disconnectPulseDataSource Disconnect a source from a team-created dashboard. Subsequent dashboard reads and writes immediately lose access. Idempotent; does not delete the queue or cases.
  • getPulseDashboardHtml Serve a Duvo Pulse dashboard's rendered HTML document (text/html, not JSON). 404 until the first generation turn has produced HTML.
  • getPulseDashboardPdf Render a Duvo Pulse dashboard to a PDF document (application/pdf, not JSON). 404 until the first generation turn has produced HTML; 409 for an openui dashboard, whose substrate this exporter cannot render.
  • exportPulseDashboardHtml Render a Duvo Pulse dashboard to a self-contained static HTML snapshot (text/html, data baked in). 404 until the first generation turn has produced HTML; 409 for an openui dashboard, whose substrate this exporter cannot render.
  • updatePulseDashboard Update a Duvo Pulse dashboard's settings — rename it. Only the creator can update it.
  • publishPulseDashboard Publish (share) a Duvo Pulse dashboard to your whole team or your whole organization, or revert it to private (creator only). When publishing, set permission to 'view' (teammates see the dashboard) or 'edit' (teammates can also iterate on it); organization-wide viewers outside the team always get vi
  • deletePulseDashboard Delete a Duvo Pulse dashboard. Only the creator can delete it.
  • duplicatePulseDashboard Duplicate a Duvo Pulse dashboard, producing an idle clone of the current rendered dashboard. The conversation history, shares, and connections are not copied.
  • sendPulseDashboardMessage Send an instruction to iterate on a Duvo Pulse dashboard (e.g. 'make it a bar chart', 'filter to last 14 days'). The creator can always iterate; teammates can too when the Pulse is published to the team with edit access. The agent regenerates asynchronously — poll GET /artifacts/{artifactId} for sta
  • createPulseDashboardAttachmentUploadUrl Issue a presigned upload URL for a file to attach to a Duvo Pulse dashboard message (e.g. an HTML dashboard to copy, or a screenshot to match). POST the file bytes to the returned upload_url as multipart form data under the field name 'file', then pass the returned attachment_id in the attachments a
  • getPulseDashboardAttachmentDownloadUrl Mint a short-lived presigned URL to download or preview a file attached to a Duvo Pulse dashboard message. Returns 404 once the dashboard's sandbox has expired and the file is gone (about 12 hours).
  • refreshPulseDashboard Trigger an on-demand data refresh of a Duvo Pulse dashboard. The dashboard regenerates its connection-sourced values in the background — poll GET /artifacts/{artifactId} for status.
  • stopPulseDashboardMessage Stop an in-flight Duvo Pulse generation turn. Requires edit access to the dashboard. Flips the dashboard to 'interrupted' and keeps any streamed-so-far reply; stopping when nothing is generating is a successful no-op.
  • listPulseDashboardConnections List the connections (data sources) attached to a Duvo Pulse dashboard (requires edit access).
  • attachPulseDashboardConnection Attach one of your connections (data sources) to a Duvo Pulse dashboard so the agent can use its tools (requires edit access).
  • detachPulseDashboardConnection Detach a connection (data source) from a Duvo Pulse dashboard (requires edit access).
  • answerPulseDashboardQuestion Answer a pending question the Duvo Pulse agent asked and resume the paused run (creator or team editors). Use the toolCallId from the dashboard's message transcript.
  • listPulseDashboardMessages List the chat transcript of a Duvo Pulse dashboard's live version (requires edit access). Returns the most recent page by default, oldest first within the page; pass `before` (a message id from a previous page) to walk back through older messages. Messages from other version branches are not include
  • listPulseDashboardComments List the comment threads on a Duvo Pulse dashboard (requires view access). Each thread carries its author, the dashboard element it is pinned to, its replies oldest-first, and whether it has been marked complete.
  • createPulseDashboardComment Start a comment thread on a Duvo Pulse dashboard (requires view access). Pass `element` — captured from the dashboard canvas — to pin the thread to one element; omit it for a comment on the dashboard as a whole.
  • createPulseDashboardCommentReply Reply to a comment thread on a Duvo Pulse dashboard (requires view access). `commentId` must be a thread root; threads are one level deep. A thread already marked complete still accepts replies and stays complete.
  • setPulseDashboardCommentResolution Mark a Duvo Pulse dashboard comment thread complete, or reopen it (requires view access). Pass the target state in `resolved`; the call is idempotent, and the response carries the thread with `resolved_at` and `resolved_by` set or cleared.
  • deletePulseDashboardComment Delete a comment or reply on a Duvo Pulse dashboard. Allowed for the comment's author and for the dashboard's creator. Deleting a thread root keeps its replies, rendered under a deleted opening comment.
  • listPulseDashboardVersions List the version history of a Duvo Pulse dashboard, newest first (requires edit access). Use the version id with the restore and version-render endpoints.
  • getPulseDashboardVersionHtml Serve a specific version's rendered HTML document for a Duvo Pulse dashboard (text/html, requires edit access).
  • restorePulseDashboardVersion Restore a previous version of a Duvo Pulse dashboard, making it live again (requires edit access). Non-destructive — it moves the head pointer to the chosen version.
  • createSandbox Create a new sandbox for file uploads. The returned sandbox_id can be passed to POST /v2/teams/:team_id/runs to stage data for a run.
  • createSandboxUploadUrl Get a presigned URL for uploading a file into a sandbox. Use for files larger than 10MB; smaller files can be uploaded directly via POST /v2/sandboxes/:sandbox_id/files.
  • listSandboxFiles List files in a sandbox directory.
  • uploadSandboxFile Upload a file directly to the sandbox. Maximum file size is 10MB. For larger files, use POST /v2/sandboxes/:sandbox_id/upload-urls.
  • getRunEvaluation Get the latest evaluation analysis for a specific agent run (Run).
  • getEvalScores Aggregate evaluation counts and flag distribution for an Assignment's Jobs since the given timestamp.
  • getEvalRubrics List the evaluation rubrics a Run is scored against: the platform default rubrics plus the Agent-specific rubrics for a build. Defaults to the Agent's live build; pass build_id to target the revision a specific Run ran against.
  • createEvalRubric Add one Agent-specific evaluation rubric to a build. A build may hold at most 5 custom rubrics by default (25 on teams with the newer rubric generator enabled); this fails with 409 once the build's ceiling is reached, and the error message states it. Defaults to the Agent's live build; pass build_id
  • replaceEvalRubrics Replace a build's entire Agent-specific evaluation rubric set in one call (at most 5 rubrics by default, 25 on teams with the newer rubric generator enabled). Existing custom rubrics are removed and the supplied list becomes the new set; pass an empty array to clear them. Defaults to the Agent's liv
  • updateEvalRubric Edit a single Agent-specific evaluation rubric's title and/or description. The edit produces a NEW rubric (with a new id and slug) so previously scored Runs stay attributed to the original criterion; the response contains the new rubric.
  • deleteEvalRubric Remove a single Agent-specific evaluation rubric. Future Runs on the build are no longer scored against it.
  • listAgentSchedules List the schedules you own on an agent. Returns only your own schedules, whoever you are. Callers with an elevated team role can read every member's schedules on the agent, including who created each one, via `GET /agents/{agent_id}/schedules/all`.
  • listAllAgentSchedules List every team member's schedules on an agent, including who created each one. Requires an elevated team role; callers without one receive 403 and should use `GET /agents/{agent_id}/schedules`, which returns only the schedules they own.
  • listAgentCaseTriggers List the case triggers configured for an agent. Each trigger automatically dispatches the agent to run cases added to a queue.
  • previewAgentCaseTriggerConflicts Preview which other agents would conflict with this agent's case trigger if it pointed at the given queue. Does not modify the trigger.
  • getAgentCaseTrigger Retrieve a single case trigger by id.
  • createAgentCaseTrigger Create a case trigger for an agent. An agent may have at most one case trigger; this returns 409 if one already exists.
  • updateAgentCaseTrigger Update fields on a case trigger. Only the trigger creator or a builder/admin can disable an enabled trigger or change its queue, and only a builder/admin can change queue concurrency.
  • deleteAgentCaseTrigger Delete a case trigger. Only the trigger creator or a builder/admin can delete it.
  • listAgentTriggers List the trigger definitions the authenticated user owns on an agent (Agent in the Duvo UI). Triggers start a Run automatically when an external event fires (e.g. an email arrives or a Linear issue is created).
  • upsertAgentTrigger Create or update the authenticated user's trigger for an integration on an agent. The integration must already be connected to the agent (its OAuth connection set up in the Duvo dashboard). Set `enabled: false` to pause a trigger without deleting it. An agent holds one trigger per integration for a
  • deleteAgentTrigger Permanently delete one of your own event triggers on an agent. The agent stops starting Runs for that event and the trigger's filter config is lost. To keep the trigger but stop it firing, upsert it with `enabled: false` instead.
  • listAgentTriggerTypes List the trigger types available for an agent, grouped by integration. Use the returned `integration_slug` and `trigger_type` values when creating a trigger.
  • createAgentSlackTrigger Create a Slack channel trigger on an agent (Agent in the Duvo UI): the agent starts a Run whenever a matching message is posted in the channel. An agent can carry one trigger per channel, so call this once per channel. The Slack workspace must be installed for the team AND bound to the agent's live
  • listAgentSlackTriggers List the Slack channel triggers you own on an agent (Agent in the Duvo UI), oldest first. Each trigger's `filter_config` carries the watched `channelId`, `channelName`, Slack `workspaceId`, and `matchRule`. Capped at 100 triggers per agent.
  • updateSlackTrigger Update a Slack channel trigger you own — repoint it at another channel, change which messages match, or pause and resume it with `enabled`. Only the supplied fields change. Resuming a paused trigger requires the Slack connection it runs off to still be available on the agent; changing the channel re
  • listAgentSlackBoundWorkspaces List the Slack workspaces bound to an agent build that you can create channel triggers for. Creating a Slack channel trigger for any other workspace is rejected, so start here to pick a valid `slack_team_id` and `integration_instance_id`.
  • deleteSlackTrigger Permanently delete a Slack channel trigger you own. The agent stops starting Runs for that channel. To keep the trigger but stop it firing, update it with `enabled: false` instead.
  • createRevision Create a new revision for an existing agent.
  • getRevision Get a revision by ID.
  • listAgentRevisions List revisions for an agent.
  • updateRevision Update a revision's configuration, name, description, or handover targets. Returns the updated revision.
  • generateRevision Generate agent instructions or code into a saved draft. Poll the returned builder run, answer questions if requested, then accept or decline the reviewed checkpoint. This never activates the revision.
  • resumeBuilderRun Resume a builder run that is waiting for user input
  • getBuilderRun Get the status of a builder run
  • cancelBuilderRun Cancel a running builder run and pause its sandbox
  • acceptRevisionGeneration Accept the reviewed generated configuration and complete the builder run. The saved draft is not activated.
  • declineRevisionGeneration Discard generated changes by restoring checkpoint_config and completing the builder run. The saved draft is not activated.
  • promoteRevision Promote a draft or historic revision to the live version. The live revision is the one used by triggers and new runs. Fails if the revision is already live, or if a draft revision still has an active builder run.
  • duplicateAgent Duplicate an existing agent into a new agent named "Copy of <name>", carrying over its configuration. Use the include_* flags in the (optional) body to control what is copied; all default on except memory. Requires the Lead Builder team role or above.
  • getAgent Get an agent by ID.
  • updateAgent Update an agent's display name or delivery settings.
  • deleteAgent Delete an agent and cascade-clean its schedules, case triggers, builder runs, and handover targets. Any active jobs are interrupted and their sandboxes paused.
  • moveAgent Move an agent (and its connected workspace) to a different team. Pass dry_run=true to preview the closure without applying changes.
  • getAutomation Get a single automation with its agent and queue counts, the tab arrangement its detail view navigates by, and `links` to each tab it has right now.
  • updateAutomation Update an automation, e.g. rename it. Only the fields present in the body are changed.
  • getAutomationTabs Get the automation detail view's tab arrangement, plus metadata for the Pulse dashboards pinned into it. Pinned dashboards are filtered to the ones the calling identity may see.
  • updateAutomationTabs Replace the automation detail view's tab arrangement. Pinning, unpinning, reordering and hiding a tab are all expressed as a different arrangement.
  • deleteAutomation Soft-delete an automation. Its member agents and queues stop dispatching and disappear from listings, but their underlying rows and run history are preserved (not erased) so the automation can be restored.
  • duplicateAutomation Duplicate an automation into a new one named "Copy of <name>", copying what it runs today: its live agents and builds, its queues (empty), the routing and handovers between them, and each agent's Memory when the team holds Memory and the agent has it on. The caller's own triggers and schedules are c
  • getAutomationCurrent Get what the automation is set up to do right now: its member agents with the builds that are live, its queues' routing, and the triggers and schedules firing for it. The revision-less counterpart of the revision detail — an automation without revisions is read here. `links` holds a link to each tab
  • getAutomationCurrentFlow Get the automation's flow graph as it stands right now: the agents and queues it currently wires together, plus the producer, consumer, and handover edges between them. The revision-less counterpart of the revision flow.
  • addAutomationAgent Add an agent to an automation on a team that is on the Automations workspace, with or without revisions — membership is not versioned. The agent must not already belong to another automation; on a team that changes its automations by revision it cannot be moved between them at all, because the revis
  • removeAutomationAgent Remove an agent from an automation on a team that is on the Automations workspace, with or without revisions — membership is not versioned. Deleting the agent interrupts its active runs and pauses their sandboxes, exactly as a standalone agent delete does. On a team that changes its automations by r
  • addAutomationQueue Add a queue to an automation on a team that is on the Automations workspace, with or without revisions — membership is not versioned. The queue must not already belong to another automation; on a team that changes its automations by revision it cannot be moved between them at all, because the revisi
  • removeAutomationQueue Remove a queue from an automation, deleting the queue. Its cases are cleared and the runs working them interrupted, exactly as a standalone queue delete does. Queue membership is not versioned, so this behaves the same whether or not the team changes its automations by revision.
  • listConfigFields Read an automation's module config fields (its Policy), grouped by section in the automation's section order, with each field's current value, default, and fill provenance.
  • updateConfigField Set or clear a config field's value. `value: null` removes the answer and does not restore the module default, so a Run that reads the field is refused until it is answered again. To use the default, send `default_value` as `value`.
  • addConfigField Add a Policy question to this automation. Its key is `custom_` plus the label in snake_case, with `_2`, `_3` and so on appended when the key is taken, and it is placed at the end of its section. A module template reinstall never changes a field added here.
  • updateConfigFieldDefinition Edit a Policy question: its label, question, guidance, example answer, section, the roles that answer it, the options of a select or multiSelect field, and the columns of an unanswered table field a person added. A reworded question gets a new version, and a new section moves the field to that secti
  • hideConfigField Hide a Policy question from the Policy screen, interviews and every agent's context. Nothing is deleted: the answer and its history stay, and the restore operation shows it again. Returns the agents whose live version still reads the field; hiding is never refused because of them. A module template
  • restoreConfigField Show a hidden Policy question again, with the answer it had.
  • listConfigSections List the sections of an automation's Policy in display order, empty ones included, each with its key, name, origin and question count. No offset/limit params: this is the automation's whole set of sections.
  • addConfigSection Add an empty section to this automation's Policy, last or right after after_key. Its key is the name in lowercase words joined by hyphens, with `-2`, `-3` and so on appended when the key is taken. A name another section has, ignoring case, is refused with a 409. A module template reinstall never cha
  • renameConfigSection Rename a section of this automation's Policy. Its key and its questions stay as they are, and every reader shows the new name. A name another section has, ignoring case, is refused with a 409; the current name changes nothing. A module template reinstall keeps the rename.
  • reorderConfigSections Replace the display order of this automation's Policy sections. keys must list every section key of the automation exactly once, else a 400 names what is missing, unknown or repeated. Returns every section in its new order. A module template reinstall keeps the order of the sections moved here.
  • removeConfigSection Remove a section a person added to this automation's Policy, once it holds no question, hidden ones included. A section with questions, or one from the module template, is refused with a 409. Returns the removed section.
  • listRevisionIntegrations List integrations attached to an agent revision.
  • attachRevisionIntegrations Attach one or more integrations to an agent revision. To pin specific connections after attachment, use pinRevisionIntegrationConnection. IMPORTANT for the case-queue-producer and case-queue-consumer integrations: attaching the integration alone is NOT enough — the slot points at no queue and will f
  • removeRevisionIntegration Remove an integration from an agent revision. Removes the slot for everyone on the revision, including all per-user connection pins. Requires edit permission on the agent.
  • listRevisionIntegrationConnections List the connections you have pinned to this build's integration slot. Multi-pin is supported: you can pin multiple connections to the same slot.
  • pinRevisionIntegrationConnection Pin one of your connections (from GET /v2/teams/:team_id/connections) to this build's integration slot. Multi-pin is supported: a single user can pin multiple connections to the same slot.
  • unpinRevisionIntegrationConnection Unpin one of your connections from this build's integration slot. The connection itself is not deleted; only the binding to this slot is removed.
  • getRevisionCaseQueueSetup Check that this build's case-queue integration slots are wired up correctly. Returns, per case-queue-producer/consumer slot, how many queues are linked, plus whether any queue is available to bind (scoped to the agent's automation on a migrated team, team-wide otherwise). A slot with linked_queue_co
  • listRevisionIntegrationQueues List the queues linked to this build's case-queue integration slot. Only meaningful for case-queue-producer and case-queue-consumer integrations.
  • replaceRevisionIntegrationQueues Replace the set of queues linked to this build's case-queue integration slot. Send the full desired queue list — any queues not in the list will be unlinked. Requires edit permission on the agent. After linking, call getRevisionCaseQueueSetup to confirm the slot now reports linked_queue_count > 0.
  • listAgentSuggestions List an Agent's suggestions. status=pending is the inbox; status=history is consumed/dismissed/auto-cleared. Reads lazily auto-clear stale pending items.
  • getAgentSuggestion Fetch a single suggestion. Poll this after a 202 from consume: an AOP apply in flight reports payload.apply.state (running/failed); once consumed, applied_revision_id carries the draft revision the change was staged onto.
  • consumeAgentSuggestion Apply a suggestion: stage its change into the Agent's draft revision, then auto-clear any pending suggestions it makes moot.
  • rejectAgentSuggestion Dismiss a pending suggestion.
  • listSystemSkills List all system skills (skills available to all teams).
  • deleteSkill Delete a skill for the current team.
  • downloadSkill Download a custom skill as a ZIP archive. Only custom (team-owned) skills can be downloaded.
  • listSkillFiles List all files in a skill.
  • getSkillFileContent Get the content of a file in a skill.
  • updateSkillFile Update the content of a file in a skill, overwriting the active revision in place — the previous content is not recoverable. Prefer the non-destructive flow when you can: createSkillRevision to open a draft, updateSkillRevisionFile to edit it, promoteSkillRevision to activate it. Only team skills ca
  • updateSkillAskDuvo Mark a team skill as available in Ask Duvo, or take it back off. Every NEW Ask Duvo chat in the team starts with the marked skills on disk. A chat that is already open keeps the set it started with until its sandbox is replaced, and picks up the current set from then on.
  • listSkillAssignments List the agents in the current team whose live build references the given skill. Used to warn users that editing a skill will affect every agent that uses it.
  • listSkillRevisions List a skill's version history. Each revision is a snapshot of the skill's files; at most one is active (live) at a time, plus at most one open draft.
  • createSkillRevision Open a draft revision of a skill, copying its files from the active revision (or from `source_revision_id`). Edit the draft with updateSkillRevisionFile and deleteSkillRevisionFile, then activate it with promoteSkillRevision — the previously active revision stays intact and can be re-activated later
  • promoteSkillRevision Make a skill revision the active (live) one. The previously active revision becomes historic and can be re-activated later. Idempotent: promoting the already-active revision succeeds rather than erroring, and still applies any revision_name / revision_description supplied in the body.
  • listSkillRevisionFiles List the files in a skill revision, one page at a time. When `has_more` is true, pass `next_cursor` back as `cursor` to fetch the next page.
  • getSkillRevisionFileContent Get the content of a text file in a skill revision.
  • updateSkillRevisionFile Write a text file into a skill revision. Writing into a draft leaves the active revision untouched until the draft is promoted; writing into the active revision changes what the skill runs immediately. Historic revisions are read-only: create a draft from one to edit it.
  • deleteSkillRevisionFile Delete a file from a skill revision. Deleting from a draft leaves the active revision untouched until the draft is promoted; deleting from the active revision changes what the skill runs immediately. SKILL.md can't be deleted. Historic revisions are read-only: create a draft from one to edit it.
  • updateSkillRevision Rename a skill revision or change its description. Works for drafts, the active revision, and historic revisions.
  • deleteSkillRevision Delete a draft or historic skill revision and its files. The active revision can't be deleted — activate another revision first.
  • getProfile Get the profile of the authenticated user (the owner of the API key).
  • getLegacyClarityProcess Get a legacy v1 Clarity process with process metadata, generated analysis, automation guidance, generation progress, and captures. Use this for rows from listClarityProcesses where version=1; v2 rows should use getClarityProcess and snapshot detail tools.
  • updateClarityProcess Update a Clarity process name, guidance, interview independence, visibility, or completion status. Team Builders can edit names, guidance, and interview independence, only the creator or a team manager can change visibility, and completion requires a Lead Builder role.
  • listClarityProcessMembers List users with accepted access to a clarity process, the people invited who have not accepted yet, and anyone else who has recorded a capture on it
  • removeClarityProcessMember Remove accepted access to a clarity process
  • deleteClarityProcess Delete a Clarity process. The creator or a team admin can delete it unless capture analysis is still in progress, or a Module runs it — a Module's process is part of the Module, so the Module has to be removed first. An automation built from the process keeps running, with its setup answers and peop
  • duplicateClarityProcess Duplicate a Clarity process with its analysis, captures, message history, and, for v2 processes, its live current map and automation proposal. Requires a team manager role.
  • createClarityVideoUploadUrl Create a signed URL for uploading a video file directly to GCS
  • completeClarityVideoUpload Complete a video capture after uploading to GCS via signed URL
  • createClarityDocumentUploadUrl Create a signed URL for uploading a PDF, Word (.docx), TXT, Markdown, BPMN, XLSX, or CSV document directly to GCS
  • completeClarityDocumentUpload Complete a document capture after uploading to GCS via signed URL
  • createClarityImageUploadUrl Create a signed URL for uploading a PNG, JPEG, WebP, or SVG image directly to GCS
  • completeClarityImageUpload Complete an image capture after uploading it to GCS via a signed URL
  • inviteClarityMeetingNotetaker Invite the in-meeting notetaker bot (Recall.ai) to a live meeting; the recording lands as a 'meeting' capture on the process
  • deleteClarityCapture Delete a capture from a clarity process
  • createClarityGuidance Create a new automation guidance message for a clarity process
  • updateClarityGuidance Update the automation guidance message for a clarity process
  • getClarityProcessSharing Get the sharing status for a clarity process
  • updateClarityProcessSharing Enable or disable sharing for a clarity process
  • sendClarityInterviewInvites Invite people to record an interview about this Clarity process, and email each of them. To invite people from the organization chart or landscape, first use the Clarity hierarchy people tools to find their names and email addresses, then pass them as invitees. Set includeProcessPeople to true to al
  • listClarityInterviewInvites List a Clarity process's pending and accepted invitations, newest first, with whether each was accepted, whether it was sent an account-free interview link, and whether the invitee has opened that link or submitted an interview. Paginate with limit and offset; total is the number of invitations. Rev
  • getClarityProcessInviteLink Get the active interview invite link for a process.
  • deleteClarityProcessInviteLink Delete the active interview invite link for a process.
  • getClarityProcessJoinInfo Get information about a clarity interview invite link (public).
  • acceptClarityProcessJoin Accept a clarity interview invite link and gain process access.
  • updateClarityLandscapeNode Rename a process landscape node or update its owner label (team manager or above for team processes; organization admin for areas)
  • acceptClarityLandscapeNode Accept a proposed area folder into the active process landscape, so it stops being a proposal and becomes part of the real structure (organization admin+). Only area folders can be accepted; a proposed process becomes real through assignClarityLandscapeNodeTeam instead. Re-accepting an already-activ
  • declineClarityLandscapeNode Reject a proposed process landscape node while it is still a proposal, removing it and any proposed descendants. Real processes nested underneath survive and move back to Unsorted. Only proposals can be declined — an accepted node is removed with deleteClarityLandscapeNode.
  • deleteClarityLandscapeNode Soft-delete a tree node and its descendants. Organization admins may delete any subtree; team managers may delete a childless process node owned by their team. The targeted node's linked clarity process and captures are deleted, while nested processes detach to the Unsorted bag.
  • setClarityLandscapeNodePlacement Move a process landscape node (team builder or above for team processes; team manager or above for team proposals; organization admin for areas)
  • reorderClarityLandscapeAreas Reorder a sibling group of the organization's process landscape area folders left-to-right — the top-level areas by default, or the folder children of parentId (organization admin+). This changes display order only; use setClarityLandscapeNodePlacement to move a node to a different parent.
  • assignClarityLandscapeNodeTeam Set the owning team of a process in the process landscape (organization admin+). On a proposed process this accepts the proposal and creates the real process for that team; on an existing process it moves the process, its captures and its brief to another team.
  • createClarityProcessNode File an existing Clarity process into an area of the process landscape (team builder or organization admin+). Use this for a process that already exists but sits in Unsorted; use proposeClarityLandscapeProcess to create a brand-new one.
  • proposeClarityLandscapeProcess Create a manual process in the organization's Process Landscape, either as an unassigned proposal or atomically assigned to an eligible team.
  • batchAddClarityLandscapeNodePeople Add one or more people to multiple Process Landscape nodes in a bounded batch. Email entries can create invitations; each node-person outcome reports success, conflict, or delivery failure.
  • listClarityLandscapeNodePeople List the people involved in the process behind one process landscape node. To read the people across the whole landscape in one request, use getClarityHierarchyPeople instead.
  • addClarityLandscapeNodePerson Add a person involved in the process behind a process landscape node. Name only records a placeholder; supplying an email also gives that person access to the process and emails them an invitation, so only pass an email the user asked you to invite.
  • updateClarityLandscapeNodePerson Change the role a person plays in the process behind a process landscape node (for example "Approver"). Send role: null to clear it.
  • removeClarityLandscapeNodePerson Remove a person from the process behind a process landscape node, and revoke the process access they were granted when they were added.
  • acceptClarityTeamAssignmentSuggestion Accept a pending Process Landscape team-assignment suggestion and durably assign the suggested team (manager+).
  • dismissClarityTeamAssignmentSuggestion Dismiss a pending Process Landscape team-assignment suggestion without changing the node's owner (manager+).
  • acceptClarityCaptureSuggestion Accept a pending Process Landscape capture suggestion and create the durable capture request (manager+).
  • assignClarityLandscapeCaptureRequest Assign an open Process Landscape capture request to a team member, or unassign it by sending userId: null (manager+).
  • dismissClarityCaptureSuggestion Dismiss a pending Process Landscape capture suggestion without creating a capture request (manager+).
  • listClarityLandscapeNodeInterviews List Clarity interviews linked to a process folder
  • deleteClarityLandscapeNodeInterview Delete an organization-scoped folder interview
  • getClarityProcess Get the v2 read model for a clarity process: the process row (with operational fields like generation_error, generation_progress, generation_started_at, generation_last_activity_at, custom_prompt), its captures, and the lightweight version arrays for both snapshot tabs. The full payload of any speci
  • getClarityCapture Get a single Clarity v2 capture including full transcript and video transcript. Use this when the process was loaded with captures=lite, or when only one capture's transcript is needed.
  • postprocessClaritySnapshot Re-run postprocessing agents on an existing v2 clarity snapshot. Targets either the current-process snapshot or the automation proposal snapshot, identified by id in the body. Flips the process status to `generating` and returns 202 immediately; agents run asynchronously and flip the status back to
  • listClarityStepFrames Return one representative screenshare frame for each current-process step. Explicit frame evidence wins. Otherwise, a timestamped screenshare transcript source selects the closest persisted frame at or after that timestamp, with the closest earlier frame as fallback. Pass `window` (1-5) to also rece
  • buildClarityAutomation Hand an automation proposal for a v2 clarity process off to the workflow-builder pipeline. Builds from `transformation_proposal_id` when supplied, otherwise from the process's live proposal. The proposal id is the durable idempotency key, so retries return the same run and a different proposal start
  • listClarityExtraCaptureRequests List active extra-capture requests for a given automation proposal of a Clarity v2 process. The caller is expected to know the proposal id from the V2 read model and skip the call when no proposal exists yet.
  • assignClarityExtraCaptureRequest Assign (or unassign, with `user_id: null`) a team member to fulfil an extra-capture request. Restricted to Lead Builders and above.
  • createClarityInviteLink Create or regenerate a process-scoped Clarity interview invite link. Only the process creator or team managers can create invite links; creating a new link invalidates any prior active link for the process.
  • createClarityArtifactImportUploadUrl Create a signed upload URL for importing a Miro export into a Clarity v2 process. Supports SVG, XML, PNG, and JPEG exports. The caller must upload the file to the returned URL, then complete the import.
  • completeClarityArtifactImport Complete a Miro artifact import after uploading to the signed URL. The uploaded bytes are validated before the import becomes a usable Clarity capture.
  • listClarityArtifactChatConversations List the current user's recent non-deleted artifact-chat conversations for a Clarity v2 process and snapshot kind.
  • getClarityArtifactChatMessages Load the latest artifact-chat messages for one active conversation, returned oldest-first.
  • deleteClarityArtifactChatConversation Soft-delete an open or running artifact-chat conversation for the current user.
  • stopClarityArtifactChatConversation Stop an in-flight artifact-chat turn. Flips the conversation back to `open` first so the interrupted run's late webhooks are dropped as stale, then best-effort interrupts the cc-server execution.
  • upgradeClarityProcess Move a v1 clarity process into v2. Rows with generated analysis are reset in place and regenerated; rows without analysis migrate in place when not generating.
  • listClarityProcessSnapshots List lightweight Clarity v2 process snapshots for one kind.

Badge

Connect-MCP badge for io.github.duvoai/duvo

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/io.github.duvoai/duvo.svg)](https://clawy.uk/mcp/s/io.github.duvoai/duvo)