eval_program
Execute LODA assembly programs to compute mathematical integer sequences from OEIS, generating specified terms with optional offset for sequence analysis.
Instructions
Evaluate a LODA program and return sequence terms.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | LODA program code | |
| o | No | Offset (optional) | |
| t | No | Number of terms |
Implementation Reference
- src/index.ts:532-550 (handler)The primary handler function for the 'eval_program' tool. It validates the input arguments, calls the LODA API client to evaluate the program, formats the result or error, and returns it in the MCP response format.private async handleEvalProgram(args: { code: string; t?: number; o?: number }) { const { code, t, o } = args; if (!code || typeof code !== 'string') { throw new McpError(ErrorCode.InvalidParams, "code is required"); } const result = await this.apiClient.evalProgram(code, t, o); return { content: [ { type: "text", text: result.status === "success" ? `Result: ${result.terms.join(', ')}` : `Error: ${result.message}${result.terms && result.terms.length ? `\nPartial result: ${result.terms.join(', ')}` : ''}` } ], ...result }; }
- src/index.ts:285-294 (schema)Input schema definition for the 'eval_program' tool, specifying the required 'code' parameter and optional 't' (terms) and 'o' (offset) parameters with validation rules.inputSchema: { type: "object", properties: { code: { type: "string", description: "LODA program code in plain text format." }, t: { type: "number", description: "Number of terms to compute" , minimum: 1, maximum: 10000 }, o: { type: "number", description: "The starting index (offset) for evaluating the sequence program. Overrides #offset directive or defaults to 0." } }, required: ["code"], additionalProperties: false }
- src/index.ts:415-416 (registration)Switch statement case that registers and routes incoming calls to the 'eval_program' tool handler within the CallToolRequestSchema handler.case "eval_program": return this.handleEvalProgram(safeArgs as { code: string; t?: number; o?: number });
- src/index.ts:156-165 (helper)Supporting API client method in LODAApiClient that performs the actual HTTP POST request to the LODA API endpoint /programs/eval to evaluate the provided program code.async evalProgram(code: string, t?: number, o?: number): Promise<Result> { const params = new URLSearchParams(); if (t !== undefined) params.append('t', String(t)); if (o !== undefined) params.append('o', String(o)); return this.makeRequest(`/programs/eval${params.size ? '?' + params.toString() : ''}`, { method: 'POST', headers: { 'Content-Type': 'text/plain' }, body: code, }); }
- src/index.ts:282-295 (registration)Tool registration object in the ListTools response, defining the name, description, and input schema for 'eval_program'.{ name: "eval_program", description: "Evaluate a LODA program to generate the corresponding integer sequence. The request body should contain the program code in plain text format. Optionally specify the number of terms and offset.", inputSchema: { type: "object", properties: { code: { type: "string", description: "LODA program code in plain text format." }, t: { type: "number", description: "Number of terms to compute" , minimum: 1, maximum: 10000 }, o: { type: "number", description: "The starting index (offset) for evaluating the sequence program. Overrides #offset directive or defaults to 0." } }, required: ["code"], additionalProperties: false } },