list_tracks
List all active conductor tracks with a plan.md to understand current work in progress.
Instructions
List all live conductor tracks (only tracks with a plan.md are returned). Use to understand current work in progress.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/conductor.tool.ts:57-63 (handler)MCP tool handler for 'list_tracks': registers the tool on the server, calls manager.listTracks() and returns JSON-stringified track summaries.
export function registerConductorTools(server: McpServer, manager: ConductorManager): void { server.tool('list_tracks', 'List all live conductor tracks (only tracks with a plan.md are returned). Use to understand current work in progress.', ListTracksSchema.shape, async () => { const tracks = await manager.listTracks(); return { content: [{ type: 'text' as const, text: JSON.stringify(tracks, null, 2) }], }; }); - src/tools/conductor.tool.ts:21-21 (schema)Schema for list_tracks: empty object (no input parameters).
export const ListTracksSchema = z.object({}); - src/tools/conductor.tool.ts:57-63 (registration)Registration of the 'list_tracks' MCP tool via server.tool() with name 'list_tracks'.
export function registerConductorTools(server: McpServer, manager: ConductorManager): void { server.tool('list_tracks', 'List all live conductor tracks (only tracks with a plan.md are returned). Use to understand current work in progress.', ListTracksSchema.shape, async () => { const tracks = await manager.listTracks(); return { content: [{ type: 'text' as const, text: JSON.stringify(tracks, null, 2) }], }; }); - Manager-level listTracks: delegates to FileSystemAccess.listTracks() and wraps results in TrackSummary objects.
async function listTracks(): Promise<TrackSummary[]> { const names = await fs.listTracks(tracksDir); return names.map((name) => ({ name, hasPlan: true })); } - Low-level filesystem implementation: reads tracks directory, filters to subdirectories containing plan.md.
async function listTracks(tracksDir: string): Promise<string[]> { const entries = await readdir(tracksDir, { withFileTypes: true }); const tracks: string[] = []; for (const entry of entries) { if (entry.isDirectory()) { const planPath = join(tracksDir, entry.name, 'plan.md'); if (existsSync(planPath)) { tracks.push(entry.name); } } } return tracks; }