Guide

Agents

Both tools over local or remote MCP and Pi and OMP and the AI SDK. What they take and what the model reads back

Same tools, every host

The MCP server, the Pi and OMP extensions and @agntn/curves/ai all call the same executors. Same arguments, same checks, same text back. This site runs them too, so every full response on it is exactly what a model reads.

ToolDoesArguments
curves_computeArithmetic on y² = x³ + ax + b over a prime you giveoperation, a, b, p, point, other, scalar, order, limit
curves_secp256k1_computePoint math on secp256k1 with SEC1 hexoperation, point, other, scalar, x, compressed

Install

shell
pi install npm:@agntn/curves
omp install @agntn/curves

Any other MCP client takes the stdio server:

json
{
  "mcpServers": {
    "curves": { "command": "npx", "args": ["-y", "@agntn/curves", "mcp"] }
  }
}

No Node at hand? claude mcp add --transport http curves https://curves.agntn.dev/mcp gets the same two tools from this site, next to its page tools. The arithmetic runs on a Cloudflare worker then, so the public points you send ride along.

What a model reads

One line of JSON, the same object the harness gets as details:

text
{"operation":"log","order":"19","scalar":"13"}

Why strings for numbers? JSON has no bigint, and a model would round a 77 digit integer without blinking. Integers go in as decimal or 0x hex and come out as decimal. The point at infinity comes out as "infinity".

points says how many there are and whether it stopped short:

text
{"operation":"points","total":"18","points":[{"x":"0","y":"6"},{"x":"0","y":"11"},{"x":"3","y":"1"}],"truncated":true}

What it refuses

  • An argument the operation doesn't take. count with a scalar is an error, not a shrug.
  • A point off the curve, a p that isn't prime, a singular curve.
  • Work past the limits in Orders and logs. The error names the limit.
  • On secp256k1, a sum that lands on infinity. SEC1 has no form for it.

A blank optional string counts as missing. OMP fills every field, and a model loves an empty "".

The scalar is in the transcript

curves_secp256k1_compute multiplies a point by a scalar. Multiply G by a private key and you get its public key. Fine for a puzzle. But the key is now in the chat log, so pass public tweaks or keys you'd happily burn.