Tool catalog (v0.2)

Pad’s remote MCP server at mcp.getpad.dev/mcp advertises a hand-curated catalog of resource × action tools. Each top-level tool takes an action enum that selects the operation, plus action-specific parameters. This shape keeps the surface compact (8 tools in the agent’s tool list, not 80+) without losing access to any individual capability.

The contract is versioned. Two independent version tiers are advertised:

  • padToolSurface — the MCP tool catalog shape (this page documents v0.2).
  • padCmdhelp — the underlying CLI help-tree shape (currently "0.1"). Bumps independently from the tool surface.

The handshake’s result.capabilities.experimental block carries both:

{
  "result": {
    "capabilities": {
      "experimental": {
        "padToolSurface": { "version": "0.2", "tool_surface_stable": true },
        "padCmdhelp":     { "version": "0.1", "tool_surface_stable": true }
      }
    }
  }
}

The same values are also reachable two other ways:

  • Read the pad://_meta/version resource:
    { "tool_surface_version": "0.2", "cmdhelp_version": "0.1" }
  • Call the pad_meta tool with action: version — same payload as the resource.

Pin against tool_surface_version: "0.2" if you’re building a downstream consumer. Breaking changes bump the version and are announced on the blog before they ship.

Capability scopes

Every tool action is gated by one of three scopes:

ScopeExample actions
pad:readpad_item.list, pad_item.get, pad_search.query, pad_project.dashboard
pad:writepad_item.create, pad_item.update, pad_item.comment, pad_item.bulk-update
pad:adminpad_workspace.invite, pad_collection.create, pad_role.create

A token’s scope is set at consent time and is bounded by your role in each workspace at call time. See the index page’s authentication overview for the full model.

Tools

pad_set_workspace

Sets the active workspace for the rest of the conversation. After calling this, every subsequent tool call defaults to that workspace unless you explicitly pass a different one via the workspace parameter.

ParameterTypeDescription
workspacestringWorkspace slug (e.g. my-project)

Returns: the workspace’s { slug, name, role } for confirmation.

pad_item

Items are the universal unit: tasks, ideas, plans, docs, and any custom collections you’ve defined. References use issue IDs (TASK-5, BUG-12, PLAN-3).

ActionScopeNotes
listreadList items, filter by collection / status / priority / parent / role / assignee
getreadShow full item including content, comments, links
createwriteCreate an item; specify collection, title, optional fields
updatewritePartial update; pass comment to capture why (also how role assignment happens — set role to a role slug)
deletewriteArchive (soft delete)
movewriteMove between collections
linkwriteCreate a relationship — see link_type enum below
unlinkwriteRemove a relationship of a given link_type
depsreadShow dependency graph for an item
star / unstarwritePersonal-pin (per user, per item)
starredreadList your starred items
commentwriteAdd a comment, optionally a reply via reply_to
list-commentsreadRead the comment thread
bulk-updatewriteApply the same patch to multiple items (refs: array<string>)
notewriteAppend an implementation_notes entry
decidewriteAppend a decision_log entry

link_type enum (for link / unlink): blocks, blocked-by, supersedes, implements, split-from. Full-text search over items is exposed separately as pad_search.query — not as a pad_item action.

pad_workspace

ActionScopeNotes
listreadList workspaces this token can access
membersreadList members of a workspace
inviteadminInvite a user by email
storagereadWorkspace storage usage (items, attachments, etc.)
audit-logreadWorkspace audit-log entries (filter by audit_action)

pad_collection

Collections are typed item containers (Tasks, Ideas, Plans, Docs by default; custom collections supported).

ActionScopeNotes
listreadList collections in the workspace with their schemas + counts
createadminDefine a new collection (typed fields via the field DSL)

pad_project

Higher-level intelligence tools that aggregate across collections.

ActionScopeNotes
dashboardreadActive items, plans, attention items, suggestions
nextreadRecommended next task (role-aware if role is set)
standupreadRecently completed / in-progress / blockers (configurable lookback)
changelogreadRelease notes from completed items (range-filterable)

pad_role

Pad’s agent-role system (Planner, Implementer, Reviewer, etc.) lets users organize work by what kind of thinking it requires.

ActionScopeNotes
listreadList workspace roles
createadminDefine a new role (slug, name, optional icon + description)
deleteadminRemove a role

Role assignment is not a pad_role action — assign items to a (user, role) pair via pad_item.action: update with the role and assign parameters.

ActionScopeNotes
queryreadFull-text search across items in the workspace

Returns: { items, total }. Cross-collection by design.

pad_meta

ActionScopeNotes
server-inforeadServer name + runtime version (lightweight, no params)
versionreadFull version metadata: pad version, cmdhelp_version, tool_surface_version, MCP protocol version (same JSON as pad://_meta/version)
tool-surfacereadCatalog dump: every tool, action, and input schema

Resources

The MCP resources/list surface exposes:

  • pad://workspaces — list of workspaces this token can access (top-level, server-wide)
  • pad://workspace/{ws}/items/{ref} — a single item
  • pad://workspace/{ws}/items — all items in a workspace
  • pad://workspace/{ws}/dashboard — the dashboard payload (same as pad_project.dashboard)
  • pad://workspace/{ws}/collections — collection list
  • pad://_meta/version — server-wide version + contract metadata

Resources are read-only and cheaper for an agent to inspect than calling a tool.

Prompts

Pad ships four MCP prompts (multi-step workflows the agent can run on demand):

  • pad_plan — guided plan creation
  • pad_ideate — brainstorming workflow that captures ideas at checkpoints
  • pad_retro — retrospective for a completed plan
  • pad_onboard — codebase analysis + workspace setup

These are the same workflows the local /pad skill exposes. The remote MCP server hands them to any client that supports prompts/get.

Going deeper

  • The Go source of the catalog is at internal/mcp/catalog_*.go. Each pad_<resource> is its own file.
  • For local-machine MCP (no account, runs against a SQLite file on your laptop), see MCP — Local. It exposes the same v0.2 catalog over stdio.

← MCP index · Troubleshooting →