Skip to main content
The 3ngram MCP server exposes the following plans tools. Every entry is generated from the tool’s source signature and docstring, so this page never drifts from the backend.
Required parameters are marked with the required attribute. Optional parameters show their default value.

add_plan_item

Add Plan Item · writes · non-destructive · non-idempotent · closed-world Append an item to a plan you own (owner-only). Returns: str Source: backend/src/engram/mcp/tools/plans.py

Parameters

plan_id
str
required
UUID of the plan.
source_kind
str
required
memory (requires memory_id), gh_issue (requires gh_issue_url), or freeform.
memory_id
int | None
default:"None"
3ngram memory id when source_kind='memory'.
gh_issue_url
str | None
default:"None"
GitHub issue URL when source_kind='gh_issue'.
source_title
str | None
default:"None"
Display title (recommended for freeform/gh items).
source_url
str | None
default:"None"
Optional canonical URL for the item source.
source_status
str | None
default:"None"
Optional upstream status snapshot (e.g. open).
tier
str | None
default:"None"
Priority tier — critical, high, or steady.
status
str
default:"'open'"
Item status — open (default), in_progress, waiting, done, or dropped.
notes_md
str | None
default:"None"
Optional markdown notes.

add_plan_module

Add Plan Module · writes · non-destructive · non-idempotent · closed-world Append a render module to a plan you own (owner-only). Returns: str Source: backend/src/engram/mcp/tools/plans.py

Parameters

plan_id
str
required
UUID of the plan.
kind
str
required
Module kind — one of lede, status_snapshot, flow_diagram, decision_matrix, checklist, acceptance, dependencies, out_of_scope, references.
payload_json
str
default:"'{}'"
JSON-object string with the module payload (defaults to {}). The shape is module-specific and rendered by the frontend.

create_plan

Create Plan · writes · non-destructive · non-idempotent · closed-world Create a new plan artifact owned by the caller (draft by default). Returns: str Source: backend/src/engram/mcp/tools/plans.py

Parameters

title
str
required
Plan title (1-200 characters).
horizon
str | None
default:"None"
Optional horizon label (free text, max 64 chars) — e.g. today, week, quarter, release.
status
str
default:"'draft'"
Lifecycle status — draft (default), active, or archived.

get_plan

Get Plan · read-only · non-destructive · idempotent · closed-world Fetch a plan plus its items, modules, and shares (owner-only). Returns: str Source: backend/src/engram/mcp/tools/plans.py

Parameters

plan_id
str
required
UUID of the plan to load.

list_plans

List Plans · read-only · non-destructive · idempotent · closed-world List plans the caller owns and, optionally, plans shared to them. Returns: str Source: backend/src/engram/mcp/tools/plans.py

Parameters

status
str | None
default:"None"
Optional filter on plan lifecycle. One of draft, active, or archived. None returns every status.
include_shared
bool
default:"True"
When True (default), also include plans another user has shared with the caller. Set False to restrict the result to owner-authored plans.

update_plan

Update Plan · writes · non-destructive · idempotent · closed-world Update a plan you own (partial, owner-only). Only the fields you pass are changed. A status transition (draft / active / archived) is recorded in the audit log. Returns: str Source: backend/src/engram/mcp/tools/plans.py

Parameters

plan_id
str
required
UUID of the plan to update.
title
str | None
default:"None"
New title (1-200 characters).
horizon
str | None
default:"None"
New horizon label (max 64 chars).
status
str | None
default:"None"
New lifecycle status — draft, active, archived.