spawn
Automate code and handler creation, testing, and execution within the Arweave Operating System using natural language, eliminating the need for manual coding.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| needsSqlite | No | ||
| tags | Yes |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"needsSqlite": {
"type": "boolean"
},
"tags": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"tags"
],
"type": "object"
}
Implementation Reference
- src/mcp.ts:59-84 (registration)Full registration of the 'spawn' MCP tool, including inline Zod schema for parameters and the async handler function that spawns an AO process using the imported 'spawn' from @permaweb/aoconnect, selecting module based on 'needsSqlite' flag.this.server.tool( "spawn", "spawn a new AO process", { tags: z.array( z.object({ name: z.string(), value: z.string(), }) ), needsSqlite: z.boolean().optional(), }, async ({ tags, needsSqlite }) => { const processId = await spawn({ module: needsSqlite ? "33d-3X8mpv6xYBlVB-eXMrPfH5Kzf6Hiwhcv0UA10sw" : "JArYBF-D8q2OmZ4Mok00sD2Y_6SYEQ7Hjx-6VZ_jl3g", signer: this.signer, scheduler: "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA", tags, }); return { content: [{ type: "text", text: processId }], }; } );
- src/mcp.ts:72-83 (handler)The core handler logic for the 'spawn' tool: calls the external 'spawn' function with process module (SQLite or standard), signer, scheduler, and tags; returns the processId as text content.const processId = await spawn({ module: needsSqlite ? "33d-3X8mpv6xYBlVB-eXMrPfH5Kzf6Hiwhcv0UA10sw" : "JArYBF-D8q2OmZ4Mok00sD2Y_6SYEQ7Hjx-6VZ_jl3g", signer: this.signer, scheduler: "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA", tags, }); return { content: [{ type: "text", text: processId }], }; }
- src/mcp.ts:62-70 (schema)Zod schema for 'spawn' tool inputs: array of name-value tags and optional boolean for SQLite needs.{ tags: z.array( z.object({ name: z.string(), value: z.string(), }) ), needsSqlite: z.boolean().optional(), },
- src/local/index.js:28-52 (registration)Duplicate registration of the 'spawn' tool in the local standalone script, identical implementation to the main server.server.tool( "spawn", { tags: z.array( z.object({ name: z.string(), value: z.string(), }) ), needsSqlite: z.boolean().optional(), }, async ({ tags, needsSqlite }) => { const processId = await spawn({ module: needsSqlite ? "33d-3X8mpv6xYBlVB-eXMrPfH5Kzf6Hiwhcv0UA10sw" : "JArYBF-D8q2OmZ4Mok00sD2Y_6SYEQ7Hjx-6VZ_jl3g", signer, scheduler: "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA", tags, }); return { content: [{ type: "text", text: processId }], }; } );