← Symbolic Math Tools

Connect an agent

The server speaks MCP Streamable HTTP at https://tools.aieo.se/api/mcp and serves an OpenAPI 3.1 spec at https://tools.aieo.se/api/openapi.json. No authentication. POST only — GET / DELETE return 405.

Claude Desktop

Claude Desktop supports remote MCP servers natively. Open Settings → Connectors → Add custom connector and paste the URL:

https://tools.aieo.se/api/mcp

Leave authentication empty. Save and start a new chat — the solve, simplify, integrate tools (etc.) will appear under the connector. Alternatively, edit claude_desktop_config.json:

{
  "mcpServers": {
    "symbolic-math": {
      "type": "http",
      "url": "https://tools.aieo.se/api/mcp"
    }
  }
}

Restart Claude Desktop after editing the config file.

Claude Code (CLI)

Add the server with a single command:

claude mcp add --transport http symbolic-math https://tools.aieo.se/api/mcp

Verify with claude mcp list. Tools become available in the next session — try "factor x^4 - 16".

Cursor

Open Settings → MCP → Add new MCP server, or edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "symbolic-math": {
      "url": "https://tools.aieo.se/api/mcp"
    }
  }
}

Toggle the server on in the MCP panel. The agent will call solve_system, differentiate, etc. when relevant.

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "symbolic-math": {
      "serverUrl": "https://tools.aieo.se/api/mcp"
    }
  }
}

Reload the MCP server list from Cascade's tool panel. No keys needed.

VS Code (GitHub Copilot)

With agent mode enabled, create .vscode/mcp.json at the workspace root:

{
  "servers": {
    "symbolic-math": {
      "type": "http",
      "url": "https://tools.aieo.se/api/mcp"
    }
  }
}

Open the Copilot Chat sidebar, switch to Agent, and the tools appear in the tool picker.

ChatGPT (custom connector)

On a Business / Enterprise / Edu workspace, go to Settings → Connectors → Create, choose MCP server, and enter:

Name:           Symbolic Math Tools
MCP server URL: https://tools.aieo.se/api/mcp
Authentication: None

Enable the connector in a new chat. For standard ChatGPT accounts without custom-connector support, use one of the desktop clients above or call the REST endpoints directly.

OpenAI Agents SDK (Python)

Use the hosted-MCP tool — the model calls tools over HTTP without any local proxy:

from agents import Agent, Runner, HostedMCPTool

agent = Agent(
    name="Math tutor",
    instructions="Use the symbolic math tools whenever a question involves algebra or calculus.",
    tools=[
        HostedMCPTool(
            tool_config={
                "type": "mcp",
                "server_label": "symbolic-math",
                "server_url": "https://tools.aieo.se/api/mcp",
                "require_approval": "never",
            }
        )
    ],
)

result = Runner.run_sync(agent, "Solve x^2 - 5x + 6 = 0 and factor x^4 - 16.")
print(result.final_output)

For the TypeScript SDK use hostedMcpTool with the same serverUrl. Vercel AI SDK works similarly via experimental_createMCPClient.

Raw HTTP / curl

Every tool is also a plain REST endpoint described by the OpenAPI spec at https://tools.aieo.se/api/openapi.json:

curl -X POST https://tools.aieo.se/api/v1/solve \
  -H 'Content-Type: application/json' \
  -d '{"equation":"x^2 - 5*x + 6","variable":"x"}'

Or speak MCP JSON-RPC directly (note the dual Accept header):

curl -X POST https://tools.aieo.se/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Troubleshooting

  • 406 Not Acceptable — the client must send Accept: application/json, text/event-stream. All listed clients do this automatically; only raw HTTP callers need to set it.
  • 405 Method Not Allowed — the endpoint is POST-only. GET /api/mcp intentionally returns 405.
  • Tool not visible — restart the client after adding the server; most desktop clients only re-read MCP config at startup.
  • Schema errors — every tool validates input with Zod. The error response names the offending field; check the OpenAPI spec for the exact shape.