MCP Tools Reference
Complete reference for all 12 MCP tools exposed by the Duet MCP server. These tools allow AI agents to read, create, and manage notes and todos through the Model Context Protocol.
For setup instructions, see the MCP Setup guide.
Note Tools
create_note
Creates a new note. The note is attributed to the calling agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Title of the note |
| content | string | Yes | Markdown content of the note |
| tags | string[] | No | Array of tag names to attach |
Returns: the created note object with id, title, content, tags, author, and timestamps.
// Example
use_mcp_tool("duet", "create_note", {
title: "Meeting Notes - March 19",
content: "## Key decisions\n- Ship v2 by Friday\n- Migrate to new auth",
tags: ["meetings", "engineering"]
})read_note
Reads a single note by its ID, including full content, tags, and version information.
| Parameter | Type | Required | Description |
|---|---|---|---|
| noteId | string | Yes | UUID of the note to read |
Returns: note object with content, tags, version count, and metadata.
update_note
Updates an existing note. Only the provided fields are modified. A new version is created automatically.
| Parameter | Type | Required | Description |
|---|---|---|---|
| noteId | string | Yes | UUID of the note to update |
| title | string | No | New title |
| content | string | No | New markdown content |
| tags | string[] | No | Replace all tags with this array |
Returns: the updated note object.
list_notes
Lists notes with optional filters. Results are ordered by last modified date, newest first.
| Parameter | Type | Required | Description |
|---|---|---|---|
| authorType | string | No | Filter by author type: "human" or "agent" |
| authorName | string | No | Filter by specific author name (e.g. "claude") |
| tagName | string | No | Filter by tag name |
| limit | number | No | Max results to return (default 50) |
| offset | number | No | Pagination offset (default 0) |
Returns: array of note objects (content truncated for list view).
search_notes
Full-text search across all note titles and content using PostgreSQL's built-in search engine.
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Search query string |
| limit | number | No | Max results to return (default 20) |
Returns: array of matching notes ranked by relevance.
// Example
use_mcp_tool("duet", "search_notes", {
query: "deployment checklist",
limit: 5
})archive_note
Archives a note (soft delete). The note is hidden from default views but can be restored. Agents can archive but never permanently delete.
| Parameter | Type | Required | Description |
|---|---|---|---|
| noteId | string | Yes | UUID of the note to archive |
Returns: confirmation with the archived note's ID.
get_note_history
Retrieves the full version history of a note. Each edit creates a new version automatically.
| Parameter | Type | Required | Description |
|---|---|---|---|
| noteId | string | Yes | UUID of the note |
Returns: array of version objects with version number, content snapshot, author, and timestamp.
Todo Tools
create_todo
Creates a new todo item. Can optionally be linked to a note and assigned to a specific user or agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Title of the todo |
| priority | string | No | Priority level: "low", "medium", "high", or "urgent" (default "medium") |
| dueDate | string | No | Due date in ISO 8601 format (e.g. "2026-03-25T17:00:00Z") |
| noteId | string | No | UUID of a note to link this todo to |
| assigneeType | string | No | Assignee type: "human" or "agent" |
| assigneeName | string | No | Name of the assignee |
Returns: the created todo object.
// Example
use_mcp_tool("duet", "create_todo", {
title: "Review PR #42",
priority: "high",
dueDate: "2026-03-20T17:00:00Z",
assigneeType: "human",
assigneeName: "emre"
})list_todos
Lists todos with optional filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | string | No | Filter by status: "pending" or "done" |
| priority | string | No | Filter by priority: "low", "medium", "high", or "urgent" |
| limit | number | No | Max results to return (default 50) |
Returns: array of todo objects.
update_todo
Updates an existing todo. Only the provided fields are modified.
| Parameter | Type | Required | Description |
|---|---|---|---|
| todoId | string | Yes | UUID of the todo to update |
| title | string | No | New title |
| status | string | No | New status: "pending" or "done" |
| priority | string | No | New priority level |
| dueDate | string | No | New due date in ISO 8601 format |
Returns: the updated todo object.
complete_todo
Marks a todo as done. This is a convenience shortcut for setting status to "done".
| Parameter | Type | Required | Description |
|---|---|---|---|
| todoId | string | Yes | UUID of the todo to complete |
Returns: the completed todo object.
Activity Tool
get_activity_feed
Retrieves the activity feed showing recent actions by all users and agents. Useful for understanding what changes have been made and by whom.
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | number | No | Max entries to return (default 20) |
| entityType | string | No | Filter by entity type: "note", "todo", or "agent_key" |
| actorName | string | No | Filter by actor name (e.g. "claude", "human") |
Returns: array of activity entries with action, actor, entity, and timestamp.
Agent Permissions
Agents operate under a restricted permission model. When registering an agent, you can grant a combination of read, write, and archive permissions.
- read - allows
read_note,list_notes,search_notes,get_note_history,list_todos,get_activity_feed - write - allows
create_note,update_note,create_todo,update_todo,complete_todo - archive - allows
archive_note
Agents can never permanently delete notes or todos. Only human users can perform destructive deletions.