Tool catalog (v0.3)

Pad’s remote MCP server at https://mcp.getpad.dev 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 (9 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.3).
  • 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.3", "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.3", "cmdhelp_version": "0.1" }
  • Call the pad_meta tool with action: version — same payload as the resource.

Pin against tool_surface_version: "0.3" 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 Remote MCP overview’s authentication section 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_playbook

Playbooks are workspace-owned, user-invokable procedures. The MCP tool mirrors pad playbook (list / show / run) so a remote agent can browse and execute playbooks the same way a local CLI user does.

ActionScopeNotes
listreadWorkspace playbook metadata (slug, invocation_slug, trigger, status, has_arguments, summary). Same shape as the bootstrap response
getreadFull body + fields for one playbook; accepts invocation_slug, item slug, or issue ref
runreadParse args against the playbook’s declared spec and return the body + bound args + any unbound required args. Side-effect-free — the server never executes a playbook; the agent reads the body and runs the steps

For action: run, pass either:

  • args (object) — pre-parsed argument map keyed by name, OR
  • raw_args (array of strings) — CLI-style tokens (positional values, bareword flags, key=value pairs); the server applies the same strict parser as pad playbook run.

The two forms are mutually compatible — explicit args take precedence over raw_args on key conflicts.

See Playbooks → for the author guide.

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
bootstrapreadOne-shot workspace overview: workspace + user + collections + always-on conventions + roles + playbook metadata + dashboard + recent activity. Equivalent to pad://workspace/{ws}/bootstrap and to pad_set_workspace’s embedded response

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://workspace/{ws}/bootstrap — one-shot workspace overview (same as pad_meta.bootstrap and pad_set_workspace’s embedded response)
  • 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.3 catalog over stdio.

← Remote MCP overview · Troubleshooting →