bots.st/dutify
Dutify
Manage call recordings and feedback requests
2729 ms
answered our call
- State
- Answered
- Protocol
- MCP 2025-06-18
- Tools listed
- 191
- Answered
- 3 of the last 3 calls
How to reach it
- MCP, HTTP
https://mcp.dutify.aiNeeds header X-API-Key
What it can do
| Tool | What it says it does |
|---|---|
find_my_workspace | Unified Dutify find_my_workspace: fresh credential/workspace discovery. Does not require a selected workspace or reserve quota. |
fr_comment_bug | Add a comment to a bug report. Pass isInternal=true for internal-only. API-key scope: `feedback:comments:write`. |
fr_comment_request | Add a comment to a feature request. Pass isInternal=true to make the comment visible only to users with `View Internal Data` permission. API-key scope: `feedback:comments:write`. |
fr_create_bug | Create a new bug report on a board. Severity and productArea are resolved by name (lenient match). Environment is a free-form map (browser, OS, url, etc.). API-key scope: `feedback:bugs:write`. |
fr_create_request | Create a new feature request on a board. Category is resolved by name (lenient match). No turnstile token required — API-key authentication is sufficient. Returns the new request with assigned shortId. API-key scope: `feedback:requests:write`. |
fr_delete_bug | Permanently delete a bug report. Requires `Manage Queue` permission. Irreversible. API-key scope: `feedback:bugs:write`. |
fr_delete_request | Permanently delete a feature request. Requires `Manage Queue` permission. Returns 204 on success. This operation is irreversible — confirm with the user before calling unless the intent is unambiguous. API-key scope: `feedback:requests:write`. |
fr_get_bug | Get a bug report by short ID (e.g. "BG-99"). Returns full detail: title, reproduction steps, expected/actual result, severity, status, product area, assignee, affectedCount, environment, comments count. Internal notes and linkedIssueUrl populated only for `View Internal Data` permission. API-key… |
fr_get_request | Get a feature request by short ID (e.g. "FR-42"). Returns full detail: title, description, status, category, milestone, voteCount, commentCount, reactions. Internal notes and linkedTaskIds are populated only when the caller has `View Internal Data` permission. API-key scope… |
fr_list_bugs | List bug reports on a feedback board (by board slug). Filter by severity and/or status name (lenient match). API-key scope: `feedback:bugs:read`. |
fr_list_requests | List feature requests on a feedback board (by board slug). Filter by status / category / milestone name (lenient — trimmed + case-insensitive). Pass `q` to search request titles instead. Paginated via page/size. API-key scope: `feedback:requests:read`. |
fr_moderate_bug | Approve, reject, or mark a bug as spam. Action is case-insensitive. Requires `Manage Queue` permission. API-key scope: `feedback:moderation:write`. |
fr_moderate_request | Approve, reject, or mark a feature request as spam. Action is case-insensitive. Requires `Manage Queue` permission. API-key scope: `feedback:moderation:write`. |
fr_set_bug_assignee | Assign or unassign a bug. Provide `assigneeEmail` (resolved case-insensitive against workspace members) OR `assigneeId` (UUID). Exactly one; both = 400. Passing neither unassigns. API-key scope: `feedback:bugs:write`. |
fr_set_bug_status | Change a bug status by name (lenient match against the board's bug-status set). API-key scope: `feedback:bugs:write`. |
fr_set_bug_visibility | Toggle a bug's public visibility. Security bugs stay private regardless. API-key scope: `feedback:bugs:write`. |
fr_set_request_status | Change a feature request's status by name. The name is resolved leniently against the request's board's status set (trim + case-insensitive). Returns the updated request detail. API-key scope: `feedback:requests:write`. |
fr_toggle_bug_affected | Toggle the caller's "I'm affected" marker on a bug. Returns the updated bug detail with new affectedCount. API-key scope: `feedback:bugs:write`. |
fr_vote_request | Toggle a vote or emoji reaction on a feature request. Passing emoji=null or omitting the field registers a plain upvote. Calling the tool again with the same emoji removes the vote (idempotent toggle). API-key scope: `feedback:votes:write`. |
get_api_catalog | Discover deployed API tags or a tag schema for one product. Prefers the versioned service-qualified catalog; falls back only when unsupported. Discovery never grants access. |
get_endpoint_examples | Fetch the request/response example payloads (full JSON values) for a Dutify API resource tag. Use this when you're about to write rich content via a tool that accepts a TipTap `content` parameter (e.g. wiki_create_page) and need a concrete reference of what the doc shape looks like — banners… |
hub_clear_call_custom_prompt | Remove the caller's own per-call prompt. Their next hub_regenerate_summary uses their instruction set without a per-call prompt. Requires recordings:write scope. |
hub_clear_event_custom_prompt | Remove one occurrence's own prompt. The series prompt, if any, keeps applying on its own — nothing 'falls back', the series prompt was already in use. Requires recordings:write scope. |
hub_clear_series_custom_prompt | Remove a series' custom prompt. Each occurrence keeps only its own prompt, if it has one. Never clear a series prompt to 'avoid a conflict' with an occurrence prompt: there is no conflict, both apply, and clearing it drops instructions every other occurrence relies on. Requires recordings:write… |
hub_count_calls | Return the total number of calls visible to the actor user. Use to plan pagination. Requires recordings:read scope. |
hub_count_search_calls | Count of calls matching a search query. Pair with `hub_search_calls` for paginated UIs. Requires recordings:read scope. |
hub_delete_call | Delete a call by ID. Hard-deletes both the UserCall metadata and the underlying recording media. NOT REVERSIBLE — use with care. Requires recordings:write scope. |
hub_get_audio_url | Generate a short-lived signed URL to download the recording's audio (typically MP3 or WAV). The URL is valid for `expiryMinutes` minutes (default 30, max enforced by Hub). The agent should NOT cache the URL — request a fresh one each time the audio is needed. Requires recordings:read scope. |
hub_get_call | Fetch a single call by ID. Returns the full UserCallDTO. Field map (the DTO is deeply nested): - top-level `id` (integer) — what /usercall/{id} expects, what list/search return - top-level `clickupList`/`jiraProjectId`/`airtableBaseId`/`airtableTableId` — populated when this call has… |
hub_get_custom_prompt | Get the workspace's custom prompt — house-style instructions that, together with each participant's own per-call prompt, notes and note template, form the instruction set their version of the summary, key points, action items and enhanced notes is generated from (task generation too). Returns {… |
hub_get_default_workspace | Get the user's "default workspace" — where new calendar events without an explicit assignment get routed. Returns { workspaceId: uuid | null }. Requires user-settings:read scope. |
hub_get_media_url | Like `hub_get_audio_url` but returns the full media (video + audio) when the recording has a video track. Falls back to audio-only when there isn't one. Same expiry semantics. Requires recordings:read scope. |
hub_get_preferred_integration | Get the workspace's preferred integration target — which task system new actions are routed to by default (Jira, ClickUp, Airtable, PM, etc.). Requires workspace-settings:read scope. |
hub_get_preview_url | Get a signed URL for the recording's preview thumbnail (a still image or short looping clip). Useful for embedding a card. Same expiry semantics. Requires recordings:read scope. |
hub_get_recording_progress | Get the processing progress of a recording. Returns an integer 0-100 — useful for polling after a `hub_reprocess_recording` call. Requires recordings:read scope. |
hub_get_workspace | Get details for the selected workspace (or the workspace bound to a workspace key) (the one this API key was provisioned for). Hub does not currently expose a single-workspace GET, so this returns the matching entry from the user's workspaces list. Requires workspaces:read scope. |
hub_lens_chat | Run a Lens chat query against the workspace's knowledge (recordings, calls, transcripts, integrated SaaS data). Returns the synthesized answer as a string. Pass `lastMessage` (the new user turn) and optionally `history` (prior turns). For multi-turn conversations the agent SHOULD pass an… |
hub_list_calendar_events | List the actor user's calendar events in a date range. Use this to find the eventId or seriesMasterId a prompt should attach to. Each event includes subject, start/end, whether a recording bot is subscribed, and any eventCustomPrompt / seriesCustomPrompt already set. Events belong to the user… |
hub_list_calls | Page through all calls the actor user can see (their own + any explicitly shared). Returns a list of UserCallDTO. Pagination is page+size; sort order is most-recent first. Requires recordings:read scope. |
hub_list_integrations | List all integrations connected to the selected workspace (or the workspace bound to a workspace key). Returns one entry per connected toolkit (Slack, Jira, ClickUp, Airtable, Notion, Gmail, GCal, GitHub, etc.) with system name, connection status, last sync time, and any vendor metadata. Useful… |
hub_list_members | List all members of the selected workspace (or the workspace bound to a workspace key). Each entry includes user UUID, email, name, role, and join timestamp. Useful for "tag this person", "summarize who said what in the last call", etc. Requires members:read scope. |
hub_regenerate_summary | Re-run the analysis for the CALLER's own version of the summary, key points, action items and (when they have notes) enhanced notes, against the existing transcript and using their CURRENT instruction set (workspace prompt, per-call prompt, notes and note template). Other participants' versions… |
hub_reprocess_recording | Re-run the FULL pipeline on a recording: transcription + summary + key points + action items. Slower and more expensive than `hub_regenerate_summary`. Use when a fresh transcription would meaningfully improve the result (different language detection, speaker diarization fix, etc.). Returns the… |
hub_search_calls | Free-text search across call name, description, attendees, and recording transcript content. Returns paginated UserCallDTO results. Requires recordings:read scope. |
hub_send_call_to_airtable | Push a call's extracted tasks into Airtable rows under one base + one or more tables. Requires recordings:write scope AND an Airtable integration on the workspace. Same return-shape caveat as `hub_send_call_to_jira` — boolean response = "request accepted", not "actually pushed". |
hub_send_call_to_clickup | Push a call's extracted tasks into a ClickUp list. Requires recordings:write scope AND a ClickUp integration on the workspace. Same return-shape caveat as `hub_send_call_to_jira` — boolean response = "request accepted", not "actually pushed". |
hub_send_call_to_jira | Push a call's extracted tasks into one or more Jira projects under the same cloud. Hub fans the action items out across the listed projects. Requires recordings:write scope AND a Jira integration on the workspace (see `hub_list_integrations`). IMPORTANT: returns boolean — `true` means Hub ACCEPTED… |
hub_set_call_custom_prompt | Set the custom prompt on an already-recorded call, by its integer call id. This is the right tool for meetings that never had a calendar event (ad-hoc desktop or bot recordings), and for re-analysing a call differently. It is the CALLER's own prompt: it shapes only their version of the summary… |
hub_set_custom_prompt | Update the workspace's custom prompt. Pass null or empty string to clear it. Takes effect on the next recording processed, or on hub_regenerate_summary for an existing one; existing recordings are not re-analysed automatically. Requires workspace-settings:write scope. |
hub_set_default_workspace | Set the user's "default workspace" to the workspace this API key is bound to (future calendar events without an explicit workspace will route here). To clear the default entirely, pass { clear: true }. The MCP fills the workspace UUID from the selected workspace (or the workspace bound to a… |
hub_set_event_custom_prompt | Set the custom prompt for ONE calendar occurrence. For a series occurrence it is applied TOGETHER with the series prompt (and the workspace prompt), not instead of them; for a one-off meeting it is the meeting's only per-call prompt. Takes effect the next time that meeting is processed. Requires… |
hub_set_preferred_integration | Set the workspace's preferred integration target. The value should be the integration system name returned by `hub_list_integrations` (e.g. "JIRA", "CLICKUP", "AIRTABLE", "PM"). Requires workspace-settings:write scope. |
hub_set_series_custom_prompt | Set the custom prompt for an entire recurring series. Applies to every occurrence, IN ADDITION to any occurrence-specific prompt set with hub_set_event_custom_prompt (both are applied when both are set). Requires recordings:write scope. |
list_accounts | List the accounts configured for this MCP session. Returns one entry per account with `name` (the label the caller passes as the `account` tool argument) and `workspace` (the workspace identifier or name declared for that account). API keys are not returned. In single-account mode (X-API-Key with… |
list_boards | List feature-request boards the caller can view in the current workspace. Each entry includes the board slug and the short-ID prefixes (featureRequestKey, bugReportKey) needed to address requests/bugs in follow-up tool calls. |
list_spaces | List wiki spaces the caller can view in the current workspace, each with a page count. Use the `key` field as the space identifier in follow-up wiki tool calls. |
list_workspaces | Unified Dutify list_workspaces: fresh credential/workspace discovery. Does not require a selected workspace or reserve quota. |
pm_add_comment_reaction | Add an emoji reaction to a task comment. `reactionType` is the emoji code (e.g. "thumbs_up", "heart", "smile"). Each user may add at most one reaction of each reactionType per comment. Requires COMMENT-level access on the task. API-key scope: `tasks:write`. |
pm_add_tasks_to_sprint | Associate tasks with a sprint. All tasks must belong to the same space as the sprint group. Pass identifiers (tsk_…), not task keys. Returns updated SprintDTO. API-key scope: `sprints:write`. |
pm_add_team_member | Add a single user to a team. Pass the user UUID (from pm_list_workspace_members). Idempotent — adding a user who is already a member is a no-op. Requires MANAGE_TEAMS. API-key scope: `teams:write`. |
And 131 more tools.
In its maker's words
Whole Dutify suite in one server: Hub call recordings, projects, Codexum wiki, Roadmarq requests.
- Website
- dutify.ai
- Source
- github.com/dutifyai/dutify-mcp
- Publisher
- dutifyai
- Listed from
- the official MCP Registry as
io.github.dutifyai/dutify - Version
- 0.1.1, updated 24 Oct 2026
- Kinds of work
- Messaging and support, Documents and files, Other work
The domain it lives on
- dutify.ai
- registered 25 Jul 2023 (3 years ago), at NameCheap, Inc., its home page is a working site
From our own crawl of domain names: registry records and the home page as our crawler last saw it.
Every call we made
| When | What happened | Time |
|---|---|---|
| Answered | 2729 ms | |
| Answered | 2199 ms | |
| Answered | 424 ms |
Next door
- Inbin: email for AI agentsDisposable inboxes for agent email verification
- AgentLairEmail delegation via inbox and vault
- Mailrith Email MarketingManage email subscribers, broadcasts, and automations with r
- faxforagents-mcpSend and receive faxes with approval
- AnyHookManage webhook inboxes for agent events
Is this your bot? Claim its address to add a verified badge and keep the listing current.