Skip to main content
Glama

delegate_to_subagents

Delegate development tasks to specialized autonomous agents for parallel or sequential execution, enabling team-based AI development workflows.

Instructions

Delegate tasks to Goose CLI subagents for autonomous development

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
taskYesThe development task to delegate to subagents
agentsYesArray of subagents to create
execution_modeNoHow to execute the subagentsparallel
working_directoryNoWorking directory for the subagents (defaults to current directory)

Implementation Reference

  • The primary handler function that implements the delegate_to_subagents tool. It parses input arguments, generates a delegation prompt, spawns Goose CLI processes for the specified subagents, tracks the session, and returns a response with session ID.
    async delegateToSubagents(args) { const { task, agents, execution_mode = 'parallel', working_directory = process.cwd() } = args; const sessionId = uuidv4(); // Ensure Goose alpha features are enabled process.env.ALPHA_FEATURES = 'true'; try { // Create the delegation prompt for Goose const delegationPrompt = this.createDelegationPrompt(task, agents, execution_mode); // Execute Goose with the delegation prompt const gooseProcess = await this.executeGoose(delegationPrompt, working_directory, sessionId); this.activeSubagents.set(sessionId, { task, agents, execution_mode, status: 'running', startTime: new Date(), process: gooseProcess }); return { content: [ { type: 'text', text: `Successfully delegated task to ${agents.length} subagents in ${execution_mode} mode.\n\nSession ID: ${sessionId}\nTask: ${task}\n\nSubagents created:\n${agents.map(agent => `- ${agent.role}: ${agent.instructions}`).join('\n')}\n\nUse get_subagent_results with session_id "${sessionId}" to retrieve results when complete.` } ] }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Failed to delegate to subagents: ${error.message}` ); } }
  • Input schema defining the parameters for the delegate_to_subagents tool, including task, agents array, execution mode, and working directory.
    inputSchema: { type: 'object', properties: { task: { type: 'string', description: 'The development task to delegate to subagents' }, agents: { type: 'array', items: { type: 'object', properties: { role: { type: 'string', description: 'Agent role (e.g., backend_developer, frontend_developer, qa_engineer)' }, instructions: { type: 'string', description: 'Specific instructions for this agent' }, recipe: { type: 'string', description: 'Optional recipe name to use for this agent' } }, required: ['role', 'instructions'] }, description: 'Array of subagents to create' }, execution_mode: { type: 'string', enum: ['parallel', 'sequential'], default: 'parallel', description: 'How to execute the subagents' }, working_directory: { type: 'string', description: 'Working directory for the subagents (defaults to current directory)' } }, required: ['task', 'agents'] }
  • src/index.js:41-86 (registration)
    Registration of the delegate_to_subagents tool in the ListTools response, including name, description, and full input schema.
    { name: 'delegate_to_subagents', description: 'Delegate tasks to Goose CLI subagents for autonomous development', inputSchema: { type: 'object', properties: { task: { type: 'string', description: 'The development task to delegate to subagents' }, agents: { type: 'array', items: { type: 'object', properties: { role: { type: 'string', description: 'Agent role (e.g., backend_developer, frontend_developer, qa_engineer)' }, instructions: { type: 'string', description: 'Specific instructions for this agent' }, recipe: { type: 'string', description: 'Optional recipe name to use for this agent' } }, required: ['role', 'instructions'] }, description: 'Array of subagents to create' }, execution_mode: { type: 'string', enum: ['parallel', 'sequential'], default: 'parallel', description: 'How to execute the subagents' }, working_directory: { type: 'string', description: 'Working directory for the subagents (defaults to current directory)' } }, required: ['task', 'agents'] } },
  • src/index.js:144-169 (registration)
    Tool call request handler registration with switch case dispatching 'delegate_to_subagents' to its handler function.
    this.server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; try { switch (name) { case 'delegate_to_subagents': return await this.delegateToSubagents(args); case 'create_goose_recipe': return await this.createGooseRecipe(args); case 'list_active_subagents': return await this.listActiveSubagents(); case 'get_subagent_results': return await this.getSubagentResults(args); default: throw new McpError( ErrorCode.MethodNotFound, `Unknown tool: ${name}` ); } } catch (error) { throw new McpError( ErrorCode.InternalError, `Error executing ${name}: ${error.message}` ); } });
  • Helper function that generates the prompt sent to Goose CLI for delegating the task to specified subagents.
    createDelegationPrompt(task, agents, execution_mode) { const agentDescriptions = agents.map(agent => { let description = `${agent.role} with instructions: "${agent.instructions}"`; if (agent.recipe) { description += ` using recipe "${agent.recipe}"`; } return description; }).join(', '); const executionPhrase = execution_mode === 'parallel' ? 'in parallel simultaneously' : 'sequentially one after another'; return `Use ${agents.length} subagents working ${executionPhrase} to complete this task: "${task}". Create these specialized subagents: ${agentDescriptions}. Each subagent should work independently on their assigned part of the task. Provide a comprehensive summary of all results when complete.`; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pc-style/goose-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server