math-anchor
This server provides a safe, typed mathematical computation runtime for agents, exposing four MCP tools for exact and approximate math operations.
Run one mathematical operation via
math.runwith a stable operation ID and typed arguments.Execute 1–32 independent operations in order via
math.batch.Search for operations by query or category via
math.search.Retrieve exact schemas and examples for unfamiliar operations via
math.describe.Supported operations include expression evaluation/simplification, algebra, calculus, numerical methods, integer arithmetic and bitwise operations, machine arithmetic, IEEE-754 inspection, combinatorics, matrices and linear algebra, statistics, probability, measurement uncertainty propagation, units and quantities, dimensional analysis, and finance.
Results can be exact, approximate, or both, with configurable precision, timeouts, memory budgets, and output byte limits.
Includes symbolic dimensional analysis, unit conversion, polynomial identity certificates, and risk-controlled execution with clear error phases and retry guidance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@math-anchorWhat is the integral of x^2 from 0 to 1?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Math Anchor
Math Anchor anchors finite mathematical claims to executable, replayable, scope-limited checks.
Math Anchor is one product with two quiet entry points:
a native macOS calculator for people, with familiar basic/scientific input, lightweight offline physical-unit conversion, ECB reference currency conversion with visible source and freshness, a read-only calculator display, optional exact-value copy, and local history;
an embeddable mathematical obligation and scientific runtime for Agents and harnesses, with failures-only feedback for claim checks plus one-call execution for known operations through a Codex-host-safe
math.runenvelope.
Both surfaces use the same Python calculation core. The Agent-facing strategic layer is the versioned obligation/receipt contract: it hash-binds shared assumptions, runs a bounded dependency graph, distinguishes checked, falsified, unknown, and unsupported, records assurance and exact claim scope, and can remain completely silent when every check succeeds. The existing catalog remains a compatibility and provider surface with 46 typed operations spanning exact and high-precision arithmetic, explicit machine and rounding semantics, symbolic verification, certificates, local geometric checks, numerical methods, linear algebra, statistics, finance, units, and dimensions. Operation count is not the product's progress metric. The project reuses SymPy, NumPy, mpmath, and Pint for mathematics; its own work is the safe parser, bounded contracts, isolation boundary, receipt semantics, human app, and Agent-facing integration.
Currency conversion is an online, human-app feature calculated from the European Central Bank's daily euro reference rates. The interface shows the source, publication time, and current or expired state; cached rates remain explicitly marked when a refresh cannot complete. These rates are informational and are not transaction quotes. Currency conversion remains an app-internal request and does not add another public MCP tool or Agent operation.
Unreleased source capabilities
Added the provider-native
math-anchor.obligation-set.v0.1library/CLI contract for bounded obligation DAGs, shared assumption digests, explicit assurance and scope, full replayable receipts, defaultfailures_onlyfeedback, and silent-success harness checkpoints. It composes existing providers without adding a fifth MCP tool.geometry.almost_complex.local_checkaccepts an explicit even-dimensional coordinate order and rational-polynomial component matrix, checksJ^2 = -Iand the independent coordinate-basis Nijenhuis components, and returns one exact counterexample component when either condition fails. Its result explicitly leaves chart coverage, overlap compatibility, global extension, and global existence unchecked.Multi-concept
math.searchqueries no longer advertise an operation from one generic word collision. Zero-match responses returnmatchStatus: no_registered_operationso callers can stop instead of treating a lexical near-match as domain support.Fixed-width integer representation and bitwise operations expose binary, octal, decimal, hexadecimal, character, overflow, wrap, and discarded-bit semantics explicitly.
Machine arithmetic makes checked, wrapping, and saturating overflow plus truncating, floor, and Euclidean division explicit. Bit-field extraction, insertion, zero/population counts, reversal, and alignment stay width-bound.
IEEE-754 binary32/binary64 inspection exposes raw fields, classification, exact represented value, ULP, adjacent values, signed zero, and bit-versus- numeric equality without presenting a binary approximation as exact input.
Decimal quantization supports named tie and directed-rounding modes, while integer division distinguishes truncating, floor, and Euclidean quotients.
units.searchprovides 89 stable unit IDs. Data quantity/rate, frequency, force, acceleration, torque, and density also appear in the human conversion picker. Calendar months and years require an explicit average-duration policy and are never presented as civil date arithmetic.Exact vector/matrix algebra is separate from binary64 least squares, QR, SVD, and pseudoinverse operations with rank, condition, and residual diagnostics.
calculus.multivariatenow adds unnormalized directional derivatives, divergence, curl, and the Laplacian without adding another public operation.matrix.reduceadds exact eigenspaces with diagonalizability plus LU and Cholesky decompositions while continuing to reject approximate structural claims.Probability and inference add Beta, Gamma, lognormal, paired/two-sample t, and chi-square methods.
measurement.propagateadds first-order covariance propagation with positive-semidefinite correlation validation.Agent execution now has bounded admission, a 4 GiB weighted request-memory budget, a reserved interactive lane during batches, safe duplicate batch coalescing, real sibling cancellation, adaptive worker recycling/prewarming, a provider circuit breaker, and stable retry guidance. Every always-listed input schema remains below the current Codex host's lossy-compaction boundary, and the complete four-tool listing remains below a 10,000-byte regression.
Every successful Agent result now carries a runtime-owned assurance level, assurance contract version, claim scope, assumptions, selected operation path and backend versions, and explicit certificate/kernel-check state.
certificate.polynomial_identityemits a bounded rational-polynomial artifact that the separate standard-library checker can recompute without SymPy. An optional pinned Lean bridge can then check a generated rational theorem without entering the normal runtime or MCP surface.The headless runtime now builds as a verified wheel and source archive, runs in Linux CI on x86_64 and arm64, and has a digest-pinned, non-root OCI image definition. These paths do not depend on the macOS application.
Related MCP server: Math MCP Server
What's new in 0.2
dimension.checkverifies both sides of a symbolic formula plus additive and dimensionless-function constraints.dimension.infersolves exact dimensional constraints and distinguishes unique, underdetermined, and inconsistent systems.dimension.pi_groupsreturns a deterministic exact basis of Buckingham Pi dimensionless products without claiming that the basis is physically unique.The Agent runtime now reuses bounded workers, prewarms one worker during MCP startup, propagates cancellation, and applies the output byte budget to success and error envelopes.
The Codex Plugin remains one self-contained installation with four public MCP tools and 34 typed operations; no symbolic-dimensional controls were added to the human calculator.
Patch 0.2.1 makes MCP domain/input failures explicit tool-execution errors and reports the Math Anchor product version during server initialization.
See CHANGELOG.md for the source milestone details and docs/dimensional-analysis.md for the capability and claim boundaries.
Requirements
Python 3.11 or newer for the headless runtime;
macOS 14 or newer plus Xcode Command Line Tools with Swift 6 for the native app.
The repository publishes source. Downloadable macOS applications are supported only when attached to a versioned GitHub Release with a matching source tag, Developer ID signature, and Apple notarization record.
Run the macOS app
./script/bootstrap.sh
./script/build_and_run.shThe Codex app also exposes the same command as the repository's Run action.
Local debug builds use a separate application identity and calculation history,
so starting one does not terminate or reuse the history of an installed release.
Use ./script/build_and_run.sh --verify to additionally probe the runtime
embedded in the local app before confirming that exact bundle launched.
Use the local runtime
For a local Agent Host or harness, check a bounded obligation set and keep the full receipt outside the model context:
.venv/bin/math-anchor check-obligations request.json \
--receipt-output build/obligation-receipt.json \
--quiet-successAn Agent Host installation exposes the same commands through the
Host-generated scripts/math-anchor launcher inside the installed calculate
Skill. That launcher is version-locked to the component's packaged runtime; do
not replace it with an ambient command or a source-checkout path.
Exit status is 0 when every obligation is checked, 1 when the compact
feedback requires attention, and 2 for an invalid request or runtime error.
The command refuses to overwrite an existing receipt. Inspect the exact request
schema with .venv/bin/math-anchor obligation-schema request, and replay a
prior run with .venv/bin/math-anchor replay-obligations request.json build/obligation-receipt.json. See
docs/obligation-runtime.md for the supported
obligation kinds and the boundary between a local check and a wider proof.
The compatibility operation CLI remains available for direct structured calls:
.venv/bin/math-anchor search calculus
.venv/bin/math-anchor describe calculus.integrate
.venv/bin/math-anchor run expression.evaluate '{"expression":"sqrt(2)","precision":50}'Symbolic dimensional analysis uses the same run entry point:
.venv/bin/math-anchor run dimension.check \
'{"left":"F","right":"m * a","symbols":{"F":"newton","m":"kilogram","a":"meter / second^2"}}'
.venv/bin/math-anchor run dimension.infer \
'{"equations":[{"left":"F","right":"m * a"}],"known":{"F":"newton","m":"kilogram"},"unknown":["a"]}'
.venv/bin/math-anchor run dimension.pi_groups \
'{"variables":{"rho":"kilogram / meter^3","v":"meter / second","L":"meter","mu":"pascal * second"}}'Generate and independently verify a bounded rational polynomial certificate:
.venv/bin/math-anchor run certificate.polynomial_identity \
'{"left":"(x+1)^2","right":"x^2+2*x+1","variables":["x"]}' \
> build/polynomial-certificate.json
.venv/bin/math-anchor verify-certificate build/polynomial-certificate.jsonThe checker recomputes the statement and coefficients without importing SymPy or the certificate producer. A successful check establishes only the declared rational-polynomial identity classification; it is not a formal proof-kernel acceptance.
For the optional, heavyweight Lean kernel lane:
./script/check_lean_bridge.shThis records kernel_checked only after pinned Lean 4.33.1 accepts the
generated theorem. See docs/lean-bridge.md for its exact
scope and reusable CLI form.
Start the MCP server with:
.venv/bin/math-anchor-mcpAgent tool model
Math Anchor keeps a stable four-tool MCP compatibility boundary while the operation registry supplies bounded providers:
Tool | Use |
| Run one known operation from the complete stable-id enum. This is the normal one-call route. |
| Run 1 to 32 independent operations in input order. |
| Find an operation only when its stable id is not already known. |
| Retrieve the exact closed argument schema and examples for one selected unfamiliar operation. |
Exact and approximate results remain separate. Mathematical and dimensional expressions pass explicit AST allowlists rather than Python evaluation, and expensive Agent work runs behind cumulative time, memory, cancellation, and output limits.
High-frequency claim checking should use the local obligation library/CLI from the Host or harness, keep the full receipt as an artifact, and feed only actionable failures back into the model context. High-frequency compatibility callers can still keep one MCP session open and call the same four tools directly; neither route needs a model turn per calculation. See docs/agent-runtime.md for admission, retries, load measurements, and direct-host usage.
Math Anchor 0.6 supports this explicit structured route. Cold selection from a fresh natural-language Agent session is host/model-dependent integration behavior, not a guaranteed zero-configuration feature or a source-release condition.
Coding Agent adoption and conditional utility are measured through the
repo-owned paired corpus in docs/agent-evaluation.md,
including a single-Plugin installed Skill/MCP smoke kept separate from
transport conformance, ambient user configuration, and direct-host performance.
The zero-model structured route has its own cold direct-host smoke via
script/direct_host_eval.py; repeated production calls should reuse one MCP
session or use math.batch, not start one Agent turn per calculation.
The installable Codex Plugin source is in plugins/math-anchor/.
Symbolic formula checks and dimension inference are documented in docs/dimensional-analysis.md. They report dimensional consistency only and never claim that a physical law is correct.
script/package_runtime.sh builds the standalone mathematical runtime used by both the installed plugin and the macOS app bundle. The packaged app and plugin do not depend on this repository or its .venv after installation.
For a headless-only verification and distributable Python artifacts:
./script/check_headless.sh
.venv/bin/python script/build_python_dist.py build
.venv/bin/python script/build_python_dist.py verify
docker build --tag math-anchor-runtime .The resulting wheel/source archive and OCI definition are release inputs. A GitHub tag is still required before they become published release assets.
Generated runtimes are deliberately excluded from Git. Before installing the
local Plugin, run ./script/bootstrap.sh, ./script/package_runtime.sh, and
./script/check_all.sh. Then register this checkout as a local Codex
marketplace and install the Plugin from it — the openadam marketplace name
resolves against this checkout, not a public registry:
codex plugin marketplace add .
codex plugin add math-anchor@openadamStart a fresh Codex task after installation. The four MCP tools and the
calculation Skill must become visible together. The desktop app's local Plugin
installation flow may also select plugins/math-anchor/ directly.
Bootstrap accepts any available Python 3.11 or newer interpreter. Set MATH_ANCHOR_PYTHON only when selecting a specific interpreter. The Swift scripts select an installed SDK compatible with the active compiler; MATH_ANCHOR_SDKROOT is available as an explicit override.
Verify
./script/check_all.shThis runs Python regression tests, Swift package and state tests/build, the
four-tool MCP discovery and execution flow, and plugin validation. Use
./script/swift_test.sh for the focused MathAnchorCore SwiftPM suite; it
supplies the framework lookup needed by some Command Line Tools installations.
Human visual acceptance remains separate from those development checks.
For a GitHub-generated ZIP or tarball without .git metadata, run
./script/check_source_layout.sh --archive-clean once immediately after
extraction and before the first check_all.sh; subsequent development checks
are intentionally repeatable after the runtime has been generated.
Publishing
Publish source from a clean checkout or an unmodified GitHub-generated source
archive; do not force-add
plugins/math-anchor/runtime/, .build/, or dist/. Runtime dependencies are
exactly pinned and SHA-256 verified in requirements-runtime.lock, including
dependencies activated through package extras. Bootstrap installs the complete
development lock with pip's --require-hashes. Each generated runtime includes artifact-derived
THIRD_PARTY_NOTICES.txt, an SPDX SBOM covering bundled Python distributions,
the PyInstaller bootloader, and every standalone native library, plus an
architecture/file manifest. An unmapped native library or unpinned bundled
distribution fails packaging.
Current local .app bundles are development artifacts, not downloadable
releases. Developer ID signing and Apple notarization are mandatory gates in
script/release_macos.sh; tagged releases build both macOS architectures and
publish detached checksums plus SPDX SBOMs through the pinned GitHub workflow.
See docs/releasing.md for the
source, Plugin, CI, per-architecture, and signed binary workflow.
Contributing and security
See CONTRIBUTING.md for setup, change boundaries, and pull request expectations, and CODE_OF_CONDUCT.md for community standards. Report vulnerabilities through GitHub private vulnerability reporting as described in SECURITY.md, never in a public issue.
Available Tools
4 toolsmath.batchRun mathematical operations in a batchARead-onlyIdempotent
Run 1 to 32 independent operations in order with per-item limits.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| timeoutMs | No | Cumulative deadline for the complete batch, including queued items. | |
| maxOutputBytes | No | Strict UTF-8 byte budget for the complete ordered batch result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds genuinely useful behavioral context beyond that: operations are independent, executed in order, and subject to per-item limits. It does not describe partial-failure behavior, but that gap is mitigated by the output schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence contains only high-signal details: count range, independence, ordering, and per-item limits. There is no fluff or repetition of schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Together with a detailed input schema, an output schema, and read-only/idempotent annotations, the description is nearly complete for selecting and invoking the tool. The main omissions are explicit routing to math.run for single operations and any note about how item failures affect the batch, but neither blocks correct basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% and the schema carries detailed descriptions for timeoutMs, maxOutputBytes, and resultMode. The description contributes only the general notion of per-item limits and the 1-32 item count, which mostly restates schema constraints. This matches the high-coverage baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Run'), a clear resource ('1 to 32 independent operations'), and an ordering constraint ('in order'), so an agent can tell it is a batch-execution tool. It does not explicitly name math.run or another sibling to differentiate, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'independent operations' and the 1-32 range imply this tool is for multiple independent computations, while the sibling math.run suggests single-operation use. However, the description never explicitly says when to prefer this over math.run or warns against dependent operations, leaving the guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
math.describeDescribe a mathematical operationARead-onlyIdempotent
Get schema and argument examples only for one unfamiliar operation selected by math.search. Do not call this for known integer.machine_arithmetic or combinatorics.count shapes. Examples are arguments objects; nest one under math.run.arguments and pass its id as math.run.operation.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Selected operation whose exact closed input schema and examples are needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral context beyond that: it clarifies the tool returns only schema and example arguments, does not execute operations, and that the returned examples are argument objects intended for later use with math.run. This complements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The first sentence states the core purpose and its read-only nature, the second gives an exclusion condition, and the third explains how to consume the output. Each sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with a rich enum, full schema coverage, output schema, and comprehensive annotations, this description is complete. It covers what the tool returns, how to select the parameter, when not to use it, and how to feed the result into math.run. Nothing essential is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes the 'operation' parameter with a full enum and a clear meaning. The description adds contextual usage guidance—that the operation should come from math.search and be unfamiliar—but does not significantly expand the parameter's semantic definition. A baseline of 3 is appropriate when the schema carries the weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get schema and argument examples only for one unfamiliar operation selected by math.search.' It clearly distinguishes this from the sibling math.search and math.run, and even names specific operations it should not be used for, making the tool's scope immediately identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool ('for one unfamiliar operation selected by math.search'), when not to use it ('Do not call this for known integer.machine_arithmetic or combinatorics.count shapes'), and how to use its output ('nest one under math.run.arguments and pass its id as math.run.operation'). This is direct, actionable guidance that leaves little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
math.runRun a mathematical operationARead-onlyIdempotent
Use for exact or reliability-sensitive mathematics, especially fixed-width overflow and bits, IEEE-754, named rounding or division conventions, large integers, matrices, units and dimensions, uncertainty, probability, numerical methods, or finance. Do not use for trivial low-risk arithmetic. Always pass operation-specific fields inside the arguments object: {operation, arguments}; never flatten them. Known direct shapes need no describe call: integer.machine_arithmetic arguments include action, left, right, bitWidth, signedness, inputMode, and overflowBehavior; combinatorics.count arguments use action, n, and k. The typed operation keeps exact and approximate results separate; one successful ordinary call is sufficient.
| Name | Required | Description | Default |
|---|---|---|---|
| memoryMb | No | ||
| arguments | Yes | Operation-specific object. Unknown fields are rejected by the selected registry contract before execution. | |
| operation | Yes | Stable operation ID. Use math.describe once if its exact arguments are unfamiliar. | |
| timeoutMs | No | ||
| resultMode | No | Select exact, approximate, both, or an automatically compact result. | auto |
| maxOutputBytes | No | Strict UTF-8 byte budget for structured output. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | No | |
| unit | No | |
| error | No | |
| exact | No | |
| approx | No | |
| status | Yes | |
| warnings | No | |
| operation | No | |
| precision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral details beyond the annotations: unknown fields are rejected before execution, exact and approximate results are kept separate, and a single ordinary call is sufficient, which helps the agent avoid unnecessary retries or fallback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well organized: use cases first, exclusions second, mandatory calling convention third, and high-value examples last. Every sentence earns its place, and the most important structural instruction is front-loaded rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 44 operations, nested argument objects, and an output schema, the description is strong: it covers selection criteria, invocation shape, when to call describe, and exact/approximate result behavior. It could say slightly more about how math.run relates to math.batch and math.search, and 'one successful ordinary call is sufficient' is a bit ambiguous, but overall it is complete enough for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the description needs to add some value, and it does. It explains the critical arguments-object contract ('{operation, arguments}; never flatten'), warns that unknown fields are rejected, and gives concrete argument shapes for integer.machine_arithmetic and combinatorics.count. It does not enumerate every operation's parameters, but it appropriately defers to math.describe for unfamiliar shapes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: run a mathematical operation, with a clearly scoped purpose ('exact or reliability-sensitive mathematics'). It names the domains it covers, explicitly excludes trivial low-risk arithmetic, and distinguishes itself from math.describe by noting which operations need no describe call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('Use for exact or reliability-sensitive mathematics...'), when-not-to-use guidance ('Do not use for trivial low-risk arithmetic'), and directs the agent to math.describe when operation arguments are unfamiliar. It also gives a concrete structural rule for passing arguments that prevents a common invocation error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
math.searchSearch mathematical operationsARead-onlyIdempotent
Search operations only when the id is unknown; otherwise use math.run.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description doesn't need to repeat those. It adds the routing rule but no additional behavioral detail like result scope or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one focused sentence with no filler, and the most important routing rule is front-loaded. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, rich annotations, and existing output schema, the description covers tool selection well. However, the complete absence of parameter guidance leaves a clear gap for an agent constructing a query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain query or category semantics, syntax, or expected values. The parameter names provide some meaning, but the description fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the action ('Search') and resource ('operations'), and the clause 'only when the id is unknown' distinguishes this tool from math.run. It is specific and non-tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition for use—only when the id is unknown—and directly names the alternative, math.run, for the known-id case. This is clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.4.0- First observed
math.batch - First observed
math.describe - First observed
math.run - First observed
math.search
TDQS
Each tool has a clearly distinct role: run executes a single operation, search finds operation IDs, describe returns schemas, and batch executes multiple operations. There is no meaningful overlap between them.
All tool names follow the same math.<verb> convention with lowercase identifiers. The names are short, predictable, and consistent with each other.
Four tools is well-scoped for this server: a single execution tool covering many operations, plus search, describe, and batching support. Each tool earns its place without redundancy.
The surface covers the full workflow of discovering an operation, understanding its schema, executing it, and batching multiple operations. Since math operations are stateless, no update or delete lifecycle is needed.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Math.js MCP — wraps the mathjs.org API (free, no auth)
Hosted MCP runtime where the agent is the operator: sign up by tool call, publish your own tools.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Scientific compute for AI agents: symbolic, numerical, quantum, chemistry, ODE. Paid via x402.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides a comprehensive set of mathematical functions as MCP tools, enabling language models to perform calculations including arithmetic, trigonometry, logarithms, and more.231MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that exposes 8 mathematical tools (arithmetic, algebra, calculus, matrix operations, statistics, probability, unit conversions) to any MCP-compatible AI agent, enabling mathematical computations without code.841MIT
- AlicenseAqualityBmaintenanceEnables advanced mathematics operations including linear algebra, vector math, symbolic computation, and calculus through MCP tools. Designed for use with Claude and other MCP-compatible LLMs.192MIT
- FlicenseNot gradedqualityCmaintenanceA runtime for inspectable agent workflows that provides MCP tools, bounded Python execution, session memory, and deterministic evaluation.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/tetracoralla/math-anchor'
If you have feedback or need assistance with the MCP directory API, please join our Discord server