Skip to content
Back to search
100
MCP live v2026-05-24 MCP 2025-11-25 streamable-http

Duvo MCP

io.github.duvoai/duvo

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

Uptime
100.0%
2 direct probes · 30d
Response
210ms
last probe
Tools
357
callable
Resources
10
readable
Prompts
0
available

Tools · 357

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…

createSchedule

Create a schedule for an agent. The schedule fires against the agent's live build. The authenticated user owns the schedule.

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 …

deleteSchedule

Delete a schedule. Owners may delete their own schedules; team superadmins may delete any schedule on agents in the current team.

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.). Returns an authorization URL that must be opened in a browser by a human end-user; once they grant consent…

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 matc…

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/:t…

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 t…

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/{artifa…

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 i…

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 re…

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 t…

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…

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 te…

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 multip…

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 …

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 prev…

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 mark…

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 …

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 st…

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 `resolve…

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 commen…

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 …

createEvalRubric

Add one Agent-specific evaluation rubric to a build. A build may hold at most 5 custom rubrics; this fails with 409 once that ceiling is reached. Defaults to the Agent's live build; pass build_id to t…

replaceEvalRubrics

Replace a build's entire Agent-specific evaluation rubric set in one call (at most 5 rubrics). Existing custom rubrics are removed and the supplied list becomes the new set; pass an empty array to cle…

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; …

deleteEvalRubric

Remove a single Agent-specific evaluation rubric. Future Runs on the build are no longer scored against it.

listAgentSchedules

List all schedules configured for an agent. Returns the schedules you own on this agent.

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…

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 `enabl…

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 w…

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…

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 `match…

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 r…

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_t…

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.

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 …

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 me…

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, and the tab arrangement its detail view navigates by.

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.

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 rest…

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 …

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 o…

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 …

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 (sc…

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. Aft…

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 ch…

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…

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, then activate it with promoteSkillRevision — t…

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 error…

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…

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 …

updateClarityProcess

Update a Clarity process name, guidance, visibility, or completion status. Team Builders can edit names and guidance, only the creator or a team manager can change visibility, and completion requires …

listClarityProcessMembers

List users with accepted access to a clarity process

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.

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, 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, or WebP 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

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 propose…

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 …

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 proce…

setClarityLandscapeNodePlacement

Move a process landscape node (team manager or above for team processes; 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 disp…

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 m…

createClarityProcessNode

File an existing Clarity process into an area of the process landscape (team manager or organization admin+). Use this for a process that already exists but sits in Unsorted; use proposeClarityLandsca…

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…

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), it…

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…

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 o…

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 propo…

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 exi…

assignClarityExtraCaptureRequest

Assign (or unassign, with `user_id: null`) a team member to fulfil an extra-capture request. Restricted to admins and managers.

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 pr…

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 impor…

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.

getClarityProcessSnapshot

Fetch the full payload for a Clarity v2 process snapshot of either kind.

saveClarityProcessSnapshot

Save user edits as the live Clarity v2 snapshot for the selected kind.

promoteClarityProcessSnapshot

Promote a draft or historic Clarity v2 snapshot to live for its kind.

revertClarityProcessSnapshot

Archive a Clarity v2 snapshot of either kind. If the live row is archived, the repository auto-promotes the latest historic row of the same kind.

generateClarityProcessSnapshot

Trigger a snapshot generation pipeline for a v2 clarity process, selected by kind. `current_process` runs the generateCurrentProcess pipeline (body fields are proposal-only and rejected); `transformat…

stopClarityProcessSnapshot

Stop an in-flight snapshot generation for the selected kind. Reads the sandbox id from the process row, kills the sandbox, flips the process back to `review`, and clears the sandbox marker so any late…

inviteOrgMember

Invite a person to an organization you administer, optionally assigning them to a team in that organization. Requires an organization Admin, Executive, or Owner role. You cannot grant a role higher th…

listOrgTeams

List teams belonging to an organization you are a member of, including your membership and role in each.

getOrgInsightsHeadline

Get org-wide headline insight KPIs (run totals, success rate, distinct active agents and users) aggregated across every team in the organization. Requires an organization Admin, Executive, or Owner ro…

getOrgInsightsMetrics

Get org-level insights metrics (runs, assignments, schedules) broken down per team across the organization. Requires an organization Admin, Executive, or Owner role.

getOrgInsightsUsageChart

Get org-level run-volume buckets (scheduled vs on-demand) at day/week/month granularity across the organization. Requires an organization Admin, Executive, or Owner role.

createOrgTeam

Create a new team under an organization you administer. Requires an organization Admin, Executive, or Owner role.

organizeClarityProcessLandscape

Start an asynchronous organization pass over the organization's unfiled processes, placing them into the Process Landscape where possible (organization admin+). Results appear progressively; started i…

getClarityProcessTree

Fetch the organization's process tree, or the subtree under rootId

getClarityProcessLandscape

Fetch the organization's full process landscape with process summaries, team assignments, and page-level stats

getClarityHierarchyPeople

List the people attached to every authorized linked process node in the organization's Process Landscape. Returns a flat list where each person carries `nodeId` and `processId`, plus their role, invit…

listClarityLandscapeCaptures

List the organization's Process Landscape captures. By default, only captures eligible to seed new process proposals are returned; excluded captures can be included for inspection.

generateClarityProcessLandscape

Start a process-landscape generation run for the organization from its eligible Clarity captures (organization executives and owners)

createClarityLandscapeNode

Create an area folder in the process tree. An active area (the default) requires organization admin+; a "proposal" area may be added by any organization member.

listClarityProcessLinks

List process-to-process links in the organization's Clarity landscape that are visible within the caller's team access scope. Use `node_id` to find links touching a specific process node.

createClarityProcessLink

Create a process-to-process link in the organization's Clarity landscape when the caller can manage both endpoint teams. If the same live source, target, and type already exists, the existing link is …

updateClarityProcessLink

Update a process-to-process link in the organization's Clarity landscape when the caller can manage both endpoint teams.

deleteClarityProcessLink

Delete a process-to-process link from the organization's Clarity landscape when the caller can manage both endpoint teams.

setClarityLandscapePriorities

Set or clear heatmap priorities in one batch (team managers for their processes; organization admin+ across the organization)

listClarityOrganizationInterviews

List Clarity interviews across an organization

getClarityOrganizationInterview

Load a single organization Clarity interview with transcript

inviteClarityOrganizationNotetaker

Invite the in-meeting notetaker bot (Recall.ai) to a live meeting; the recording lands as an organization Clarity interview

finalizeClarityOrganizationInterview

Manually mark an in-progress organization interview as complete without requiring final media uploads

updateClarityOrganizationInterview

Rename an organization landscape Clarity capture

deleteClarityOrganizationInterview

Delete an organization-level Clarity interview

createClarityOrganizationDocumentUploadUrl

Create a signed URL for uploading a PDF, TXT, Markdown, or BPMN document as an organization-level Clarity capture

completeClarityOrganizationDocumentUpload

Complete an organization document capture after uploading to GCS; extracts text and stores it as a transcript so it feeds Process Landscape generation

listMyOrganizations

List the organizations the current user belongs to, with their role (organization:member, organization:admin, organization:owner, or organization:executive) and member count in each. Use this to check…

getClarityExport

Get a Clarity export run by ID

getQueue

Get a queue by ID.

listQueueAggregations

List a queue's aggregation definitions.

createQueueAggregation

Create an immutable aggregation definition on a queue.

evaluateQueueAggregation

Evaluate an aggregation definition against the current data without persisting it.

getQueueAggregationResult

Read an aggregation definition's cached result.

refreshQueueAggregation

Force a fresh recompute of an aggregation definition.

deleteQueueAggregation

Soft-delete an aggregation definition.

getQueueJsonSchema

Get a queue's Case schema settings: whether it requires typed cases, and the schema it validates them against.

createQueueJsonSchema

Declare a queue's first Case schema by hand, so a person can type a queue up front instead of waiting for its producing agent to declare the shape. Fails if the queue already has a schema — replace an…

replaceQueueJsonSchema

Replace a queue's Case schema with a new version. Every declared field is frozen against automated change, so this is the only way one can be edited.

attachQueueJsonSchema

Put a queue on an existing Case schema, so both queues share one document and a later change moves them together. The queue must not already have a schema.

updateQueueJsonSchemaSettings

Turn a queue's schema guard on or off, and freeze or unfreeze the schema document. A guarded queue with no schema yet asks its producing agent to declare one; a frozen schema refuses every change unti…

detachQueueJsonSchema

Stop validating new cases on a queue. Typed cases already written keep their payload and their pinned schema version.

updateQueue

Update a queue.

deleteQueue

Delete a queue. Interrupts all associated active runs first and returns the number of deleted cases plus the IDs of runs that were stopped.

exportCases

Export a queue's cases, respecting the same status, severity, priority, label, date-range, json_data field, and free-text filters as the list view. `format: "json"` (default) returns a re-importable J…

getCase

Get a case by ID. Returns the case, its event history, and every case-approval batch ever created on the case (newest first).

updateCase

Edit a case's title and/or its free-form data payload. Provide at least one field. Works on pending, in-progress, and settled cases. Other attributes (status, priority, labels) have their own dedicate…

listCaseRuns

List Runs (agent runs) that have claimed or received handover of a case, newest first. Capped at 50 ownership events.

listCaseRunRecentMessages

Return the latest qualifying messages (assistant text + tool calls) for a Run on a case, newest last. Used to populate the live body of an active Run card in the case Activity timeline.

deleteCase

Delete a case. Interrupts any associated active runs first.

bulkReprocessCases

Re-process multiple cases on a chosen agent. Any active runs on the selected cases are interrupted first; the cases are then reset to pending and assigned to the chosen agent for the next dispatcher t…

bulkUpdateCaseStatus

Update the status of multiple cases to pending, completed, failed, or canceled. Interrupts any active runs and releases their case ownership, but never cancels their human-in-the-loop state — pending …

bulkUpdateCasePriority

Set the priority of multiple cases. Priority only affects the order pending cases are picked up in: due postponed cases are handled first, then higher priority. It never interrupts runs or changes cas…

listCaseAttachments

List the files attached to a case, oldest first. Includes attachments whose upload failed, so a missing source document is visible rather than silent.

createCaseAttachmentUploadUrl

Issue a signed URL for uploading a file to a case. The client must PUT the bytes to the returned URL with the returned Content-Type, then call the finalize endpoint so the attachment becomes visible o…

finalizeCaseAttachment

Confirm an uploaded case attachment against storage. Answers with the attachment in its settled state — `ready` when the bytes are present, `failed` (with a reason) when the upload never completed.

getCaseAttachmentDownloadUrl

Mint a short-lived signed URL for one case attachment. `disposition=inline` serves the file for the in-app viewer; `attachment` forces a download.

deleteCaseAttachment

Remove a file from a case. The row is soft-deleted; deletion of the stored object is attempted best-effort.

assignCaseLabels

Assign one or more labels to a case. Creates the labels on the queue if they don't already exist.

listCaseLabels

List all labels assigned to a case.

listQueueLabels

List every label defined on a queue along with the count of cases each label is assigned to.

unlinkCaseLabels

Remove the given labels from a case.

createQueueLabel

Create a label on a queue without assigning it to a case.

deleteQueueLabel

Delete a label from a queue. Cascade-deletes all assignments of this label on existing cases.

updateQueueLabel

Update a label's key, value, or color. Renaming key/value affects every case assigned to this label.

listQueueAgents

List agents bound to a queue as producers (agents that push cases into the queue) or consumers (agents triggered by cases in the queue).

getCaseQueueEvalRubrics

List a queue's active case-level evaluation rubrics — the Pass/Fail questions a whole case is judged against at settlement. Shows the queue's current version's set (auto-generated from the connected A…

createCaseQueueEvalRubric

Add one case-level evaluation rubric to a queue's current rubric set. Case-level rubrics judge the whole case (across every Run that touched it) as a Pass/Fail question at settlement. The rubric is ad…

replaceCaseQueueEvalRubrics

Replace the entire case-level evaluation rubric set on a queue's current version (1 to 12 rubrics). Existing rubrics are removed and the supplied list becomes the new set. An empty list is refused — w…

updateCaseQueueEvalRubric

Edit a single case-level evaluation rubric's title and/or description. The edit produces a NEW rubric (with a new id and slug) so previously judged cases stay attributed to the original criterion; the…

deleteCaseQueueEvalRubric

Remove a single case-level evaluation rubric. Cases settled after this are no longer judged against it; already-judged cases keep their original verdicts. Removing the queue's last remaining rubric is…

listCases

List cases in a queue. Supports status, date-range, free-text, and json_data field filters via query params. Set count_only=true to skip Case row selection and transformation. The normal response shap…

searchCases

Search cases in a queue with rich filters (multi-status, date ranges, label-based filters, and field-value filters over a typed queue's json_data). Use this when the simple query-string filters on GET…

createCases

Create one or more cases in a queue. Provide either a single `case` object or a `cases` array (1-100); providing both returns 400. Each case accepts a title (max 500 chars), optional free-form `data`,…

getRun

Get information about an agent run. Can be polled to check status.

postRunMessage

Post a message to an agent run. This will persist the message and resume the agent execution if the run is in a resumable state (waiting, completed, or interrupted).

listRunMessages

Get paginated messages for an agent run. Messages are returned in chronological order.

respondToHumanRequest

Respond to a human-in-the-loop request. Use 'approved' (true/false) for approval-type requests, or 'answers' ({question: answer}) for question-type requests. Only works when the run is in 'waiting' st…

stopRun

Stop an agent run. No-op if the run is not currently running.

listMyTeams

List teams the authenticated caller can act on. Team-scoped API keys see only the key's team; managed Ask Duvo keys stay within their origin boundary; human user-scoped API keys and OAuth callers see …

updateAgentFolder

Rename an agent folder or move it to a new parent.

deleteAgentFolder

Delete an agent folder. If the folder contains assignments or subfolders, pass `force=true` to delete it and move the contained assignments to the root level.

getConnection

Get one of your connections by ID.

getConnectionCredentials

Get the header keys configured for a connection. Sensitive values (api keys, tokens, passwords) are returned as empty strings — the response only reveals which credential fields are set, never their v…

updateConnection

Update an existing connection. For sensitive header values, sending an empty string keeps the existing value; send a new value to overwrite. Toggling `shared` moves the connection between personal and…

deleteConnection

Delete a connection (disconnects the user's connection and removes any triggers bound to it).

deleteCustomIntegration

Delete a custom integration type (team-level catalog entry) and cascade-remove related connections. Requires manager-or-above role.

getSecret

Get an env-var secret by id. Returns metadata and env var keys; secret values are never exposed.

updateSecret

Update an env-var secret. Send `values` to replace all entries, or any of `rename_keys`, `remove_keys`, `add_values` for a non-destructive patch. Editing a team-shared secret or toggling sharing requi…

deleteSecret

Soft-delete an env-var secret. Deleting a team-shared secret requires lead builder role.

listRevisionSecrets

List env-var secrets attached to a specific revision (build) of an assignment. Returns metadata and env-var keys only — secret values are never exposed.

attachRevisionSecret

Attach an env-var secret to a revision so its keys are injected into Runs spawned from that revision. Personal secrets can only be attached by their owner; team-shared secrets require builder permissi…

detachRevisionSecret

Detach an env-var secret from a revision. Personal secrets can only be detached by their owner; team-shared secrets require builder permissions.

listRevisionLogins

List logins attached to a specific revision (build) of an assignment. Returns metadata only — passwords and OTP secrets are never exposed.

attachRevisionLogin

Attach a login to a revision so the agent can use it during Runs spawned from that revision. Personal logins can only be attached by their owner; team-shared logins require builder permissions.

detachRevisionLogin

Detach a login from a revision. Personal logins can only be detached by their owner; team-shared logins require builder permissions.

getNotification

Get a single notification by id for the authenticated user. Requires the Notification Center feature; returns 404 when it is not enabled for the team.

markNotificationRead

Mark a notification as read for the authenticated user. Idempotent — calling it again on an already-read notification still returns success. Requires the Notification Center feature; returns 404 when …

dismissNotification

Dismiss an important notification for the authenticated user. A row pinned to their Important section is unpinned and the card stays, because the connection is still broken; a row that is not pinned f…

listClarityProcessLabels

List process tags available in an organization.

createClarityProcessLabel

Create process tags for an organization.

updateClarityProcessLabel

Update process tags for an organization.

deleteClarityProcessLabel

Delete process tags from an organization.

listClarityProcessAssignedLabels

List process tags on a process.

assignClarityProcessLabels

Assign process tags to a process.

unlinkClarityProcessLabels

Remove process tags from a process.

listAvailableClarityProcessLabels

List process tags available for a process.

listAgents

List agents for your team.

createAgent

Create a new agent. Optionally include a build configuration to create the first build in the same request.

listAutomations

List the team's automations, each with its live agent and queue counts. An automation is the workspace container an agent or queue belongs to on a team that has moved to Automations — its id is what `…

createAutomation

Create a new automation. Its first agent is created alongside it so the caller lands on something editable. On a team on revision semantics the automation holds a single draft revision and no live rev…

listAgentFolders

List all agent folders for the authenticated team.

createAgentFolder

Create a new agent folder.

moveAgentsToFolder

Move one or more agents (assignments) into a folder, or to the root level.

listQueues

List queues for your team.

createQueue

Create a new queue.

getBatchQueueStats

Get case status counts for many Queues in ONE call. Use this after listQueues whenever you need per-Queue counts — cases waiting on a human, needing review, pending, failed — instead of calling listCa…

listRuns

List runs for the current team. Supports filtering by agent, user, queue, status, etc. Messages, evaluation data, and queue metadata are included where available. Set count_only=true to skip Run row s…

startRun

Start a new agent run. Returns immediately with run info - does not wait for completion.

listSkills

List all skills for the current team, including system skills.

createSkill

Create or update a skill from a JSON body. The server constructs SKILL.md from the provided fields and stores it. If a skill with the same name already exists in the team, it is updated.

listClarityProcesses

List Clarity processes for the current team, most recently updated first. Returns lightweight metadata (capture counts, contributors, status) suitable for building a picker; the per-process read model…

listClarityProcessSummaries

Cross-process portfolio digest for every completed Clarity process on the team: per-process summary, SWOT, projected impact, and a step skeleton (role, system, and flow edges) — without step prose or …

createClarityProcess

Create a new Clarity v2 process for the current team (Builder+). Optional `name` defaults server-side when omitted. Response uses camelCase `createdAt` to match existing FE clients.

listFiles

List files for the current team.

createFileUploadUrl

Generate a signed URL for uploading a file directly to GCS.

renameFile

Rename a file in team storage.

deleteFile

Delete a file from team storage.

getFileDownloadUrl

Generate a signed download URL for a file.

getFileContent

Get the content of a text file.

updateFileContent

Update the content of a text file.

listIntegrations

List the team's integration catalog: built-in integration types plus any custom connection types defined for the team. OAuth authorization flows are browser-based and cannot be performed via this API;…

createCustomIntegration

Create a custom integration type (team-level catalog entry) that users can then connect as user-provided MCP connections. Requires manager-or-above role.

listConnections

List the authenticated user's connections (connected integration instances) for the current team. Includes team-shared instances visible to the caller when the org-level Connections sharing setting is…

createConnection

Create a new user-provided connection (custom MCP server) for the current team. OAuth-based integrations (native) require an interactive browser flow — start them with the dedicated OAuth endpoints (`…

probeMcpServer

Probe an MCP server URL and list the tools it exposes. Useful as a dry-run before creating a connection — verifies the URL is reachable, that authentication headers (if any) are correct, and surfaces …

listSecrets

List env-var secrets visible to the caller — team-shared (user_id IS NULL) plus the caller's own personal entries. Returns metadata and env-var keys only; secret values are never exposed.

createSecret

Create an env-var secret. Personal by default; pass `shared: true` to create a team-shared secret (requires lead builder role).

createTeamInvite

Invite one person to a team. Pass `processId` to invite them to a specific Clarity process instead of the whole team (that requires the `team:clarity-member` role). Creating the invitation does NOT em…

deleteTeamInvite

Revoke an invitation so its link and email can no longer be used. Accepts either a team invitation (requires Superadmin or above on the invitation's team) or a Clarity process invitation (requires the…

sendTeamInviteEmail

Email an invitation to its recipient. Use this to deliver an invitation created by createTeamInvite (which never sends mail on its own), or to resend one the recipient never received. The accept link …

bulkCreateTeamInvites

Invite several people to a team in one call, emailing each invitation immediately. Returns per-batch counts: `succeeded` were invited, `skipped` were already on the team, already had a pending invitat…

updateTeamInvite

Change the role on a pending team invitation. Only pending invitations can be updated — one already accepted or declined is rejected. Requires the Manager role or above on the invitation's own team.

getTeamInviteLink

Get the team's shareable invite link — the one URL anyone can use to join the team, as opposed to a per-person invitation. Returns `hasLink: false` when no link has been created. Requires the Manager …

createTeamInviteLink

Create or regenerate the team's shareable invite link — the one URL anyone can use to join the team. Regenerating invalidates the previous link, so anyone still holding the old URL can no longer join.…

deleteTeamInviteLink

Delete the team's shareable invite link so the URL stops working. Per-person invitations are unaffected. Requires the Manager role or above.

listNotifications

List notifications for the authenticated user's current team, most recent first. Filter with type, unread, severity or minSeverity (mutually exclusive), important, agentRunId, or processId; paginate w…

getNotificationFeed

List the notification feed for the authenticated user's current team, most recent activity first. Each item is either an individual notification or a notification batch (a per-agent group of job_issue…

getNotificationBatch

Get a single notification batch by id for the authenticated user, with per-type live-member counts, unread count, and worst severity. Serves cold deep links and sidebar retention for batches the calle…

markNotificationBatchRead

Mark every unread live member of a notification batch as read for the authenticated user. Pass `types` to narrow the mark-read to those member types, and `severity` (exact) or `minSeverity` (threshold…

getUnreadNotificationCount

Get the unread notification count for the authenticated user's current team. Each notification batch with unread members counts as 1, regardless of its member count. Requires the Notification Center f…

getNotificationCounts

Per-type notification counts for the authenticated user's current team. Narrow with `unread`, `important`, and with either `severity` (counts only that exact severity) or `minSeverity` (counts that ur…

markAllNotificationsRead

Mark all notifications as read for the authenticated user's current team. Returns the count of notifications that were updated. Requires the Notification Center feature; returns 404 when it is not ena…

deleteReadNotifications

Soft-delete all read notifications for the authenticated user's current team. Returns the count of notifications that were deleted. Destructive — only call on explicit user request. Requires the Notif…

deleteAllNotifications

Soft-delete all notifications for the authenticated user's current team, read or unread. Returns the count of notifications that were deleted. Destructive — only call on explicit user request, never b…

listTeamMembers

List members of a team. The authenticated session or API key must be scoped to the requested team.

updateTeamMemberRole

Update an existing team member's role. Requires the Manager role or above; only an Owner may grant or remove the Owner role, and the last remaining Owner cannot be demoted. A member whose Owner role i…

removeTeamMember

Remove a member from a team. Removing another member requires the Superadmin role or above; any member may remove themselves (leaving the team). The last remaining Owner cannot be removed, and a membe…

listTeamInvites

List a team's pending invitations — everyone invited who has not yet accepted or declined. Pass `processId` to list the pending invitations for a single Clarity process instead.

listCredentials

List browser-login credentials visible to the caller for the current team — team-shared (user_id IS NULL) plus the caller's own personal logins. Optionally filter by `domain`. Passwords and OTP secret…

createCredential

Create a login. At least one of `password` or `otp_secret` must be provided. Personal by default; pass `shared: true` to create a team-shared login (requires lead builder role).

getCredential

Get a login by id. Returns the encrypted password/otp_secret blobs — only the owner or team members can access it.

updateCredential

Update a login by id. At least one of password or otp_secret must remain set after the update. Editing a team-shared login or toggling sharing requires lead builder role.

deleteCredential

Delete a login by id. Deleting a team-shared login requires lead builder role.

listActiveClarityExports

List active (queued or running) Clarity export jobs for the current user

startClarityExport

Start a Clarity → SAP Signavio export job

listClarityFolders

List the team's process folders with process and suggestion counts

createClarityFolder

Create a process folder

updateClarityFolder

Rename a process folder. Renaming a landscape-linked folder permanently stops landscape name-sync.

deleteClarityFolder

Delete a process folder. Contained processes fall back to Unfiled.

reorderClarityFolders

Reorder the team's process folders to match the given id order. The payload must name every folder exactly once.

setupClarityFoldersFromLandscape

Create one linked folder per landscape group node containing this team's processes. Idempotent: groups that already have a linked folder are skipped.

moveClarityProcessesToFolder

Move processes into a folder (or back to Unfiled)

fileSuggestedClarityProcesses

File every unfiled process the viewer can see into its suggested folder

listClarityTeamInterviews

List team-level Clarity interviews

deleteClarityTeamInterview

Delete a team-level Clarity interview

createClarityTeamDocumentUploadUrl

Create a signed URL for uploading a PDF, TXT, Markdown, or BPMN document as a team-level Clarity capture

completeClarityTeamDocumentUpload

Complete a team document capture after uploading to GCS; extracts text and stores it as a transcript so it feeds Process Landscape generation

getClarityTeamSettings

Get clarity team settings for financial calculations

updateClarityTeamSettings

Update clarity team settings for financial calculations

getClarityPortfolioIntelligence

Get portfolio intelligence for the current team

generateClarityPortfolioIntelligence

Generate portfolio intelligence from all completed clarity processes. Returns 202 Accepted immediately and processes in background.

movePulseDashboard

Move a Pulse dashboard from the team in the URL to another team, keeping only its latest revision (chat history and older revisions are deleted). The caller must be a Manager or above on both teams. P…

Resources · 10

aop-writer/SKILL.md

Draft, rewrite, or critique a Duvo Agent AOP. Use when the user wants to improve an existing AOP or write a new one from a brief. Returns the AOP as a single complete markdown document in the canonica…

duvo://skills/aop-writer/SKILL.md
aop-writer/references/aop-examples.md

Reference material for the aop-writer skill (SKILL.md says when to read it).

duvo://skills/aop-writer/references/aop-examples.md
aop-writer/references/aop-structure.md

Reference material for the aop-writer skill (SKILL.md says when to read it).

duvo://skills/aop-writer/references/aop-structure.md
aop-writer/references/aop-voice.md

Reference material for the aop-writer skill (SKILL.md says when to read it).

duvo://skills/aop-writer/references/aop-voice.md
aop-writer/references/case-lifecycle.md

Reference material for the aop-writer skill (SKILL.md says when to read it).

duvo://skills/aop-writer/references/case-lifecycle.md
connection-doctor/SKILL.md

Diagnose and health-check the Connections and credentials a Duvo Agent relies on. Use when the user asks whether a Connection is set up or available, why an Agent is blocked on authentication, what a …

duvo://skills/connection-doctor/SKILL.md
improve-agent/SKILL.md

Run the guided, end-to-end loop that makes one Duvo Agent better. Use when the user wants to "improve this Agent", "make my Agent better", "help me tune this Agent", "this Agent isn't good enough", "f…

duvo://skills/improve-agent/SKILL.md
improve-queue/SKILL.md

Run the guided, end-to-end loop that makes one Duvo Queue — and the producer→consumer workflow around it — better. Use when the user wants to "improve this Queue", "this Queue keeps backing up, fix it…

duvo://skills/improve-queue/SKILL.md
run-debugger/SKILL.md

Investigate why a Duvo Run failed or produced the wrong outcome. Use when the user shares a failed Run, asks "why did this Run fail", or wants to fix a recurring failure on an Agent. Reads the Run's t…

duvo://skills/run-debugger/SKILL.md
workflow-debugger/SKILL.md

Audit a Duvo Agent — or a multi-Agent workflow connected by a Queue — across many Runs to find systemic inefficiencies and quality issues, then recommend concrete AOP and architecture changes. Use whe…

duvo://skills/workflow-debugger/SKILL.md

How to use

Add to your Claude Desktop / Cursor / Cline MCP config:

{
  "mcpServers": {
    "duvo_mcp": {
      "url": "https://api.duvo.ai/v1/mcp",
      "transport": "streamable-http"
    }
  }
}