sdl.agent.orchestrate
Autonomous task execution engine that selects the optimal Iris Gate Ladder path and collects evidence. Given a task type and description, the orchestrator:- Plans a rung path (
card → skeleton → hotPath → raw) based on the task type and budget - Executes each rung in sequence, collecting evidence at each step
- Returns the full execution trace: actions taken, evidence collected, metrics, and a synthesized answer
Always provide
budget and scope with focusSymbols or focusPaths. Avoid requireDiagnostics unless needed — it can force a raw code rung.Parameters
Repository identifier.
Type of task. Determines which rung path the planner selects.
Task description or prompt.
Budget constraints for the orchestration run.
Task-specific options.
Response
Unique task identifier.
Task type executed.
Whether the task completed successfully.
Human-readable execution summary.
Synthesized answer based on collected evidence.
Suggested follow-up action.
Error message if the task failed.
The selected rung path.
Each action executed during the run.
Consolidated evidence from all actions. Each:
{type, reference, summary, timestamp}.Execution metrics:
{totalDurationMs, totalTokens, totalActions, successfulActions, failedActions, cacheHits}.Example
sdl.agent.feedback
Records which symbols were useful or missing during a task, enabling offline tuning of slice relevance. After completing a task with a slice, the agent reports which symbols were actually useful and which expected symbols were missing. This feedback is stored in the graph database and used to improve future slice quality through reinforcement-style tuning.Parameters
Repository identifier.
Ledger version the feedback applies to.
Slice handle that was used.
Symbol IDs that were useful during the task. Minimum 1.
Symbol IDs that were expected but absent from the slice.
Tags describing the task.
Type of task performed.
Task description for context.
Response
Whether the feedback was recorded.
Unique feedback record ID.
Repository identifier.
Version identifier.
Total symbols in the feedback record.
Example
sdl.agent.feedback.query
Queries stored feedback records and aggregated statistics for offline tuning pipelines. Retrieves feedback records with optional filtering by version and time range. Returns both raw feedback entries and aggregated statistics showing the most commonly useful and most commonly missing symbols.Parameters
Repository identifier.
Filter by version.
Maximum records to return. Range: 1–1,000.
ISO timestamp to filter feedback from.
Response
Repository identifier.
Each:
{feedbackId, versionId, sliceHandle, usefulSymbols, missingSymbols, taskTags, taskType, taskText, createdAt}.{totalFeedback, topUsefulSymbols: [{symbolId, count}], topMissingSymbols: [{symbolId, count}]}.Whether more records exist.
Examples
Memory Tools
SDL-MCP provides a graph-backed memory system for persisting decisions, bugfix context, and task notes across sessions. Memories are stored both in the graph database (fast querying) and as checked-in markdown files (.sdl-memory/*.md) for version control and team sharing.
Memories are automatically surfaced inside graph slices — when building a slice touching symbols with linked memories, those memories appear alongside the cards. During re-indexing, memories linked to changed symbols are flagged as stale.
sdl.memory.store
Stores or updates a development memory with optional symbol and file links. Content-addressed deduplication prevents duplicate memories — if the samerepoId + type + title + content hash already exists, the existing memory is returned.
Parameters
Repository identifier.
Memory type.
Short, scannable title. Range: 1–120 characters.
Memory content. Include the why, not just the what. Range: 1–50,000 characters.
Categorization tags. Maximum 20.
Confidence score. Use
0.9 for verified facts, 0.7 for hypotheses. Range: 0–1.Link memory to specific symbols. Maximum 100.
Link memory to specific files. Maximum 100.
Existing memory ID for upsert.
Response
Example
sdl.memory.query
Searches and filters memories by text, type, tags, or linked symbols.Parameters
Repository identifier.
Full-text search query across title and content. Maximum 1,000 characters.
Filter by memory types:
"decision", "bugfix", "task_context".Filter by tags. Maximum 20.
Filter by linked symbols. Maximum 100.
Return only stale memories (linked symbols have changed since the memory was stored).
Maximum results. Range: 1–100.
Sort order.
Response
Examples
sdl.memory.remove
Soft-deletes a memory from the graph. Optionally also removes the backing.sdl-memory/*.md file from disk.
Parameters
Repository identifier.
Memory ID to remove.
Also delete the backing markdown file from disk.
Response
Example
sdl.memory.surface
Auto-surfaces memories relevant to a set of symbols or task type. Memories are ranked byconfidence × recencyFactor × overlapFactor.
Parameters
Repository identifier.
Symbols to find related memories for. Maximum 500.
Filter by memory type:
"decision", "bugfix", or "task_context".Maximum memories to return. Range: 1–50.
Response
EachSurfacedMemory includes all memory fields plus:
score— the ranking valuematchedSymbols— which of the queried symbols matched this memory
Example
sdl.chain
Executes a chain of SDL-MCP operations in a single round-trip with budget tracking and cross-step result passing. Takes an array of steps, each calling an action from the API manual or an internal data transform. Results flow between steps via$N references (e.g., $0.symbols[0].symbolId). Includes budget tracking, context-ladder validation, cross-step ETag caching, and optional execution tracing.
Internal transforms: dataPick (project fields), dataMap (project from arrays), dataFilter (filter by clauses), dataSort (sort by field), dataTemplate (render template strings).
Parameters
Repository scope for all steps.
Chain steps. Minimum 1. Each step:
{fn: string, args?: object}. The fn field is the action name (e.g., "symbolSearch"). The args object supports $N references to previous step results.Budget constraints for the entire chain.
Error handling mode.
"stop" halts the chain on any step failure; "continue" proceeds to the next step.Enable execution tracing for debugging.
Response
Array of step results plus budget usage metrics.sdl.action.search
Searches the SDL action catalog for matching actions. Use this as the first discovery step before callingsdl.manual, sdl.chain, or direct tool surfaces.
Parameters
Search query.
Maximum results. Range: 1–25.
Include parameter schema summaries.
Include usage examples.
Response
sdl.manual
Returns the SDL-MCP API manual — a compact reference listing all available functions, their parameters, and return types. Call once per session to learn the API before usingsdl.chain.
Parameters
Filter the manual to matching actions.
Specific actions to include.
Output format.
Include full parameter schemas.
Include usage examples.
Response
sdl.info
Returns a unified runtime and environment report for SDL-MCP. Collects the same diagnostic view as the CLIsdl-mcp info command.
Parameters
None.Response
SDL-MCP package version.
{node, platform, arch}.{path, exists, loaded}.{path, consoleMirroring, fallbackUsed}.{available, activePath}.{available, sourcePath, disabledByEnv, reason}.Non-fatal environment warnings.
Actionable setup problems.
sdl.usage.stats
Returns cumulative token usage statistics and savings metrics. Tracks how many tokens SDL-MCP has saved compared to raw file reads across all tool calls.Parameters
Repository identifier. Omit for global stats.
Stats scope. Default:
"both".Whether to persist current session stats.
ISO timestamp to filter historical stats from.
Maximum historical entries to return. Range: 1–100.
Response
Token usage counters, savings estimates, compression ratios, and per-tool breakdowns. Session-scoped and/or historical aggregations depending onscope.