Start a new feature and plan its tests

feature.implementGuidedStarts a multi-step job and tells your agent what to do next.

What it does

Step 2 of the loop (project.initialize → feature.implement → feature.verify → testrun.create → pdlc.verify). Creates an empty feature (a test suite of type "feature") in the connected workspace and hands back a planning prompt. It creates a new feature on every call, so check feature.list first to avoid duplicates. Returns snapshot.feature.id plus prompt: {name: "feature-spec", args}: fetch that prompt with prompts/get using those args and follow it to turn the idea into user stories and acceptance criteria. An acceptance criterion (AC) is one testable promise the feature makes, like "a guest can check out without an account". Then call userstory.create once per story (parentFeatureId = the feature id) and case.create_batch with each story's ACs (suiteId = that story's id). Next: feature.verify. With sessionId, the session moves from INTAKE (just started) to PLAN. If the session is in any other state, the feature is still created but the call returns an error that names the new feature id.

Ask your agent

You don’t call feature.implement yourself. Say something like this to Claude Code, Cursor or another MCP-connected agent:

  • “Let's build a password reset flow, plan it and write the tests first”
  • “Add a saved payment methods feature to the app”
  • “Start a new feature for guest checkout and break it into user stories”

Inputs

NameTypeDescription
title
required
stringShort feature name as a user would say it, e.g. "Password reset". Becomes the feature suite title.
description
optional
stringA sentence or two about what the feature should do. Optional; defaults to empty. The feature-spec prompt expands it into stories.
priority
optional
stringHow important the feature is: "P0" (top) to "P3" (trivial). Optional; the server defaults to "P2".
releaseId
optional
stringId of the release this feature ships in (the id from release.list or release.create). Optional.
sessionId
optional
stringOptional PDLC session id (the sessionId returned by project.initialize, or an id from pdlc.list). When given, moves the session from INTAKE to PLAN; the session must be in INTAKE.

The MCP call

What the agent’s MCP client sends (placeholders in angle brackets):

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "feature.implement",
    "arguments": {
      "title": "<title>"
    }
  }
}

Connect your agent

npx -y @testmaze/mcp init tmt_xxx
claude mcp add tm --scope project -- npx -y @testmaze/mcp

Create the token in your Test Maze workspace under Settings → MCP. Setup for Cursor, Cline, Gemini CLI and Codex CLI is shown there too.