MCP Tools
Complete reference for all 22 SpecForge MCP tools — parameters, usage, and examples.
SpecForge exposes 22 MCP tools organized in five categories. These tools are available to any MCP-compatible coding agent (Claude Code, Cursor, VS Code with Copilot, Gemini CLI, etc.) once the SpecForge MCP server is configured.
Queries
Six tools for reading project data, searching tickets, and generating reports. These are read-only — they never modify your specification.
get
Retrieves a single entity by type and ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | "project" | "specification" | "epic" | "ticket" | "implementation_session" | Yes | Entity type to retrieve |
id | string | Yes | Entity ID |
specificationId | string | No | Specification context (required for epics and tickets) |
{
"type": "ticket",
"id": "tkt_abc123",
"specificationId": "spec_xyz789"
}Returns the complete ticket object including title, description, steps, acceptance criteria, dependencies, status, complexity, priority, tags, and file expectations.
list
Lists entities of a given type with optional filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | "projects" | "specifications" | "epics" | "tickets" | Yes | Entity type to list |
projectId | string | No | Filter by project (required for specifications) |
specificationId | string | No | Filter by specification (required for epics and tickets) |
epicId | string | No | Filter tickets by epic |
{
"type": "tickets",
"specificationId": "spec_xyz789",
"epicId": "epic_456"
}Returns an array of all tickets belonging to the specified epic.
search
Unified search across tickets with full-text queries and structured filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | No | Full-text search across ticket titles and descriptions |
files | string[] | No | Filter by expected file paths |
tags | string[] | No | Filter by tags |
status | string[] | No | Filter by status: "pending", "ready", "active", "done" |
complexity | string[] | No | Filter by complexity: "small", "medium", "large", "xlarge" |
priority | string[] | No | Filter by priority: "low", "medium", "high", "critical" |
limit | number | No | Maximum results to return |
offset | number | No | Pagination offset |
fields | string[] | No | Specific fields to include in results |
{
"query": "authentication middleware",
"status": ["ready", "pending"],
"priority": ["high", "critical"],
"limit": 10
}✅ Combine
fileswithtagsto find all tickets touching a specific part of your codebase. For example,files: ["src/auth/**"]withtags: ["security"].
get_next_actionable_tickets
Returns tickets in ready status with all dependencies satisfied, ordered by priority and complexity.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to query |
projectId | string | No | Project context |
limit | number | No | Maximum tickets to return |
{
"specificationId": "spec_xyz789",
"limit": 5
}This is the primary entry point for agents deciding what to work on next. In Agent Teams, the orchestrator calls this to assign tickets to workers.
get_blocked_tickets
Returns tickets in pending status along with the reasons they’re blocked.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to query |
Each blocked ticket includes its unresolved dependencies and any external block reasons.
get_report
Generates analytical reports at different scopes and time ranges.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | "implementation" | "time" | "blockers" | "work" | "implementation_analysis" | Yes | Report type |
scope | "project" | "specification" | "epic" | Yes | Report scope |
scopeId | string | Yes | ID of the scope entity |
startDate | string | No | Start date for time-ranged reports (ISO 8601) |
endDate | string | No | End date for time-ranged reports (ISO 8601) |
| Report Type | Description |
|---|---|
implementation | Progress summary with completion percentages and remaining work |
time | Time tracking analysis with estimated vs. actual hours |
blockers | Detailed blocker analysis with dependency chains |
work | Work session history and activity log |
implementation_analysis | Deep analysis of implementation quality and patterns |
Lifecycle
Nine tools that drive specifications through planning, implementation, and review. These are the core workflow tools.
start_planning_session
Opens a planning session for a specification, enabling structural changes.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to plan |
The specification must be in draft, planning, specifying, or validating state.
action_planning_session
Performs operations within an active planning session. This is the primary tool for building specifications — it handles 18 distinct operations.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification being planned |
operation | string | Yes | Operation to perform (see table below) |
Additional parameters depend on the operation.
Structure Operations
| Operation | Description |
|---|---|
set_metadata | Update specification title, description, or tags |
create_epic | Create a new epic with title, description, and ordering |
update_epic | Modify an existing epic |
create_ticket | Create a ticket within an epic |
update_ticket | Modify an existing ticket |
delete_epic | Remove an epic and its tickets |
delete_ticket | Remove a single ticket |
Linking Operations
| Operation | Description |
|---|---|
add_dependencies | Define dependency links between tickets |
remove_dependency | Remove a dependency link |
create_blueprint | Create a new blueprint document |
link_blueprint | Link a blueprint to an epic |
update_blueprint | Modify an existing blueprint |
delete_blueprint | Remove a blueprint |
unlink_blueprint | Unlink a blueprint from an epic |
Query & Control Operations
| Operation | Description |
|---|---|
get_ticket | Retrieve a ticket within session context |
advance_phase | Manually advance the specification phase |
get_status | Get current planning session status |
gps | Get a planning summary with progress indicators |
Example — Creating a ticket:
{
"specificationId": "spec_xyz789",
"operation": "create_ticket",
"epicId": "epic_456",
"title": "Implement JWT token generation",
"description": "Create a service that generates signed JWT access tokens with configurable expiration.",
"complexity": "medium",
"priority": "high",
"steps": [
"Create JwtService class in src/auth/jwt.service.ts",
"Implement generateAccessToken method with RS256 signing",
"Add token expiration configuration via environment variables",
"Write unit tests for token generation and validation"
],
"acceptanceCriteria": [
"Tokens are signed with RS256 algorithm",
"Token expiration is configurable",
"Invalid tokens are rejected with clear error messages"
]
}ℹ️ The specification transitions automatically between
planning,specifying, andvalidatingstates based on the operations you perform. You don’t manage these transitions manually.
complete_planning_session
Ends the planning session and triggers the Planning Review gate.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to complete planning |
If the Planning Review gate is enabled and the specification passes, it advances to ready.
start_work_session
Begins implementation work on a specific ticket.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticketId | string | Yes | Ticket to work on (must be in ready status) |
Transitions the ticket from ready to active. Returns the full ticket context: implementation steps, acceptance criteria, file expectations, dependency outputs, and linked blueprints.
action_work_session
Records progress, results, and discoveries during implementation.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticketId | string | Yes | Active ticket |
steps | object[] | No | Step completion updates |
acceptanceCriteria | object[] | No | Acceptance criteria results |
testResults | object[] | No | Test execution results |
notes | string | No | Implementation notes |
files | object[] | No | File changes made |
discovery | object | No | New information discovered during implementation |
blockReason | string | No | Report an external blocker |
{
"ticketId": "tkt_abc123",
"steps": [
{ "index": 0, "completed": true },
{ "index": 1, "completed": true }
],
"files": [
{ "path": "src/auth/jwt.service.ts", "action": "created" },
{ "path": "src/auth/jwt.service.test.ts", "action": "created" }
],
"notes": "Used jose library instead of jsonwebtoken for Edge Runtime compatibility."
}complete_work_session
Finalizes work on a ticket with a summary and validation results.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticketId | string | Yes | Active ticket |
summary | string | Yes | Summary of work performed |
files | object[] | No | Final list of file changes |
actualHours | number | No | Hours spent on implementation |
validation | object | No | Validation results: tests, lint, typeCheck, build |
Transitions the ticket from active to done. Dependent tickets are recalculated and may become ready.
start_review_session
Begins an Implementation Review session for a specification.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to review (must be in ready_for_review state) |
action_review_session
Addresses findings during an active review session.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification being reviewed |
reviewSessionId | string | Yes | Active review session ID |
findingsAddressed | object[] | Yes | List of findings and how they were addressed |
complete_review_session
Concludes the Implementation Review.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification being reviewed |
reviewSessionId | string | Yes | Review session ID |
summary | string | Yes | Review summary |
confirmAllDismissed | boolean | No | Confirm that all remaining findings are intentionally dismissed |
Mutations
Four tools for creating, modifying, and linking project data.
create_specification
Creates a new specification within a project.
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | Project to create the specification in |
title | string | Yes | Specification title |
description | string | Yes | Detailed description of what to build |
reopen_specification
Reopens a completed or reviewed specification for additional work.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to reopen |
reset_work_session
Resets completed tickets back to a workable state.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification context |
ticketIds | string[] | Yes | Tickets to reset |
options | object | No | Reset options (e.g., clear files, clear notes) |
⚠️ Resetting tickets clears work session data. Linked commits and PRs are preserved, but step completions, notes, and acceptance criteria results are removed. Resetting cascades to dependent tickets.
link_pull_request
Associates a pull request with a completed ticket.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticketId | string | Yes | Ticket to link |
prNumber | number | Yes | Pull request number |
prUrl | string | Yes | Full pull request URL |
title | string | Yes | PR title |
author | string | Yes | PR author |
repoUrl | string | Yes | Repository URL |
Orchestration
Two tools for understanding and navigating the dependency graph.
get_critical_path
Calculates the longest dependency chain in a specification — the sequence of tickets that determines the minimum time to completion.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to analyze |
Returns an ordered list of tickets forming the critical path, along with total estimated effort.
get_dependency_tree
Renders the complete upstream and downstream dependency tree for a specification.
| Parameter | Type | Required | Description |
|---|---|---|---|
specificationId | string | Yes | Specification to analyze |
Returns a tree structure showing all tickets, their dependencies, and current statuses. Useful for visualizing the overall shape of work and identifying bottlenecks.
Utility
feedback
Submit feedback, report issues, or suggest improvements.
| Parameter | Type | Required | Description |
|---|---|---|---|
operation | "submit" | "list" | "get" | Yes | Feedback operation |
category | string | No | Feedback category (for submit) |
summary | string | No | Feedback summary (for submit) |
severity | string | No | Issue severity (for submit) |
tool | string | No | Which tool the feedback relates to (for submit) |
See Also
- CLI Commands — CLI equivalents for common operations
- Specification States — State machine triggered by lifecycle tools
- Ticket States — Ticket states driven by work session tools