vmp (Valdr Mini-Planner)
vmp actions require Sovereign. Vanguard users can use the Planner UI but not the MCP surface.The vmp tool (Valdr Mini-Planner) manages plans — the structured idea-to-tasks flow that powers the Planner UI. Plans bundle requirements and tasks into a single cohesive unit that commits atomically into Valdr.
You can draft a plan in markdown, validate it before saving, and use vmp to commit it or orchestrate planner sessions with agent assistance.
validate_markdown before commit_markdown to check a markdown plan without creating records. The structured bundle actions are available for callers that already have validated plan/spec/task objects; new docs and agent workflows should start from markdown unless they explicitly need a lower-level structured commit.Actions
list_plans, get_plan, get_plan_spec, session_create, session_draft_with_agent, session_get, write_plan, commit_bundle, commit_plan_bundle, update_meta, update_plan_meta, delete_plan, validate_markdown, commit_markdown, help
list_plans
List stored plans with task counts and completion metrics.
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
projectKey | string | No | Scope to a project |
projectId | string | No | Alternative to projectKey |
limit | number | No | 1–500 |
get_plan
Fetch a plan with its spec and tasks.
Parameters
| Field | Type | Required |
|---|---|---|
planId | string | One of |
planKey | string | One of |
get_plan_spec
Compatibility alias for get_plan. It returns the same full plan payload, including tasks.
Parameters
| Field | Type | Required |
|---|---|---|
planId | string | One of |
planKey | string | One of |
session_create
Create a planner session — the conversational workspace where a planning agent drafts a plan.
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
idea | string | Yes | The initial idea or problem statement |
templateId | string | No | Optional template to start from |
projectKey | string | No | Target project |
createdBy | string | No | Actor handle |
Example
vmp {
action: "session_create",
idea: "Add rate limiting to authentication endpoints",
projectKey: "my-api",
createdBy: "@alice"
}session_draft_with_agent
Draft a plan using a planner agent (e.g., Freya). The agent explores the codebase, drafts the plan, and populates the session.
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
sessionId | string | Yes | |
agentId | string | Yes | |
agentName | string | No | |
agentHandle | string | No | |
maxRepairAttempts | number | No | Auto-repair iterations |
mode | string | No | sync or async |
provider | string | No | |
model | string | No | |
temperature | number | No | |
launcherConfigKey | string | No | Saved provider preset |
reasoningEffort | string | No | Provider-specific reasoning effort; omit to inherit the preset/default |
session_get
Get planner session details.
Parameters
| Field | Type | Required |
|---|---|---|
sessionId | string | Yes |
write_plan
Write/upsert a plan record.
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
plan | object | Yes | The plan payload |
schemaVersion | string | Yes | Must be "1.0" |
idempotencyKey | string | Yes | |
txnId | string | Yes | Transaction ID |
projectId | string | No | Falls back to plan.projectId / plan.projectKey |
commit_bundle / commit_plan_bundle
Commit a plan, spec, and tasks as a single atomic unit. Use this only when you already have validated structured objects. commit_plan_bundle is a compatibility alias for commit_bundle.
For markdown-first planning, prefer commit_markdown instead of manually assembling JSON objects.
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
plan | object | Yes | Plan payload |
spec | object | Yes | Plan spec |
tasks | array | Yes | Task definitions |
schemaVersion | string | Yes | |
idempotencyKey | string | Yes | |
txnId | string | Yes | |
projectId / projectKey | string | No | |
plannerAgentHandle | string | No | Who drafted it |
vmpSessionId | string | No | Source session |
update_meta / update_plan_meta
Update plan metadata (title, project assignment). update_plan_meta is a compatibility alias for update_meta.
Parameters
| Field | Type | Required |
|---|---|---|
planId | string | Yes |
title | string | No |
projectKey | string | No |
delete_plan
Delete a plan and all linked tasks. Destructive.
Parameters
| Field | Type | Required |
|---|---|---|
planId | string | Yes |
validate_markdown
Check a plan document before saving it. This action accepts only markdown and does not create a plan or task record.
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
markdown | string | Yes | Full plan document |
Example
vmp {
action: "validate_markdown",
markdown: "<full plan document>"
}When the document passes validation, structured content returns valid: true, errors: [], the full parsed plan object, and a report. The report includes schemaVersion and checks; each check has an id, label, status, and optional details. Validation also checks that requirement and task IDs are unique and that each task references declared requirements.
When validation finds issues, it returns a normal result with valid: false and errors containing all detected issues. It does not return a partial plan. A report may be present when checks could be completed, but errors is authoritative. Repair the markdown using those errors and validate it again. Validation checks plan content; project existence, planner attribution, and commit idempotency are checked when you call commit_markdown.
Repair, validate, then commit
Call validate_markdown with the complete document. If it returns valid: false, use errors to repair the markdown and validate again. After it returns valid: true, pass the same markdown to commit_markdown with a registered plannerAgentHandle and a fresh idempotencyKey.
Use validation in a workflow
Map outputs.valid to $.normalized.valid and outputs.errors to $.normalized.errors. Classify the boolean for the condition as valid:${steps.validate.outputs.valid}, with outcomes valid:true and valid:false; on valid:false, use loop_back to send errors to the planner. Set a fixed pass limit so the workflow stops if the plan still needs repairs.
commit_markdown
Commit a plan from a markdown document with YAML frontmatter. This is the fastest way to persist a plan when you already have the structured content.
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
markdown | string | Yes | Full plan document |
idempotencyKey | string | Yes | |
plannerAgentHandle | string | Yes |
Supported markdown structure
---
schemaVersion: 1.0
projectKey: "my-api"
---
# Plan: Implement rate limiting
## Idea
Limit repeated authentication attempts per client IP.
## Constraints
- Preserve the existing authentication response format.
## Success
- Excess attempts receive a rate-limit response and legitimate traffic succeeds.
## Design
### Problem
Authentication endpoints currently accept repeated attempts without a limit.
### Approach
Add token-bucket middleware and integration tests for the authentication routes.
### Risks
- [R1] Shared IP addresses may hit the limit | Mitigation: make the threshold configurable.
## Requirements
- [REQ-1] Limit authentication attempts
Description: Enforce the configured per-IP threshold on login and signup.
Scenario: Excess attempts - GIVEN an exhausted bucket WHEN another request arrives THEN return a rate-limit response.
## Tasks
- [TASK-1] Implement and verify authentication rate limiting
Summary: Add middleware to login and signup with integration coverage.
Requirements: REQ-1
Acceptance:
- Requests beyond the threshold receive a rate-limit response.
- Requests within the threshold preserve existing behavior.Use # Plan: ... for the title. Include Idea, Constraints, Success, Design with Problem, Approach, and Risks subsections, Requirements, and Tasks. Requirements and tasks use bracketed IDs, and task Requirements values must reference declared requirements. Supply this complete document as markdown, with an existing project key and registered plannerAgentHandle.
Keep idempotencyKey unchanged when retrying the same commit. A new or revised plan commit needs a new key; reusing an already completed key returns its stored result.
To commit a plan saved in a file, have the agent read that file and pass its full text to commit_markdown.
help
vmp { action: "help" }help returns structured, read-only guidance for the planner MCP surface.
| Field | Contents |
|---|---|
actions | Current accepted action names, including planner sessions, validate_markdown, commit_markdown, and compatibility aliases get_plan_spec, commit_plan_bundle, and update_plan_meta |
whenToUse | Guidance for listing, fetching, drafting, validating, and committing plans, plus managing planner sessions and metadata |
examples | Representative calls for listing plans, using get_plan_spec, and validating before committing a markdown plan |
cautions | Guardrails such as idempotency keys, validating markdown before commit, and alias behavior matching canonical actions |
compatibility | Notes on accepted aliases |
Use this payload when an agent needs to discover the current VMP action surface before creating or committing plans.
Related
- Planner UI — the visual planning interface
- pm_task — tasks committed by plans live here
- pm_project — plans belong to projects