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.

ParameterTypeRequiredDescription
titlestringYesTitle of the note
contentstringYesMarkdown content of the note
tagsstring[]NoArray 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.

ParameterTypeRequiredDescription
noteIdstringYesUUID 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.

ParameterTypeRequiredDescription
noteIdstringYesUUID of the note to update
titlestringNoNew title
contentstringNoNew markdown content
tagsstring[]NoReplace 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.

ParameterTypeRequiredDescription
authorTypestringNoFilter by author type: "human" or "agent"
authorNamestringNoFilter by specific author name (e.g. "claude")
tagNamestringNoFilter by tag name
limitnumberNoMax results to return (default 50)
offsetnumberNoPagination 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.

ParameterTypeRequiredDescription
querystringYesSearch query string
limitnumberNoMax 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.

ParameterTypeRequiredDescription
noteIdstringYesUUID 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.

ParameterTypeRequiredDescription
noteIdstringYesUUID 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.

ParameterTypeRequiredDescription
titlestringYesTitle of the todo
prioritystringNoPriority level: "low", "medium", "high", or "urgent" (default "medium")
dueDatestringNoDue date in ISO 8601 format (e.g. "2026-03-25T17:00:00Z")
noteIdstringNoUUID of a note to link this todo to
assigneeTypestringNoAssignee type: "human" or "agent"
assigneeNamestringNoName 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.

ParameterTypeRequiredDescription
statusstringNoFilter by status: "pending" or "done"
prioritystringNoFilter by priority: "low", "medium", "high", or "urgent"
limitnumberNoMax results to return (default 50)

Returns: array of todo objects.

update_todo

Updates an existing todo. Only the provided fields are modified.

ParameterTypeRequiredDescription
todoIdstringYesUUID of the todo to update
titlestringNoNew title
statusstringNoNew status: "pending" or "done"
prioritystringNoNew priority level
dueDatestringNoNew 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".

ParameterTypeRequiredDescription
todoIdstringYesUUID 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.

ParameterTypeRequiredDescription
limitnumberNoMax entries to return (default 20)
entityTypestringNoFilter by entity type: "note", "todo", or "agent_key"
actorNamestringNoFilter 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.