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
| Name | Type | Description |
|---|---|---|
titlerequired | string | Short feature name as a user would say it, e.g. "Password reset". Becomes the feature suite title. |
descriptionoptional | string | A sentence or two about what the feature should do. Optional; defaults to empty. The feature-spec prompt expands it into stories. |
priorityoptional | string | How important the feature is: "P0" (top) to "P3" (trivial). Optional; the server defaults to "P2". |
releaseIdoptional | string | Id of the release this feature ships in (the id from release.list or release.create). Optional. |
sessionIdoptional | string | Optional 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.
More guided workflows tools
- Start the build-and-verify loop for this repo
project.initialize - Write out the full test cases for a feature
feature.verify - Grade a test run and say what to fix next
pdlc.verify