- Brand
- Duckhunt
- Category
- Developer Tools
- Primary Subcategory
- Project & Task Management Platforms
Integration details
Description
Connect your Duckhunt account to review incoming work, organize entries into tasks, and resume work with its notes and linked repositories. Uses Duckhunt's OAuth-protected MCP server and respects your workspace and agent preferences.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Project & Task Management Platforms
- Secondary Subcategories
- None listed
- Brand
- Duckhunt
- Access
- Account required
- First tracked
- 2026-10-28
- Tool count
- 109
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for duckhunt
Get updates when duckhunt’s Discoverability Score or category rank changes.
Competing in ChatGPT Project & Task Management Platforms
View Category109 tools agents can invoke
Adds a work note to a task (targetId) or to an entry (entryId), exactly one of them. It is YOUR channel to leave state visible to the user and context for future agent sessions: kind=progress (progress of the ongoing work), blocker (what blocks you), result (summary/handoff when finishing), note (free context, default). body in markdown. `summary`: ONE sentence in plain text (max. 200 chars) with the verdict; it is the only thing the user reads in the mobile notification WITHOUT expanding it, so write it to be understood on its own. Depending on notification preferences, adding the note can send a push through the user's configured push service. `data` optional: free json object for structured state (branch, pr url, checklist...). Use `data.context` (conversationId, host, repoPath, memoryDir...) so that a future invocation resumes in its environment. `author`: identify yourself (e.g. "claude-code"). Notes appear embedded in duckhunt-target-get and duckhunt-entry-get. Inside an agent run your answer goes through duckhunt-run-reply, never here: a note holds the state of the task you are working on when your prompt asks you to track it, or what the user asks for. Related: duckhunt-note-update (keep the same note alive), duckhunt-note-list, duckhunt-note-delete.
duckhunt-note-add
Adjusts the agent session time of a target WITH SIGN (the `session` signal of duckhunt-target-time). Corrects undercounted time: implicit tracking splits your session when you go >60min without touching duckhunt (long stretches of editing/compiling/running without tool calls), so your real time may exceed the recorded one. POSITIVE minutes adds the missing ones; NEGATIVE corrects downwards if you overshot. To set an absolute total use duckhunt-target-set-time. NOT idempotent: each call adjusts again, do not retry blindly. Requires mcp time tracking enabled in settings. Returns the updated total.
duckhunt-target-add-time
Attaches an entry to a task
duckhunt-target-attach
Uploads base64 content (dataBase64, also accepts a data-url data:...;base64,...) as an attachment of a task. ONLY for small content that you generate right here (a few KB: a note, a short diff). If the file is already on disk or weighs more than ~64 KB use duckhunt-attachment-upload-ticket: base64 goes through the conversation and costs ~1.4 characters per byte (a 100 KB png is ~137,000 characters, and they are paid twice if you also generate it with `base64` in the terminal). 10 MB limit per file and subject to the storage quota of the task owner. Requires write permission on the task. contentType is optional: if omitted it is inferred from the filename extension (it matters so attachment-read later renders it as image/text). Attachments appear in duckhunt-attachment-list and in `attachments` of duckhunt-target-get. Returns the created metadata {id, filename, contentType, sizeBytes, url}.
duckhunt-attachment-add
Creates a new task with this entry attached. Returns the targetId.
duckhunt-entry-claim
Comments on the entry (jira, bitbucket). Polymorphic by source. Email is read-only (does not support comments). To mention someone use the canonical syntax @[Name](accountid:ID) (resolve ids with duckhunt-mention-suggest); each provider translates it to its own format.
duckhunt-entry-comment
Creates a new jira issue and ingests it as a local entry. Optional targetId attaches it to that task in the same step (useful for derived work: "this needs a follow-up ticket"). Valid projectKey/issueType via duckhunt-jira-projects. Returns {entryId, key}.
duckhunt-jira-create
Creates one automation rule to archive tasks. Archives the subject tasks. Available on target transitions or schedules with scan=targets. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-archive-tasks
Creates one automation rule to attach entries. Attaches the matching entry to an owned task. Supply exactly one of targetId or match=jira_key. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-attach-entry
Creates one automation rule to create tasks. Creates a task when the entry or schedule trigger fires. attachTrigger also links the triggering entry. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-create-task
Creates one automation rule to investigate entries. Queues a read-only investigation of the triggering entry on the user runner using its type template. Saved disabled; the user enables it in Duckhunt. Posting the result to Jira is not supported by this tool. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-investigate
Creates one automation rule to run prompts. Queues the supplied prompt on the user runner with the read repository profile. The agent may change Duckhunt data through its allowed tools but cannot edit repository code. Anchored to the triggering entry/task, each scanned task, or no item on a schedule without scan. Saved disabled; the user enables it in Duckhunt. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-run-prompt
Creates one automation rule to send notifications. Sends an in-app/push notification to the rule owner about the triggering entry. Requires an entry trigger. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-notify
Creates one automation rule to suppress inbox events. Discards the matching inbox event and prevents its notification. Requires trigger=entry and triggerConfig.on=notified. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-suppress-event
Creates one automation rule to update tasks. Changes status, type, priority or labels of the subject tasks. Supply at least one change. A schedule requires scan=targets. This call saves the rule; it does not execute the action immediately.
duckhunt-automation-create-update-tasks
Creates a new version ("v2"/follow-up) of a target: a CLEAN task linked to the original (copies the title with suffix (vN), description and labels; its own board and timeline), without touching or cluttering the original. Use it when a closed task has to be reopened or redone instead of reviving its history. Different from a subtask/epic: it is not hierarchy. Returns the id of the new version. The version chain appears in `versions` of duckhunt-target-get.
duckhunt-target-follow-up
Creates a task, optionally with initial attached entries. Optional parentId to be born as a subtask of another target. isEpic=true creates an epic (organizational container: groups subtasks, with no work or status of its own). Optional priority (1=urgent..4=low). Optional taskType classifies the task (catalog key, built-in feature|bug|chore|improvement|research or custom; list them with duckhunt-task-type-list). Optional status to start directly in a column (e.g. in_progress when claiming and starting). Optional note leaves an initial work note kind=progress (attributed to author); it collapses the claim+start flow into a single call. Optional workspaceId creates it in another workspace of the user (default: the active one). Returns {id, workspaceId, url, created}; created=false if a recent target with the same title already existed (idempotent on retries).
duckhunt-target-create
Creates a note of the user (standalone markdown document, visible and editable in /notes). To report progress on a task use duckhunt-note-add (work notes), not this.
duckhunt-user-note-create
Deletes an attachment by its id (the one from duckhunt-attachment-list): the metadata row + the blob. Requires write permission on the owning task. Idempotent on retries. Returns {ok, targetId}; error if it does not exist or without permission.
duckhunt-attachment-delete
Deletes an automation rule you own (and its run log).
duckhunt-automation-delete
Deletes an entry you own: detaches it from its targets and removes its local data (extensions, comments, events, custom fields). Its agent conversations are kept (they move to a deleted-entry placeholder and stay in /agents). Hard delete WITHOUT tombstone: if the entry is still alive in its source (a jira issue still assigned, an email, a notion page still shared), the poller may re-ingest it later. Use it to clean up stale or orphaned entries, not to archive work in progress (for that, move/archive the target).
duckhunt-entry-delete
Deletes a note of the user (standalone document). Its agent conversations are kept in /agents.
duckhunt-user-note-delete
Deletes one of your own work notes
duckhunt-note-delete
REPLACES the whole description of the entry in its source (jira, bitbucket/github pr). Markdown; each provider converts it to its own format. Refreshes the local cache after the write.
duckhunt-entry-set-description
Writes a field of the entry in its source (jira today): assignee (accountId), priority (id), sprint (numeric id), duedate (YYYY-MM-DD), estimate/remainingEstimate (jira duration "2w 3d 4h 30m") with string|null (null clears); labels (names), fixVersions/affectsVersions/components (ids) with an array of strings REPLACING the whole set. The ids come from duckhunt-entry-field-options. Refreshes the local cache after the write.
duckhunt-entry-set-field
Renames the entry by writing to its source (jira summary, bitbucket/github pr title, github issue). Refreshes the local cache after the write.
duckhunt-entry-set-title
Selectable options for a field in its source. Without transitionId: editable field of the entry (assignable users, open sprints, project versions, labels, priorities, components; duedate has no options, use YYYY-MM-DD in set-field). With transitionId: field on the screen of THAT transition (field = the id returned by duckhunt-entry-list-transitions, e.g. resolution or customfield_10034), useful when its catalog does not fit entirely in the response (user directories). q filters. Supported according to the provider capabilities (jira today).
duckhunt-entry-field-options
Generates (or regenerates) the daily note for a date (YYYY-MM-DD, default: today) from the kanban transitions, according to the config of the active workspace (in per-workspace scope there is one note per workspace). Stored as a duckhunt note (read or edit it with duckhunt-user-note-get/update using the returned noteId). Preserves user edits below the marker.
duckhunt-daily-generate
Returns a task with all its attached entries, subtasks, labels, custom fields (with their value), its work notes (state/memory left by agents and the user; read them before resuming work), the latest agent runs launched from it or on its entries (`agentRuns`: r#N, status and verdict; the whole thread with duckhunt-agent-run-get), earlier runs on other items that look alike (`similarRuns`: same exception, table, alarm family, ticket key or title, with how they match and their verdict; data from other runs, it may not apply) and its associated repos, each with the already ingested commits of its branch (repos[].commits, most recent first: the code that was written even if nobody noted it).
duckhunt-target-get
The INSIGHTS views of the user for a period, the same data their /insights tabs show. view: summary (done, created, tracked time by signal and day, agent cost, inbox volume and triage, open board now, each with the previous comparable span and a series), findings (deterministic flags of what deserves action: review_merged, review_queue, stale_wip, unattributed_code, noisy_source, agent_rule_cost; without the dismissed ones), time (per local day totals and, with blocks=true, its de-overlapped blocks hour by hour; time per task and per repo with what reached no task, meetings, tempo per day; a quarter has no blocks), flow (cycle time p50/p85 over 90 days, started work with its age, where finished work waited by status, reopened tasks), agents (runs and cost per day and origin, models, usefulness per automation rule, the most expensive conversations, questions and permission waits, machine occupancy) or sources (where inbox notices ended up per provider, triage, the mute rule that would help backtested on 30 days, the most repeated items). Everything follows scope: with workspace, time and meetings are only what belongs to its tasks, issues, repos and calendars; with all, the whole user. Optional period (day|week|month|quarter, default week), anchor (yyyy-mm-dd inside the period; default today for day and yesterday otherwise) and scope (workspace = the active one, all = every own workspace).
duckhunt-insights
Enqueues an investigation agent run on any entry (alert, ticket, PR, email…; the prompt adapts to its category): the duckhunt-runner daemon of the user, on their machine, claims it and launches claude code as a read-only conversation in an isolated worktree of the repo (read-only shell; read-only aws cli only for the entry account the machine maps; no web) with the duckhunt mcp; the verdict is stored in the run conversation and can be sent via push. Optional repo (ws/slug) and branch; without repo it is resolved from the entry (pr → its repo; attached target → target_repo; nightwatch app → its repo). Returns the reference of the enqueued run (r#N, to follow it with duckhunt-agent-run-get) or the skip reason (active_run: another copy of the same item is already being investigated, e.g. the same alert in another workspace; cooldown; daily_cap; daily_turn_cap). The user gets a launch alert on their devices for every run enqueued here.
duckhunt-agent-investigate
Links a repo and its branches to a target so its pull request can be opened with duckhunt-pr-open. Adding NEVER overwrites previous rows: a target can accumulate several prs, even from the same repo (another source branch, or the same one against dev and master); only repeating the exact coordinates is idempotent (returns the existing row). repo = workspace/slug (bitbucket) or owner/repo (github); omitted destBranch = main branch of the repo when opening. Configured repos come in `repos` of duckhunt-target-get (stale branches are removed with duckhunt-target-branch-delete). Do it when creating the working branch: it leaves the coordinates ready to open the pr when done.
duckhunt-target-branch-set
Lists the jira projects where you can create issues, with their issue types. Use it to discover valid projectKey/issueType before duckhunt-jira-create. A project with empty issueTypes is one whose metadata could not be read: do not use it to create. Slow (1-3s); cache the result in your context.
duckhunt-jira-projects
Comments of the pr (lazy fetch from bitbucket). Paginated, sort=-created_on.
duckhunt-bitbucket-pr-comments
Lists the commits of a code review entry (pr/mr): hash, message, author and date, newest first. Generic (bitbucket today). Useful to understand the scope of a pr before reviewing or commenting on it.
duckhunt-code-commits
Tasks of the pr (checklist items with state UNRESOLVED|RESOLVED). A single page.
duckhunt-bitbucket-pr-tasks
Agent runs of the user in the workspace of the token, most recent first: r#N reference, status, investigated entry, the target it was launched from and verdict in one sentence. Optional filters by status (several), source, provider of the entry and target (runs launched from it or on its attached entries, in any workspace). allWorkspaces=true lists the runs of ALL workspaces of the user. To read the whole conversation of one, duckhunt-agent-run-get.
duckhunt-agent-run-list
Reads saved automation rules owned by the user in the active workspace, including global rules. Returns their configuration and enabled/expired state. Does not execute, create, modify or enable rules. Each supported automation action has separate create/update tools with its full schema in tools/list. Use duckhunt-automation-runs to read execution history.
duckhunt-automation-list
Lists the user's daily notes (stored as duckhunt notes, one per day, or per workspace and day in per-workspace scope), newest first
duckhunt-daily-list
Lists entries (polled items) of the workspace bound to the token. Filters: category (tickets/code/email/notes/monitoring) or provider (jira/bitbucket/gmail/...), mutually exclusive; provider wins if both are given. status, q, unclaimed. allWorkspaces=true aggregates ALL workspaces of the user (each item carries workspaceId).
duckhunt-entry-list
Persisted comments of the entry (jira/bitbucket), in chronological order, with mentionsMe. Backfills live if needed.
duckhunt-entry-comments
Lists the transitions available for the entry. Each one includes `fields`: the fields the workflow asks for when applying it (resolution when closing, etc.) with their options and `currentValue` (what the issue already has; a required field with a currentValue can be omitted); the required ones are passed in duckhunt-entry-transition.fields.
duckhunt-entry-list-transitions
Lists unread inbox events of the workspace bound to the token, with the task(s) associated with each entry. Filters: category or provider (mutually exclusive; provider wins). allWorkspaces=true aggregates all workspaces of the user.
duckhunt-inbox
Lists what OTHER users have shared with you: `items` = individual targets (contract 36: validation / handoff; id, title, status, owner email and your role) and `workspaces` = whole workspaces (contract 43: id, name, owner and role). viewer=read-only, editor=you can write. Open a target with duckhunt-target-get (you will see the collaborative layer + your own per-source entries); a shared workspace is worked on with an mcp token bound to it (activate it in the ui and re-authorize) or by passing it as workspaceId when creating.
duckhunt-shared-list
Lists the labels of the user with their color and the number of labeled targets (usageCount)
duckhunt-label-list
LOCAL read-back of the worklog ledger that duckhunt pushed to tempo (does NOT call tempo: lists what duckhunt logged, with the source signal). Each row: source (code/agent/manual/app/explicit), jiraKey, day, seconds, tempoWorklogId (null = tracked but not pushed yet). For reconciling what was synced and why. Does NOT see worklogs created outside duckhunt. Optional from/to/jiraKey filters.
duckhunt-tempo-list-worklogs
Lists monitors of the workspace bound to the token (aws cloudwatch alarms + open nightwatch issues + uptime kuma monitors) with derived severity. All of them live in category=monitoring; filter by provider (aws|nightwatch|uptime_kuma) or severity. Resolved nightwatch issues are omitted. allWorkspaces=true aggregates the monitors of ALL the workspaces of the user.
duckhunt-list-monitors
Lists who a target of YOURS (targetId) or a workspace of YOURS (workspaceId) is shared with: active grants (email + role). Exactly one of the two. Owner only.
duckhunt-share-list
Lists the files hanging from the SOURCE of an entry: attachments of an email (including the images pasted in the body, `inline: true`), attachments of a jira ticket or files of a slack message. They are not stored in duckhunt: they live in the source and are read on-demand. Returns [{ref, filename, contentType, sizeBytes, inline, from}]; `ref` is opaque and is what duckhunt-entry-file-read/save accept. [] if the source has no files. Use it when the ticket or the email mention a screenshot, a log or a pdf you need to look at.
duckhunt-entry-file-list
Lists the kanban statuses of the user (built-in + custom) with their key, label and color. Use the `key` (e.g. "in_progress" or "c1") as the `status` value in target-create / target-update. `locked` lists the columns locked in the active workspace: no task can be created in, moved into or out of, reordered, archived or deleted from them until the user unlocks them on the board.
duckhunt-status-list
duckhunt ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve duckhunt's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are duckhunt alternatives on ChatGPT?
As of 2026-10-28, duckhunt competes with Asana, Linear, Atlassian Rovo (Legacy), monday.com, ClickUp, Trello, Smartsheet AU, Smartsheet EU and 78 more in ChatGPT Project & Task Management Platforms, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.