Skip to main content
Glama
systempromptio

SystemPrompt Coding Agent

Official
tools-and-resources.md6.28 kB
# Tools and Resources ## Overview The SystemPrompt Coding Agent implements the MCP (Model Context Protocol) specification for tools and resources, providing a structured way for AI agents to interact with the system and access information. ## Architecture ``` Tools Resources ----- --------- create_task ─────┐ agent://status update_task ─────┼──► Handler task://list end_task ─────┤ task://{id} report_task ─────┘ task://{id}/logs task://{id}/result ``` ## Tools Tools are actions that AI agents can perform to interact with the system. ### Core Tools #### 1. **create_task** Creates a new task and optionally starts an AI agent to work on it. **Parameters:** - `tool`: Tool type ("CLAUDECODE", "GEMINI", etc.) - `description`: Task description - `instructions`: Detailed instructions for the AI agent - `branch`: Optional git branch name (auto-generated if not provided) - `config`: Optional configuration for the AI agent **Example:** ```json { "tool": "CLAUDECODE", "description": "Add authentication to the app", "instructions": "Implement JWT authentication with login/logout endpoints", "branch": "feature/auth" } ``` #### 2. **update_task** Updates an existing task's status or adds log entries. **Parameters:** - `taskId`: Task identifier - `status`: New status ("in_progress", "completed", "failed") - `log`: Optional log message to append #### 3. **end_task** Ends a task and its associated AI agent session. **Parameters:** - `taskId`: Task identifier - `status`: Final status ("completed" or "failed") - `result`: Optional result data #### 4. **report_task** Generates a detailed report for a task. **Parameters:** - `taskId`: Task identifier ### Tool Handler System Tools are implemented using a handler pattern: ```typescript interface ToolHandler<T = any> { (args: T, context?: ToolHandlerContext): Promise<CallToolResult>; } interface ToolHandlerContext { userId?: string; sessionId?: string; progressToken?: string | number; } ``` ### Tool Response Format All tools return a standardized response: ```typescript interface ToolResponse<T = any> { status: "success" | "error"; message: string; result?: T; error?: { type: string; details?: any; }; } ``` ## Resources Resources provide read-only access to system state and information. ### Static Resources 1. **agent://status** - System status and capabilities - Active task count - Available tools 2. **task://list** or **agent://tasks** - List of all tasks - Task metadata (id, description, status) ### Dynamic Resources 1. **task://{taskId}** - Complete task information - Session details - Streaming output - Duration and timing - Logs and events 2. **task://{taskId}/logs** - Task log entries - Formatted as plain text 3. **task://{taskId}/result** - Task completion result - JSON formatted data ### Resource Templates The system supports URI templates for dynamic resource access: - `session://{sessionType}/{sessionId}` - Session details - `branch://{branchName}/tasks` - Tasks on a specific branch - `project://{projectPath}/status` - Project status - `log://{logType}/{date}` - Historical logs ### Resource Response Format Resources return MCP-compliant responses: ```typescript interface ResourceContent { uri: string; mimeType: string; text: string; } ``` ## Implementation Details ### Tool Registration Tools are registered in `/src/constants/tools.ts`: ```typescript export const TOOLS = [ { name: "create_task", description: "Create a new task", inputSchema: { /* JSON Schema */ } }, // ... ]; ``` ### Resource Registration Resources are registered in `/src/constants/resources.ts`: ```typescript export const RESOURCES = [ { uri: "agent://status", name: "Agent Status", mimeType: "application/json", description: "Current agent status" }, // ... ]; ``` ### Handler Implementation Tool handlers are implemented in `/src/handlers/tools/`: ```typescript export async function handleCreateTask( args: CreateTaskArgs, context?: ToolHandlerContext ): Promise<CallToolResult> { // Implementation return formatToolResponse({ status: "success", message: "Task created", result: { taskId } }); } ``` ## Usage Examples ### Creating a Task via MCP ```json { "method": "tools/call", "params": { "name": "create_task", "arguments": { "tool": "CLAUDECODE", "description": "Fix bug in auth module", "instructions": "Debug and fix the login issue" } } } ``` ### Reading a Resource via MCP ```json { "method": "resources/read", "params": { "uri": "task://12345" } } ``` ## Best Practices 1. **Tool Design** - Keep tools focused on single actions - Use descriptive parameter names - Validate inputs thoroughly - Return meaningful error messages 2. **Resource Design** - Use consistent URI patterns - Provide appropriate MIME types - Keep responses reasonably sized - Use JSON for structured data 3. **Error Handling** - Always use the standard error format - Include helpful error details - Log errors for debugging - Maintain system stability 4. **Performance** - Cache resource responses when appropriate - Implement pagination for large lists - Use streaming for real-time data - Minimize database queries ## Extending the System ### Adding a New Tool 1. Define the tool schema in `/src/constants/tool/` 2. Implement the handler in `/src/handlers/tools/` 3. Export from the tools index 4. Register in the tools constant ### Adding a New Resource 1. Add to `/src/constants/resources.ts` 2. Implement handler logic in `/src/handlers/resource-handlers.ts` 3. Add URI template if dynamic 4. Test with MCP client ## Security Considerations 1. **Input Validation**: All tool inputs are validated against JSON schemas 2. **Authorization**: Context includes user/session information for access control 3. **Rate Limiting**: Tools can be rate-limited based on context 4. **Audit Logging**: All tool calls are logged for security auditing

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/systempromptio/systemprompt-code-orchestrator'

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