SymKit
SymKit is an MCP server providing a Mathematica-style symbolic computation engine, enabling AI agents to perform step-by-step mathematical derivations with verification, provenance tracking, and code generation โ all driven by natural language.
Symbolic Math Operations: Execute ~25 operations via a single
mathtool: differentiation, integration, limits, series expansion, ODE solving, Laplace/Fourier transforms, vector calculus (gradient, divergence, curl, Laplacian), matrix operations (determinant, inverse, eigenvalues/eigenvectors), simplification (expand, factor, trigsimp, etc.), and more.Derivation Session Management: Start, resume, pause, rollback, annotate, and complete sessions with a full immutable audit trail of every step.
Verification: Symbolically verify individual steps or entire derivation chains for mathematical correctness.
High-Level Orchestration: Use
deriveandintent_executeto map natural-language goals to tool chains, with auto-loaded formulas and derivation plans across any quantitative domain (physics, engineering, chemistry, etc.).Symbolic Assumptions: Set and inspect variable assumptions (positive, real, integer, etc.) at global, domain, session, or step level, with conflict detection.
Formula Search & Management: Search a local YAML library or external sources (Wikidata, SciPy, BioModels), retrieve detailed formula info, and add custom formulas with metadata.
Symbol Registry: Register and look up semantic meanings, units, and aliases for symbols; detect ambiguous cross-domain conflicts.
Code & Report Generation: Export verified derivations as Python functions, LaTeX documents, Markdown reports, or standalone SymPy scripts.
Tool Discovery: List tools by category and get recommendations for specific tasks.
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., "@SymKitDerive the angular frequency of a simple harmonic oscillator."
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.
SymKit
Mathematica-style symbolic computation, powered by LLMs.
๐ English | ็ฎไฝไธญๆ
What if you had Mathematica's symbolic engine, driven by natural language?
Mathematica gave us precise symbolic math. LLMs gave us natural-language reasoning. SymKit combines both.
It is an MCP server that lets AI agents perform step-by-step symbolic derivations: calculate, transform, verify, and store formulas with full provenance โ all through conversation.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ You describe the math in plain English โ
โ โ โ
โ SymKit executes, verifies, and records every step โ
โ โ โ
โ You get an exact, reusable formula with an audit trail โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโRelated MCP server: Symath-MCP
Why SymKit?
Traditional LLM | SymKit |
โ "The answer is approximately..." | โ "The exact expression is..." |
โ "Let me calculate that again" | โ Every step is recorded and verifiable |
โ "I think these units work out" | โ Dimensional analysis checks every result |
โ "Where did this formula come from?" | โ Full provenance: base formulas + derivation steps |
โ Calculation is lost in chat history | โ Stored as reusable Markdown + YAML |
What it does
SymKit is not a formula database. It is a symbolic derivation engine that creates new formulas from existing ones.
Known formulas New formula
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ F = -kx โ โ โ
โ F = ma โ โโcomposeโโโถ โ ฯ = โ(k/m) โ
โ dยฒx/dtยฒ = a โ โ (simple harmonic oscillator) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโUse it for physics, engineering, chemistry, biology, economics โ any domain where you need to combine and transform mathematical relationships.
โก Four superpowers
Capability | What it means | Tools |
Derive | Combine base formulas into new ones |
|
Control | Review, annotate, and rollback every step |
|
Verify | Check correctness symbolically and dimensionally |
|
Ship | Turn results into Python, LaTeX, Markdown, or SymPy |
|
๐ See it in action
Derive a physical law from first principles:
User: Derive the angular frequency of a simple harmonic oscillator.
SymKit:
1. Load F = -kx and F = mยทdยฒx/dtยฒ
2. Substitute โ mยทdยฒx/dtยฒ = -kx
3. Solve ODE โ x(t) = Aยทcos(ฯt + ฯ), ฯ = โ(k/m)
4. Verify by substitution: dยฒx/dtยฒ = -ฯยฒx โ
5. Store result with full derivation historyBuild a custom engineering model:
User: Find the cutoff frequency of an RC high-pass filter.
SymKit:
1. Load Q = CV and V = IR
2. Derive capacitive reactance X_c = 1/(2ฯfC)
3. Set X_c = R at cutoff
4. Solve for f โ f_c = 1 / (2ฯRC) โVerify a calculus result:
User: Calculate and verify โซ(xยฒ + 3x) dx.
โ Result: xยณ/3 + 3xยฒ/2 + C
โ Verify: d/dx(xยณ/3 + 3xยฒ/2) = xยฒ + 3x โ๐ ๏ธ 41 MCP tools, one coherent workflow
SymKit exposes 41 MCP tools across 8 categories. Everything routes through a few high-level tools while power users can drop down to individual steps.
Category | Tools | Count |
Unified Math |
| 1 |
Session Management |
| 17 |
Assumptions |
| 6 |
Formula Search |
| 4 |
Symbol Registry |
| 4 |
Code Generation |
| 4 |
Derivation & Orchestration |
| 3 |
Tool Discovery |
| 2 |
The math() tool alone covers ~25 symbolic operations โ calculus, ODEs, matrices, vector analysis, integral transforms โ and can write its result directly into a derivation session.
๐ Formula search workflow
SymKit can pull authoritative formulas from Wikidata and physical constants from SciPy, normalize LLM queries automatically, and load the chosen formula straight into a derivation session.
Recommended workflow:
1. Search
formula_search("Navier-Stokes equations", domain="fluid_dynamics")
2. Get and load
formula_get("Q201321", source="wikidata", load_into_session=True)
3. Derive
math("simplify", "...", session=True)
4. Complete
session_complete(description="Incompressible NS momentum equation")Query normalization: you can write queries naturally โ fluid_dynamics, fluid mechanics, and cfd all resolve to the same domain; NavierโStokes (en dash) and Navier-Stokes (hyphen) match the same Wikidata item.
MathML handling: Wikidata sometimes returns rendered MathML for search previews. Call formula_get on the result ID to retrieve the original LaTeX and a SymPy-ready string.
๐๏ธ You own every step
A derivation in SymKit is a chain of immutable, verifiable steps. You can:
Create โ
session_record_stepRead โ
session_get_steps,session_showAnnotate โ
session_add_noteRollback โ
session_rollbackVerify โ
session_verify_step,session_verify_session
Expressions are never edited in place. If something goes wrong, roll back to the last good state and continue. This keeps the entire derivation reproducible.
๐ Works with the MCP ecosystem
SymKit is designed to extend, not replace, your scientific computing stack. It handles derivation, verification, and provenance; raw symbolic computation and base formulas are delegated to SymPy-MCP.
When to use SymKit:
โ Deriving new formulas from existing ones
โ Building temperature/pressure/parameter-corrected models
โ Creating custom models for any quantitative domain
โ Producing verified, citable derivation results
When to use something else:
โ Looking up basic physics formulas โ use
sympy-mcpโ Fetching physical constants โ use
sympy-mcporSciPyโ Clinical scoring โ use
medical-calc-mcpโ Reading textbook formulas โ use the reference directly
๐ฆ Get started in 60 seconds
Requirements
Python 3.10+
An MCP-compatible client: Claude Desktop, Claude Code, Cherry Studio, โฆ
uv (recommended) or pip
Step 1 โ Install SymKit
Pick one of the three install paths below. Each produces a runnable
symkit-mcp command you point your MCP client at in Step 3.
Option A โ uv (recommended)
uv is a fast Python package manager. Install
SymKit as an isolated global CLI tool โ no virtualenv to manage, no clashes
with your system Python:
# 1. Install uv itself (if you don't have it yet)
# macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell):
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 2. Install SymKit as a global CLI tool
uv tool install symkit-mcp
# 3. Verify it's on your PATH
symkit-mcp --versionuv tool install places a symkit-mcp entry point on your PATH. Upgrade later
with uv tool upgrade symkit-mcp, and uninstall with uv tool uninstall symkit-mcp.
No-install alternative:
uvx symkit-mcpruns the latest published release on the fly, caching it behind the scenes. Useful for one-off runs or for the MCP client config in Step 3 โ nouv tool installrequired.
Option B โ pip
# Install
pip install symkit-mcp
# Verify
symkit-mcp --versionPrefer pipx (pipx install symkit-mcp) if
you want each CLI tool in its own isolated environment.
Option C โ From source (development or unreleased changes)
git clone https://github.com/LBurny/symkit-mcp.git
cd symkit-mcp
# Install the project + dev/test extras into a local .venv
uv sync --all-extras
# Run the server straight from the checkout โ no install step needed
uv run symkit-mcpuv run executes against the local source tree, so you can edit and re-run
immediately. Pull the latest deps after changing pyproject.toml with
uv sync.
Step 2 โ Where data lives
After install, SymKit stores runtime data in a per-user directory (resolved via
platformdirs): derived formulas and session JSONs persist under
~/.local/share/symkit/ (Linux), %LOCALAPPDATA%\symkit (Windows), or
~/Library/Application Support/symkit (macOS). Set the SYMKIT_DATA_DIR
environment variable to override this location. Seed formulas (Reynolds number,
Navier-Stokes, โฆ) ship read-only inside the package; user-added formulas via
formula_add are written to the writable overlay and override seeds by id.
Step 3 โ Connect to your client
SymKit speaks MCP over stdio, so the same server works with every MCP-compatible client. Below is the JSON config for Claude Desktop and Cherry Studio.
Claude Desktop / Cherry Studio (JSON config)
Add an mcpServers entry to your client's config file (claude_desktop_config.json
for Claude Desktop; the equivalent settings panel for Cherry Studio).
Installed via uv tool / pip / pipx (the symkit-mcp command is on PATH):
{
"mcpServers": {
"symkit": {
"command": "symkit-mcp",
"args": []
}
}
}Run on the fly without installing (uvx pulls and caches the latest release):
{
"mcpServers": {
"symkit": {
"command": "uvx",
"args": ["symkit-mcp"]
}
}
}Running from a local source checkout (no install needed):
{
"mcpServers": {
"symkit": {
"command": "uv",
"args": [
"run",
"--no-sync",
"--directory",
"<your-local-symkit-mcp-path>",
"python",
"-m",
"symkit_mcp.server"
]
}
}
}Replace <your-local-symkit-mcp-path> with the absolute path to your local
symkit-mcp clone. --no-sync skips dependency resolution on every launch;
run uv sync manually when dependencies change.
Windows PATH gotcha: if Claude Desktop fails to launch the server with a "command not found" error, the app's process PATH may not include your
Scripts/or uv tool directory. Switch thecommandto an absolute path, e.g."C:/Users/you/AppData/Local/uv/tools/symkit-mcp/Scripts/symkit-mcp.exe".
๐๏ธ Clean architecture, built to extend
symkit-mcp/
โโโ src/
โ โโโ symkit/ # Pure domain logic (no MCP dependency)
โ โ โโโ domain/ # Entities, value objects, derivation engine
โ โ โโโ application/ # Use cases
โ โ โโโ infrastructure/ # SymPy engine, adapters, persistence
โ โโโ symkit_mcp/ # MCP server layer
โ โโโ server.py
โ โโโ tools/ # 41 MCP tools
โโโ formulas/ # Seed formula library (source tree)
โโโ tests/ # 295 tests
โโโ pyproject.tomlDomain-driven design โ core logic is independent of MCP and SymPy.
Pluggable engines โ swap the symbolic engine or verifier via protocols.
File-based persistence โ formulas and sessions live in readable Markdown/YAML/JSON.
๐งช Development
# Run the full test suite
uv run pytest
# Lint and type check
uv run ruff check src/ tests/
uv run mypy src/
# Start the dev server
uv run symkit-mcp๐ Learn more
Architecture โ DDD layering and responsibilities
SymKit Design โ In-depth technical design (English)
SymKit Design (ไธญๆ) โ ไธญๆ่ฎพ่ฎกๆๆกฃ
SymKit vs SymPy-MCP โ Capability comparison
Roadmap โ What's coming next
๐ Acknowledgments
SymKit is built on the foundation of nsforge-mcp, which pioneered the neurosymbolic formula-derivation approach. The original Chinese README of nsforge-mcp can be found here.
SymKit works alongside sympy-mcp, which provides the underlying SymPy-based symbolic computation and base formula lookup that SymKit builds upon.
๐ License
Apache 2.0 โ see LICENSE.
Available Tools
41 toolsassumeB
Set symbolic assumptions (affecting subsequent math() calculations)
Assumptions are recorded in MathContext and passed to SymPy, and also written
to the current session's multi-level assumption engine (session level).
Args:
variables: Mapping from variable to properties
e.g., {"x": "positive real", "n": "integer"}
Returns:
All current assumptions
Example:
assume({"x": "positive", "t": "real"})
# Afterwards, math("simplify", "sqrt(x**2)") returns x instead of Abs(x)
| Name | Required | Description | Default |
|---|---|---|---|
| variables | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It explains that assumptions are recorded in MathContext and the session engine, affecting math() calculations. However, it omits details on idempotency, overwriting behavior, error scenarios, or required permissions.
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 well-structured with Args, Returns, and Example sections. It is reasonably concise, though it includes internal implementation details (MathContext, SymPy) that may not be essential for an AI agent.
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 complexity and the existence of an output schema, the description covers the core functionality, side effects, and return value. It lacks mention of error handling or validation, but provides sufficient context for typical 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 0%, but the description compensates with a concrete example showing the expected format (e.g., {'x': 'positive real'}). This adds meaning beyond the schema's bare type definition, though it does not enumerate all possible property values.
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 states that the tool sets symbolic assumptions affecting subsequent math() calculations. It uses a specific verb (set) and resource (assumptions), but lacks explicit differentiation from similar sibling tools like assume_for_step.
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 provides no guidance on when to use this tool versus alternatives like assume_for_step, check_assumption_conflicts, or list_assumptions. It does not specify preconditions or scenarios where the tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assume_for_stepB
๐ Set assumptions for the current derivation step only.
Args:
*args: Alternating symbol and property strings
(e.g., "x", "positive", "y", "real")
Returns:
Updated step-level assumptions and any conflicts
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It describes input format (alternating strings) and return values (updated assumptions and conflicts), but omits side effects, idempotency, error conditions, or parameter constraints. Adequate but not thorough.
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 concise with clear sections (Args, Returns) and an emoji header. However, the inconsistency with the schema detracts from its effectiveness. It is not excessively long but could be more precise.
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?
With an output schema present, return description is adequate. The parameter description is incomplete due to schema mismatch. Given the complexity of assumption management and many sibling tools, more detail on the expected string format would improve completeness.
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 0%, so description must compensate. It explains that 'args' should be alternating symbol and property strings, which adds meaning. However, there is a mismatch: description implies variadic positional arguments ('*args') while schema defines a single string property. This inconsistency may confuse an AI agent, reducing clarity.
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 tool name 'assume_for_step' and description 'Set assumptions for the current derivation step only' clearly indicate a step-scoped assumption-setting operation, distinguishing it from a global 'assume' tool. The addition of 'only' further emphasizes the scope.
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 does not mention when to use this tool versus siblings like 'assume', 'check_assumption_conflicts', or 'clear_step_assumptions'. No explicit guidance on alternatives or scenarios where this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_assumption_conflictsA
โ ๏ธ Detect conflicts across all assumption levels.
A conflict occurs when a symbol is assigned contradictory properties
(e.g., both positive and negative).
Returns:
Conflict report
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description indicates read-only query behavior but does not explicitly state it is non-destructive or discuss side effects, though output suggests a report.
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?
Extremely concise: three short sentences with a helpful emoji, no redundancy.
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 no parameters and an output schema, the description is adequate for a simple detection tool, but could mention the report format or schema reference.
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?
No parameters exist, and schema coverage is 100%; baseline for zero parameters is 4, and description adds no parameter info since none are needed.
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 states the tool detects conflicts across assumption levels, defines conflict with an example, and distinguishes from siblings like check_symbol_conflicts by targeting all levels.
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?
No explicit guidance on when to use this tool versus alternatives like check_symbol_conflicts, missing usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_symbol_conflictsA
โ ๏ธ Check for ambiguous symbols in the current session.
A conflict occurs when the same symbol name has multiple meanings
or appears in multiple domains.
Returns:
Conflict report with suggested disambiguation
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool performs a check and returns a report with disambiguation suggestions. It does not indicate any destructive side effects, and the behavior (read-only inspection) is well communicated.
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 extremely concise: three short sentences with no wasted words. It front-loads the core action with a warning emoji, defines key terms, and states the return value. Every sentence adds 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 zero parameters and the presence of an output schema, the description is largely complete. It explains the tool's purpose and output. However, it could briefly mention when in the workflow this check is relevant, but that is a minor gap.
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?
The tool has zero parameters, so by guidelines the baseline is 4. The description does not need to add parameter semantics, and it correctly omits them. The empty input schema is fully covered.
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 states the tool's purpose: checking for ambiguous symbols in the current session. It defines what a conflict is (same symbol name with multiple meanings or domains) and mentions the return type (conflict report with suggested disambiguation). This is specific and distinguishes it from sibling tools like check_assumption_conflicts and other symbol-related tools.
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 implies usage when you need to detect symbol ambiguity but does not explicitly state when to use this tool versus alternatives like check_assumption_conflicts or list_domain_symbols. There is no guidance on when not to use it or prerequisites, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_step_assumptionsA
๐งน Clear step-level assumptions.
Useful when moving to a new sub-derivation or branch.
Returns:
Operation result
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It mentions clearing assumptions but lacks details on side effects, idempotency, or session requirements. The return is vague ('Operation result').
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?
Extremely concise, two sentences plus a returns line. Front-loaded with emoji and clear action, no wasted words.
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 simple tool with no parameters and a clear purpose, the description covers most needs. It could explain the return value more, but overall complete.
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?
No parameters exist, so schema coverage is full. Description adds no param info, which is acceptable with 0 parameters. Baseline 4 applies.
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 states it clears step-level assumptions, using a specific verb and resource. It distinguishes from siblings like 'assume' and 'list_assumptions'.
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 provides a clear usage context: 'when moving to a new sub-derivation or branch.' However, it doesn't explicitly state when not to use or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deriveA
๐ High-level derivation entry point โ start a derivation from a goal.
Args:
goal: Natural-language description of what to derive
given: Base formulas or expressions to load as starting points
assumptions: List of assumptions (e.g., ["rho is positive"])
domain: Math/physics domain (e.g., "fluid_dynamics")
pattern: Derivation pattern. If None, auto-selected from goal.
target_expression: Expected final SymPy expression (optional)
auto_load: If True, load the given formulas into the session
external_sources: External formula sources to include in recommendations
(e.g., ["wikidata", "biomodels", "scipy"] or ["all"]).
Defaults to all sources; network failures are silently ignored.
Returns:
Session info + goal + derivation plan + recommended formulas + next steps
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| given | No | ||
| domain | No | general | |
| pattern | No | ||
| auto_load | No | ||
| assumptions | No | ||
| external_sources | No | ||
| target_expression | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the return values and notes that external_sources defaults to all sources and network failures are silently ignored. However, it does not disclose potential side effects (e.g., session creation), authorization needs, or the full behavioral impact beyond the listed parameters.
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 well-structured with an emoji lead-in, an Args list, and a Returns line. It is concise, with each sentence earning its place. Could be slightly more compact, but overall efficient.
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 complexity (8 parameters, 1 required) and no annotations, the description is adequate but incomplete. It explains parameters and return values, but does not cover prerequisites (e.g., session existence), error conditions, or the overall flow. The returns are summarized but could be more specific.
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?
The description provides a comprehensive list of all 8 parameters with one-line explanations, compensating for the 0% schema description coverage. Each parameter is explained in natural language, adding meaning beyond the schema types and default values.
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 states it is a high-level derivation entry point that starts a derivation from a goal. This specific verb+resource combination distinguishes it from sibling tools like session_start or formula_search, which have different purposes.
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?
No explicit guidance on when to use this tool versus alternatives. Siblings include session_start, session_set_goal, and others that could be confused, but the description does not clarify the appropriate context or provide when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formula_addA
Add or update a formula in the local library.
This lets you (and the LLM) extend the local formula collection manually.
Formulas are persisted as YAML files under ``formulas/library/<category>/``.
Args:
id: Unique identifier for the formula (e.g., "custom_drag_force").
Used as the file name and lookup key.
name: Human-readable formula name.
sympy_str: SymPy-compatible expression, e.g. "F_d == 1/2 * rho * v**2 * C_d * A".
latex: LaTeX representation, e.g. "F_d = \frac{1}{2} \rho v^2 C_d A".
variables: Mapping of symbol names to metadata, e.g.
{"rho": {"description": "density", "unit": "kg/m^3"}}.
domain: Optional domain tag (e.g., "fluid_dynamics").
category: Optional category folder name (e.g., "fluid_dynamics").
description: Optional longer description of the formula.
aliases: Optional list of alternative names.
tags: Optional list of tags.
references: Optional list of references / URLs.
library_path: Optional custom library directory. Defaults to ``formulas/library``.
Returns:
{
"success": true,
"formula_id": "custom_drag_force",
"file_path": "formulas/library/fluid_dynamics/custom_drag_force.yaml",
"message": "Formula added to local library."
}
Example:
formula_add(
id="custom_drag_force",
name="Drag force",
sympy_str="F_d == 1/2 * rho * v**2 * C_d * A",
latex="F_d = \frac{1}{2} \rho v^2 C_d A",
domain="fluid_dynamics",
category="fluid_dynamics",
description="Drag force on a body in a fluid.",
variables={
"F_d": {"description": "drag force", "unit": "N"},
"rho": {"description": "density", "unit": "kg/m^3"},
"v": {"description": "velocity", "unit": "m/s"},
"C_d": {"description": "drag coefficient"},
"A": {"description": "reference area", "unit": "m^2"}
},
aliases=["drag force", "fluid drag"],
tags=["drag", "force"],
)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | Yes | ||
| tags | No | ||
| latex | Yes | ||
| domain | No | ||
| aliases | No | ||
| category | No | ||
| sympy_str | Yes | ||
| variables | Yes | ||
| references | No | ||
| description | No | ||
| library_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that formulas are persisted as YAML files under a specific directory path, and the return value includes success indicator, formula_id, file_path, and message. It also shows an example. However, it does not explicitly state behavior on update (e.g., whether an existing id triggers overwriting) or any destructive implications, but overall it is transparent about the main effects.
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 well-structured with a clear opening, bullet-point parameter list, and example. It covers all 12 parameters without being excessively verbose. Minor redundancy between domain and category descriptions, but overall it earns its length.
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 complexity (12 parameters, nested objects, output schema), the description is remarkably complete. It explains persistence, parameter roles, return value structure, and provides a comprehensive example. The optional library_path and default behavior are covered. The presence of an output schema reduces the burden, but the description still adds value on top.
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%, so the description must compensate fully. It provides detailed explanations for every parameter: id as filename and lookup key, sympy_str with example, variables as mapping with metadata, domain/category as folder tags, etc. The description adds significant semantic meaning beyond the bare schema titles, making it easy for an agent to populate arguments correctly.
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 opens with 'Add or update a formula in the local library,' clearly stating both the action and resource. It distinguishes from sibling tools like formula_get or formula_search by emphasizing local library management and manual extension.
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 says 'This lets you (and the LLM) extend the local formula collection manually,' which provides clear context for when to use. However, it does not explicitly state when not to use this tool or mention alternative tools (e.g., formula_insert if it existed). The usage guidance is adequate but lacks exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formula_categoriesA
List available formula categories.
Get the categories currently present in the local formula library.
Args:
source: Data source
- "local": Local YAML library (default)
- "all": Local + legacy sources
- "wikidata", "biomodels", "scipy": Legacy source only
Returns:
{
"success": true,
"categories": {
"local": ["fluid_dynamics", "mechanics", "thermodynamics"],
"wikidata": [...]
}
}
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | local |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it lists categories from specified sources, returns a structured JSON with success flag and category lists. It implies a read-only operation without side effects.
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 slightly lengthy due to complete parameter and return documentation, but it is well-structured with 'Args' and 'Returns' sections. Every sentence adds value, making it efficient for its completeness.
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?
The tool has only one parameter and an output schema-like return description. The description fully covers the tool's purpose, parameters, and return structure, leaving no gaps.
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?
Despite 0% schema description coverage, the description provides extensive semantics for the 'source' parameter, explaining each allowed value ('local', 'all', 'wikidata', etc.) and their meanings, far exceeding the schema.
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 'List available formula categories' with a specific verb and resource. It clearly distinguishes from sibling tools by focusing on category listing, which is unique among many siblings.
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 explains when to use different sources via the 'source' parameter, including defaults and options. However, it does not explicitly state when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formula_getA
Get detailed formula information from the local library.
Args:
formula_id: Formula identifier (e.g., "reynolds_number")
source: Data source
- "local": Local YAML library (default, recommended)
- "wikidata", "biomodels", "scipy": Legacy sources
load_into_session: If True, load the formula into the current derivation session.
Requires an active session started with session_start().
Returns:
{
"success": true,
"formula": {
"id": "reynolds_number",
"name": "Reynolds number",
"latex": "Re = \frac{\rho v L}{\mu}",
"sympy_str": "rho * v * L / mu",
"variables": {...},
"source": "local"
},
"session_loaded": true
}
Example:
# Get a local formula
formula_get("reynolds_number")
# Get and immediately load into a derivation session
formula_get("reynolds_number", load_into_session=True)
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | local | |
| formula_id | Yes | ||
| load_into_session | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses that loading into session requires an active session started with session_start(). Return format is shown. Safe read operation implied.
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?
Well-structured with Args, Returns, and Example sections. Each sentence earns its place, though default values are redundantly restated from schema.
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?
Complete for the tool's complexity: all three parameters explained, return object detailed, and example usage provided. Output schema exists, so description complements it well.
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 has 0% description coverage, but the description fully explains each parameter: formula_id with example, source with enum values and recommendation, and load_into_session with prerequisite. Adds significant meaning beyond schema.
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 'Get detailed formula information from the local library'โa specific verb+resource. It distinguishes from sibling tools like formula_search and formula_add by focusing on retrieval and immediate session loading.
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?
Provides clear context: use to get formula details, with guidance on source options and loading into session. Lacks explicit when-not-to-use but adequate given sibling diversity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formula_searchA
Search the local formula library.
Retrieve accurate mathematical/physical formulas from the local, editable
YAML library. This is deterministic, fast, and does not require network
access.
The query and domain are normalized automatically, so you can pass
free-form text such as "NavierโStokes equations" or "fluid_dynamics".
Args:
query: Search keyword
- English name: "Reynolds number", "Arrhenius equation"
- Domain terms: "fluid dynamics", "quantum", "thermodynamics"
source: Data source
- "local": Local YAML library (default, recommended)
- "scipy": Physical constants only (no local search)
- "legacy": Search local, then Wikidata, BioModels, SciPy
- "all": Alias for "legacy" (kept for compatibility)
- "wikidata", "biomodels", "scipy": Legacy source only
domain: Restrict domain (optional)
- "mechanics", "thermodynamics", "electromagnetism"
- "fluid_dynamics", "fluid_mechanics", "quantum_mechanics"
limit: Maximum number of results to return
Returns:
{
"success": true,
"results": [...],
"total": 1,
"query": "navier-stokes equations",
"domain": "fluid",
"sources_searched": ["local"],
"next_steps": [...]
}
Example:
# Search the local library
formula_search("Reynolds number")
# Search by domain
formula_search("diffusion", domain="thermodynamics")
Correct workflow for derivation:
1. formula_search("<concept>", domain="<domain>")
2. formula_get(result["id"])
3. session_load_formula(formula["sympy_str"] or formula["latex"], ...)
4. math(..., session=True) to derive or transform
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| domain | No | ||
| source | No | local |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states that the search is 'deterministic, fast, and does not require network access' and mentions automatic normalization of queries. It doesn't mention destructive actions or auth needs, but as a read-only search tool, this is adequate.
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 long but well-organized with sections, examples, and a workflow. It front-loads the purpose and then details parameters and usage. While every sentence is valuable, some repetition in source descriptions could be trimmed.
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 complexity (4 parameters, no schema descriptions, output schema present), the description is highly complete. It includes parameter explanations, example workflows, and even a sample return format, leaving little ambiguity for the agent.
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?
With schema description coverage at 0%, the description must explain parameters. It provides extensive details for each parameter: query (with examples), source (with all valid values), domain (optional with examples), and limit (though minimal). This fully compensates for the lack of schema descriptions.
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 states 'Search the local formula library' and details the function of retrieving formulas from a YAML library. It distinguishes this tool from siblings like formula_get (which retrieves by ID) by focusing on search functionality and providing a workflow.
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 includes a 'Correct workflow for derivation' that shows when to use this tool as the first step. It also explains different source options (local, scipy, legacy) and recommends 'local' as default. It doesn't explicitly state when not to use this tool, but the workflow suggests it's for initial search, not for retrieving specific formulas already known.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_derivation_reportB
Generate a complete derivation report in Markdown.
Args:
problem: Problem description
given: Given parameters {"symbol": "value with unit"}
steps: Derivation steps
results: Final results {"symbol": "expression"}
verification: Optional verification status
Returns:
Markdown report
| Name | Required | Description | Default |
|---|---|---|---|
| given | Yes | ||
| steps | Yes | ||
| problem | Yes | ||
| results | Yes | ||
| verification | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only lists inputs and output. It does not state whether the tool modifies any state, requires a session, or how it handles invalid inputs or optional verification. This leaves the agent without important context about side effects or error 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 well-structured as a docstring with a clear one-sentence purpose, a concise Args list, and a Returns line. It front-loads the primary action and contains no unnecessary words, making it appropriately sized and easy to scan.
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?
The description covers basic inputs and output format, but given the nested object parameters and numerous sibling tools, it lacks important context: no usage guidance, no detail on the report's structure, and no mention of whether verification appears in the output. It is adequate but has clear gaps.
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?
The description adds minimal meaning beyond the schema's bare types: it names each parameter and gives brief hints, such as given and results being dictionaries mapping symbols to values. However, 'steps' is only vaguely described as 'Derivation steps' without specifying the expected structure of each step object. Since schema coverage is 0%, the description partially compensates but not fully.
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 states the tool generates a complete derivation report in Markdown. It uses a specific verb ('generate') and resource ('derivation report'), and the format is defined, which distinguishes it from sibling tools like generate_latex_derivation and generate_sympy_script.
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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing an active derivation session, or when not to use it. The word 'complete' hints at final reporting, but no direct comparison to siblings is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_latex_derivationA
Generate LaTeX documentation for a derivation.
Args:
title: Derivation title
steps: List of {"description": str, "latex": str}
final_result: Final result in LaTeX
Returns:
LaTeX document string
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | ||
| title | Yes | ||
| final_result | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It describes inputs and output but does not explicitly state whether the operation is side-effect-free, whether it validates inputs, or how it handles edge cases. While it implies a pure generation function, this is not explicitly stated.
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 a well-structured docstring with Args and Returns sections, containing no unnecessary words. It is succinct and clearly organized, making it easy for an agent to parse.
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 simple generation tool, the description covers the essential inputs and return value. It does not include examples or edge-case behavior, but the tool's purpose is straightforward and the output schema likely provides additional structure. The description is adequate given the tool's simplicity.
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%, but the description compensates by explaining each parameter: title is the derivation title, steps is a list of {description, latex} objects, and final_result is the final result in LaTeX. This adds meaningful semantic context beyond the raw schema types.
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 states the tool's function: generating LaTeX documentation for a derivation. It uses a specific verb (Generate) and resource (LaTeX documentation for a derivation), and distinguishes itself from related generation tools by specifying the output format (LaTeX). The Args and Returns sections further clarify the purpose.
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 provides no guidance on when to use this tool versus alternatives such as generate_derivation_report or generate_sympy_script. It only states what it does, without any contextual or exclusionary information to help an agent choose it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_python_functionA
Generate a Python function from VERIFIED derivation steps.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๏ธ PREREQUISITE: All expressions must be verified with SymPy-MCP first!
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Correct workflow:
1. Use SymPy-MCP to derive and verify each expression
2. Use print_latex_expression() to show results to user
3. User confirms the derivation is correct
4. Call this tool with the verified expressions
The generated code assembles the provided expressions into a Python
function; it does not perform new symbolic calculations. The expressions
must already be verified before calling this tool.
Args:
name: Function name (e.g., "calculate_seatbelt_tension")
description: Function docstring description
parameters: List of {"name": str, "type": str, "description": str}
steps: List of {"description": str, "expression": str, "result_var": str}
return_vars: Variables to return
Returns:
dict with keys ``success``, ``code`` (the generated Python function),
``function_name``, ``parameters``, and ``returns``.
Example:
generate_python_function(
name="calculate_tension",
description="Calculate seatbelt tension from collision",
parameters=[
{"name": "M1", "type": "float", "description": "Vehicle 1 mass (kg)"},
{"name": "M2", "type": "float", "description": "Vehicle 2 mass (kg)"},
{"name": "v", "type": "float", "description": "Initial velocity (m/s)"},
{"name": "m", "type": "float", "description": "Person mass (kg)"},
{"name": "k", "type": "float", "description": "Seatbelt constant (N/m)"},
],
steps=[
{"description": "Final velocity after collision",
"expression": "M1 * v / (M1 + M2)",
"result_var": "v_f"},
{"description": "Velocity change",
"expression": "v - v_f",
"result_var": "delta_v"},
{"description": "Maximum tension",
"expression": "delta_v * sqrt(m * k)",
"result_var": "T_max"},
],
return_vars=["v_f", "delta_v", "T_max"]
)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| steps | Yes | ||
| parameters | Yes | ||
| description | Yes | ||
| return_vars | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the tool assembles expressions into a function without performing calculations, and specifies the return structure. This provides sufficient behavioral context.
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 well-structured with sections, but slightly verbose; the example is helpful but could be trimmed. However, every part adds 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 complexity and lack of annotations, the description provides a complete picture: purpose, workflow, parameters, return values, and an example. It stands alone without needing supplementary info.
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 0%, but the description adds detailed parameter definitions and a full example, significantly enhancing understanding beyond the schema titles.
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 states it generates a Python function from verified derivation steps. It differentiates from siblings by emphasizing no new symbolic calculations, and the example and workflow clarify the purpose.
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?
Explicitly provides a 4-step workflow with prerequisites, warning that expressions must be verified first. It tells the agent when to call (after verification) and when not to (for new calculations, use other tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_sympy_scriptA
Generate a standalone SymPy script for a computation.
This generates a complete, runnable Python script that can be
executed independently to reproduce the derivation.
Args:
expressions: List of {"name": str, "expr": str, "description": str}
operations: List of operations to perform
{"op": "simplify|solve|diff|integrate", "input": str, ...}
Returns:
Complete Python script
Example:
generate_sympy_script(
expressions=[
{"name": "momentum", "expr": "m1*v1 + m2*v2", "description": "Total momentum"},
],
operations=[
{"op": "solve", "input": "momentum = (m1+m2)*v_f", "for": "v_f"},
]
)
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | ||
| expressions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states that the tool generates a script (not executes it), and that the script is standalone and runnable, indicating a read-only generation operation. It also lists supported operation types. It doesn't disclose potential failure modes, but for a generation tool, the core behavior is well covered.
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 well-structured with a one-line summary, detailed parameter breakdown, return description, and a clear example. Every sentence adds value, and the formatting (Args/Returns/Example) makes it easy to scan. The length is appropriate for the tool's complexity.
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 vague input schema (only arrays of objects) and no annotations, the description provides the necessary context to invoke the tool correctly, including parameter formats, allowed operations, and the return type. The example reinforces the expected usage. The description is sufficiently complete for the tool's complexity.
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 0%, so the description completely compensates by defining the structure of the 'expressions' list (name, expr, description) and the 'operations' list with supported op values (simplify, solve, diff, integrate) and 'input' field. The example further clarifies how parameters are used, adding significant meaning beyond the bare schema.
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 states it generates a standalone SymPy script for a computation, with a specific verb and resource. It explains the script is complete and runnable. However, it doesn't explicitly differentiate from sibling tools like derivation_export_for_sympy or generate_python_function, though the 'standalone' phrasing offers some distinction.
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 implies usage by describing the task (generating a script for a computation) and provides a concrete example, but it never explicitly states when to use this tool versus alternatives or any exclusions. No alternative tools are mentioned, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intent_executeA
๐ฏ Natural-language intent router โ map a request to the right tool chain.
Understands common math/derivation intents and returns the recommended
tool(s) to call. The agent can then execute the recommended tool(s) directly.
Args:
intent: Natural language request
(e.g., "derive NS equations", "simplify this", "verify derivative", "solve for x")
expression: Optional expression to operate on
variable: Optional variable for differentiation/solving
session: Whether to use session-based derivation (default True)
Returns:
intent_type, recommended tool chain, and examples
Example:
intent_execute("derive the temperature corrected elimination rate",
expression="C0 * exp(-k*t)")
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | ||
| session | No | ||
| variable | No | ||
| expression | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes return values but does not disclose side effects, mutability, or safety. Minimal behavioral disclosure beyond core functionality.
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?
Well-structured with overview, Args, Returns, and Example. Every sentence is informative and no wasted words.
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 complexity and lack of schema descriptions, the description fully covers purpose, parameters, usage, and return values with an example.
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 0%, but description provides detailed explanations for all four parameters, including examples, defaults, and optionality, adding significant value.
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?
Clear verb 'map' and 'recommend', specific resource 'tool chain', and distinguishes from sibling tools like derive and tool_recommend by being a natural-language intent router.
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?
Implies usage for natural language intents and executing recommended tools, but does not explicitly state when not to use it or differentiate from alternatives like tool_recommend.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assumptionsA
๐ List assumptions at a specific level or merged across all levels.
Args:
level: "global", "domain", "session", "step", or None for merged
Returns:
Assumptions at the requested level
| Name | Required | Description | Default |
|---|---|---|---|
| level | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes a read-only operation but does not explicitly state side effects (or lack thereof). It does not mention authorization needs, rate limits, or other behavioral traits beyond listing.
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 exceptionally concise with two sentences and a returns line. It is front-loaded with the purpose and efficiently explains the parameter and output without unnecessary detail.
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 (one optional parameter, has output schema), the description is complete. It explains what the tool does, how to use the parameter, and what is returned.
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 0%, but the description's Args section clearly explains the 'level' parameter with enumerated options ('global', 'domain', 'session', 'step', or None for merged). This adds significant meaning beyond the schema's generic anyOf definition.
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 states the action 'List assumptions' and specifies the resource ('assumptions at a specific level or merged across all levels'). It distinguishes from sibling tools like 'assume' and 'show_assumptions' by focusing on listing with level granularity.
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 implies usage when needing to list assumptions at different levels, but does not explicitly state when to use this tool over alternatives like 'show_assumptions' or 'check_assumption_conflicts'. No exclusions or when-not-to-use guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domain_symbolsB
๐ List default symbols for a given domain.
Args:
domain: Domain name
Returns:
List of symbols with meanings and units
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | general |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must reveal behavioral traits. It only states 'list default symbols' but doesn't mention whether the list is exhaustive, side effects, or auth requirements.
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 concise with a docstring format (Args, Returns). It is front-loaded and contains no unnecessary words.
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?
An output schema exists, so return values are covered. However, the description lacks usage context and parameter details. Adequate for a simple list operation but has gaps.
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%. The description adds minimal meaning: 'Domain name' for the parameter. The schema already has name and type, and a default. Little value added.
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 states the verb 'List' and resource 'default symbols for a given domain'. It distinguishes from siblings like 'lookup_symbol' and 'register_symbol'.
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?
No guidance is provided on when to use this tool versus alternatives. The description only states what it does, not the context or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_patternsA
๐ List all available derivation patterns.
Returns:
Descriptions, typical steps, and suggested operations for each pattern.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns information (descriptions, typical steps, suggested operations) but does not explicitly state behavioral traits such as read-only nature, side effects, or performance characteristics. Since the tool has no parameters and no destructive effects are implied, the description is minimally adequate but could be more transparent.
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 extremely concise, with two short sentences that immediately convey the purpose and return value. It is front-loaded with the action and resource, and every sentence adds useful information. No unnecessary words or repetition.
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 simplicity (0 parameters, output schema present), the description satisfactorily covers what the tool does and what it returns. It mentions that the output includes descriptions, typical steps, and suggested operations, which is sufficiently complete for an agent to understand the tool's functionality.
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?
The tool has zero parameters, and schema description coverage is 100% (vacuously). The description does not need to clarify parameter meanings. However, it adds value by describing the return content, which helps the agent understand what to expect. A baseline of 4 is appropriate for a parameterless tool.
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 states the tool's purpose: 'List all available derivation patterns.' It specifies the resource ('derivation patterns') and the verb ('list'), and the return value ('Descriptions, typical steps, and suggested operations') further clarifies the function. It distinguishes itself from sibling tools like 'derive' (which performs derivations) and 'list_assumptions' (which lists assumptions) by focusing on derivation patterns.
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 implies usage for obtaining a list of patterns but does not provide explicit guidance on when to use this tool versus alternatives. It lacks statements about when not to use it or which other tools might be more appropriate for specific tasks. However, given the simplicity of a listing tool, the purpose itself offers adequate context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_symbolB
๐ Look up the semantic meaning of a symbol.
Args:
name: Symbol name
domain: Optional domain to prefer
Returns:
Symbol meaning and all known definitions
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| domain | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states it is a lookup (read) operation without mentioning side effects, permissions, rate limits, or error handling. Minimal disclosure.
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 short and structured with Args and Returns sections. However, the Returns section is redundant given the output schema. Could be more efficient but not overly verbose.
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 it's a simple lookup with 2 parameters and an output schema, the description covers basic purpose but lacks details on domain parameter behavior, error cases, and behavior if symbol is not found. Adequate but incomplete.
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?
With 0% schema description coverage, the description should add meaning beyond parameter names. It merely lists name and domain without explaining valid values, format, or how domain affects results. Lacks examples or clarification.
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 states it looks up the semantic meaning of a symbol, with a specific verb and resource. It distinguishes itself from sibling tools like register_symbol (create) and check_symbol_conflicts (check for conflicts).
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 implies usage for retrieving symbol meaning but provides no explicit guidance on when to use this tool versus alternatives like check_symbol_conflicts or list_domain_symbols. No when-not-to-use or alternative mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mathA
Run mathematical operations (unified Mathematica-style tool)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
SymKit's core tool โ supports ~25 mathematical operations.
One tool handles derivation, calculation, solving, and transformation.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
**Supported operations (operation):**
| Category | Operation | Description |
|------|------|------|
| Parse | `parse` | Parse expression and extract symbols |
| Simplify | `simplify` | General simplification |
| | `expand` | Expand polynomial |
| | `factor` | Factorization |
| | `collect` | Collect like terms (requires variable) |
| | `cancel` | Cancel rational function |
| | `apart` | Partial fraction expansion (requires variable) |
| | `together` | Combine over common denominator |
| | `trigsimp` | Trigonometric simplification |
| | `powsimp` | Power simplification |
| | `radsimp` | Radical simplification |
| | `combsimp` | Combinatorial simplification |
| Solve | `solve` | Solve for variable (requires variable) |
| Substitute | `substitute` | Substitute variables (requires substitution dict) |
| Calculus | `diff` | Differentiate (requires variable; order optional) |
| | `integrate` | Integrate (variable, lower/upper optional) |
| | `limit` | Limit (variable, point, direction) |
| | `series` | Series expansion (variable, point, order) |
| ODE | `dsolve` | Solve ODE (variable=function name, with_respect_to=independent variable) |
| Vector | `gradient` | Gradient (variable="x,y,z" comma-separated coordinates) |
| | `divergence` | Divergence |
| | `curl` | Curl |
| | `laplacian` | Laplacian |
| Matrix | `det` | Determinant |
| | `inv` | Inverse matrix |
| | `eigenvals` | Eigenvalues |
| | `eigenvects` | Eigenvectors |
| Transform | `laplace` | Laplace transform (variable=time, with_respect_to=s) |
| | `ilaplace` | Inverse Laplace transform (variable=s, with_respect_to=t) |
| | `fourier` | Fourier transform |
| | `ifourier` | Inverse Fourier transform |
Args:
operation: Operation name (see table above)
expression: Mathematical expression (SymPy or LaTeX format)
variable: Differentiation/integration/solving variable (for vector operations can be comma-separated like "x,y,z")
with_respect_to: Second variable (independent variable for ODE, target variable for transforms)
substitution: Substitution mapping {"var": "replacement", ...}
point: Limit point / series expansion point (default "0")
direction: Limit direction "+-", "+", "-"
order: Differentiation order / number of series terms (default 1)
lower: Definite integral lower bound
upper: Definite integral upper bound
assumptions: Symbolic assumptions ["x is positive", "t is real"]
method: Simplification method "auto", "trig", "radical", "expand_then_simplify"
session: True=record to derivation session, False=stateless computation
description: Description of this step (used when recording to session)
notes: Human insight (used when recording to session)
Returns:
Result dict containing expression, latex, operation
Examples:
# Stateless quick calculation
math("diff", "x**3", variable="x")
โ {"expression": "3*x**2", "latex": "3 x^{2}"}
# Substitute
math("substitute", "m*a", substitution={"m": "2", "a": "9.8"})
โ {"expression": "19.6", ...}
# Laplace transform
math("laplace", "exp(-k*t)", variable="t", with_respect_to="s")
โ {"expression": "1/(k + s)", ...}
# Vector calculus
math("gradient", "x**2 + y**2 + z**2", variable="x,y,z")
โ gradient in vector form
# Solve ODE
math("dsolve", "diff(y,t) - k*y", variable="y", with_respect_to="t")
| Name | Required | Description | Default |
|---|---|---|---|
| lower | No | ||
| notes | No | ||
| order | No | ||
| point | No | ||
| upper | No | ||
| method | No | auto | |
| session | No | ||
| variable | No | ||
| direction | No | +- | |
| operation | Yes | ||
| expression | Yes | ||
| assumptions | No | ||
| description | No | ||
| substitution | No | ||
| with_respect_to | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the unified nature, stateless vs. session recording (session parameter), and lists operations and parameters. It does not mention destructive behavior (likely none) or rate limits, but provides good context on behavior for a math tool.
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 long but well-structured with a summary, table of operations, parameter list, and examples. It is front-loaded and each section serves a purpose. Slightly verbose but justified due to the tool's complexity.
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?
The description is very complete: covers purpose, all operations, parameter semantics, return format (Result dict with expression, latex, operation), and examples. With an output schema existing, it goes beyond minimum. It covers edge cases like integral bounds and assumptions.
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%, so the description must compensate. It does so excellently: each parameter is explained in the Args section, and the operation table indicates which parameters are required for each operation. This adds significant meaning beyond the raw schema.
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 states the tool's purpose: 'Run mathematical operations (unified Mathematica-style tool)'. It lists ~25 operations, making it distinct from sibling tools which are about sessions, assumptions, formulas, etc. The description explicitly says it is SymKit's core tool for mathematical tasks.
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 implies usage for mathematical operations but does not explicitly guide when to use this tool versus siblings like 'derive' or other tools. It lacks statements about when not to use it or alternatives. Usage is implied by the broad scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_symbolA
๐ท๏ธ Register the semantic meaning of a symbol in the current session.
Args:
name: Symbol name (e.g., "R", "hbar", "k")
meaning: Human-readable meaning (e.g., "Universal gas constant")
domain: Domain this meaning belongs to
unit: Default physical unit
assumptions: Common assumptions (e.g., ["positive"])
aliases: Alternative names for this symbol
Returns:
Registration result
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| unit | No | ||
| domain | No | general | |
| aliases | No | ||
| meaning | Yes | ||
| assumptions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It states that registration happens in the current session and returns a result, but does not disclose whether it overwrites existing symbols, error handling, or idempotency.
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 well-structured with sections for Args and Returns, uses an emoji for visual cue, and is concise with no unnecessary words.
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?
The description covers the tool's purpose, parameters, and session context. It could mention whether duplicate registrations overwrite or error, but overall is adequate for an output schema that documents return values.
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?
With 0% schema description coverage, the description provides detailed explanations for all 6 parameters, including examples for name (e.g., 'R', 'hbar') and meaning, adding significant value over the bare schema.
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 starts with a clear verb 'Register' and resource 'semantic meaning of a symbol in the current session', distinguishing it from sibling tools like lookup_symbol or assume.
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 implies that this tool is for registering a new symbol or meaning, but does not explicitly state when to use it vs. alternatives like lookup_symbol or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_abortA
Suspend the current derivation (session is saved to disk)
Returns:
Operation result
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the session is saved to disk, but doesn't mention side effects, prerequisites, or whether the derivation can be resumed. The return value is vague ('Operation result').
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?
Very concise (two lines plus return line). Could drop the 'Returns: Operation result' line since an output schema exists, but it's not overly verbose.
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 zero-parameter tool with no annotations, the description covers the core action. However, it lacks context about resumability compared to sibling session tools. Still fairly complete.
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?
No parameters in the input schema, so schema coverage is 100%. The description adds no parameter info, but that is acceptable. Baseline 4 is appropriate.
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 states 'Suspend the current derivation' with a specific verb and resource, and adds that the session is saved to disk. This distinguishes it from siblings like session_complete (end) or session_rollback (revert).
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?
No guidance on when to use this tool versus alternatives such as session_complete, session_resume, or session_rollback. The description implies pausing, but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_add_noteB
Add a human knowledge note to the derivation (non-computational step)
Args:
note: Note content
note_type: "assumption", "limitation", "observation",
"correction", "interpretation", "application", "reference"
related_variables: Related variables
Returns:
Record result
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| note_type | No | observation | |
| related_variables | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the tool adds a note but does not explain side effects (e.g., whether it appends or overwrites), required session state, or authorization needs. The return type is vague ('Record result').
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 concise, with the purpose front-loaded in the first line, followed by a standard Args/Returns format. Every sentence adds value, though the Returns section is minimal.
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 simplicity (3 parameters, no schema descriptions), the description is moderately complete. It explains the note type options and purpose but omits context like session prerequisites or whether the note is appended to a step or the session.
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%, so the description must compensate. It lists possible values for 'note_type' and describes 'note' and 'related_variables' briefly, adding meaning beyond the schema. However, it lacks details on the format or constraints of 'related_variables'.
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?
Description clearly states the tool adds a human knowledge note to the derivation, specifying it as a non-computational step. This distinct purpose differentiates it from sibling tools, which focus on computational steps, session management, or other actions.
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?
No guidance is provided on when to use this tool versus alternatives such as 'session_record_step' or other session tools. The description does not mention prerequisites like an active session or contrast with other note-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_completeC
Complete the derivation and auto-save
Args:
description: Formula description (physical/mathematical meaning)
application_context: Usage context (when to use this formula)
assumptions: Derivation assumptions
limitations: Usage limitations
references: References
tags: Tags
auto_save: Whether to auto-save (default True)
require_target_match: If True, the derivation will only be saved as
completed when the current expression matches the goal target.
Default is False for backward compatibility, but a warning is
still returned if the target is not reached.
Returns:
Complete derivation record
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| auto_save | No | ||
| references | No | ||
| assumptions | No | ||
| description | No | ||
| limitations | No | ||
| application_context | No | ||
| require_target_match | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions auto-save behavior and the 'require_target_match' flag with warning, but does not clarify if the session ends, what gets saved, or whether further operations are allowed. The side effects of completing a derivation are not fully described.
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 structured with a concise one-line purpose followed by an Args block. However, it is somewhat lengthy for a simple completion action. It could be more front-loaded and trimmed, but the structure is clear.
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 8 parameters, no annotations, and an output schema (assumed rich), the description covers parameter purpose but lacks overall process context. It does not explain prerequisites, return value structure, or what 'completing the derivation' entails. The behavioral gaps leave the agent underinformed.
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%, so the description must compensate. It provides a brief one-line explanation for each parameter (e.g., 'Formula description (physical/mathematical meaning)'). However, these explanations are shallow and do not include constraints, formats, or examples. Some parameters are just listed by name.
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 'Complete the derivation and auto-save' which clearly indicates the tool's purpose. It lists parameters and their meanings, distinguishing it from sibling tools like session_abort or session_rollback. However, it does not explicitly differentiate itself from similar session finalization tools.
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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., a session must be active) or contrast with siblings like session_abort or session_save (which doesn't exist as sibling). Usage context is only implied by the tool's name and parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_explainA
๐ฃ๏ธ Explain the current derivation in natural language.
Generates a human-readable summary of the derivation so far, including:
- The overall goal (session name/description)
- What formulas were loaded
- What operations were performed and why
- Key assumptions and limitations recorded
- The current result
Args:
level: Detail level โ "short", "medium" (default), or "detailed"
focus: Optional aspect to focus on ("assumptions", "steps", "result")
Returns:
Natural-language summary and structured metadata
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | ||
| level | No | medium |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the tool's output (summary and structured metadata) and the aspects covered. Although no annotations exist, the description provides sufficient transparency for a read-only explanation tool. It does not mention side effects, which is appropriate as none are expected.
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 concise: a brief introduction, a list of included items, and a clear Args section. Every sentence adds value, and the structure front-loads the purpose. No unnecessary words or repetition.
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 straightforward purpose and the presence of an output schema, the description covers all necessary aspects: what it does, what information it includes, parameter details, and return type. No gaps are evident for expected usage.
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?
The schema has 0% coverage (no property descriptions), so the description carries full burden. It explains both parameters: 'level' with values 'short', 'medium', 'detailed' and 'focus' with options 'assumptions', 'steps', 'result'. This adds significant meaning beyond the schema's default and type constraints.
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 states the tool's action ('Explain the current derivation in natural language') and lists specific content covered (goal, formulas, operations, assumptions, result). It distinguishes itself from siblings like session_show and generate_derivation_report by focusing on natural-language explanation.
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 implies usage in any context where a human-readable summary of the derivation is needed. While it doesn't explicitly state when not to use or name alternatives, the purpose is clear enough for the agent to decide, especially given the context of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_get_stepsA
Return all recorded steps in the current session.
Returns:
List of steps with metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior but only states it returns steps with metadata. It doesn't mention ordering, state effects, or access requirements.
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?
Two short sentences efficiently convey the purpose without unnecessary verbosity.
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 no parameters and the existence of an output schema, the description is adequate but lacks context on the execution environment (e.g., what constitutes a session). It could mention that steps are ordered or that metadata includes timestamps.
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?
No parameters exist, so the description doesn't need to add param details. The schema coverage is 100% by default, and a baseline of 4 is appropriate.
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 states the action ('Return all recorded steps') and the scope ('in the current session'), distinguishing it from sibling tools like 'session_record_step' or 'session_explain'.
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?
No guidance on when to use this tool versus alternatives. For example, it doesn't contrast with 'session_status' or 'session_show' which might provide similar information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_listA
List all saved derivation sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits like read-only nature, output format, or ordering. It only states the basic action, leaving the agent with minimal behavioral understanding.
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?
Single sentence describing the tool's purpose with no extraneous information. Perfectly concise.
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?
The description is minimal but acceptable given the tool's simplicity (no parameters, output schema exists). However, it lacks context about how the list is presented or how it fits into the overall workflow of derivation sessions.
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?
The input schema has no parameters, so the description does not need to add parameter semantics. The zero-parameter case is handled implicitly, earning a baseline of 4.
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 states the verb 'List' and the resource 'saved derivation sessions', which is specific and distinguishes from sibling tools like session_start or session_abort that operate on individual sessions.
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?
No guidance on when to use this tool versus alternatives such as session_status or list_assumptions. The description simply states the action without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_load_formulaA
Load a formula into the current session.
Correct workflow for derivation from an external source:
1. formula_search("<concept>", domain="<domain>")
2. formula_get(result["id"], source=result["source"], load_into_session=True)
3. math(..., session=True) to derive or transform
4. session_complete(...) to finalize and save
Args:
expression: Formula or expression string (e.g. "rho * v * L / mu" or
a LaTeX string). For formulas loaded via formula_get, you can
pass formula["sympy_str"] or formula["latex"].
formula_id: Optional custom formula ID.
source: Source label (e.g. "user_input", "scipy", "wikidata").
Returns:
Load result with formula_id, expression and LaTeX.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | user_input | |
| expression | Yes | ||
| formula_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly states it loads a formula into the session and explains arguments and return values. It does not discuss side effects, permissions, or error conditions, but overall behavior is well disclosed.
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 structured with a summary, workflow, and Args/Returns sections. It is somewhat verbose but each sentence adds value. It could be slightly more concise without losing clarity.
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 role in a multi-step workflow, the description provides a workflow and expected results. However, it does not explicitly mention prerequisites like needing an active session, which is assumed.
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%, so the description must compensate. It provides clear explanations for all three parameters, including format hints and examples, adding significant meaning beyond the schema.
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 starts with a clear verb and resource: 'Load a formula into the current session.' It distinguishes from sibling tools like formula_get and formula_add by providing a workflow that contextualizes its role.
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 a numbered workflow for correct usage, explaining when to use this tool in a sequence. However, it does not explicitly state when not to use it or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_record_stepA
Manually record a derivation step (e.g. a result computed outside the tool).
The ``expression`` argument is parsed through the unified parser, which
supports SymPy strings, natural equations (``A = B``), Leibniz derivative
notation (``dX/dY``), Greek/Unicode math, and LaTeX.
Args:
expression: Result expression string (SymPy or LaTeX).
description: Human-readable step description.
operation: Ignored. Manual steps are always recorded as OperationType.CUSTOM
to prevent a user-supplied operation label (e.g. "simplify") from being
falsely reported as automatically verified.
notes: Human insight / observation.
assumptions: Step-specific assumptions.
limitations: Step-specific limitations.
Returns:
Recorded step details.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| operation | No | custom | |
| expression | Yes | ||
| assumptions | No | ||
| description | Yes | ||
| limitations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the 'operation' parameter is ignored and why, and that the expression is parsed through a unified parser. However, it lacks details on error handling or side effects.
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 well-structured with a clear docstring format, but slightly verbose. Every sentence adds value, though it could be more concise.
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 6 parameters, 2 required, and an output schema, the description covers purpose, parameter meanings, and return. It lacks error handling but is otherwise complete.
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%, so the description adds full meaning. Each parameter is described in the Args section, including the ignored behavior of 'operation' and the purpose of 'expression', 'description', 'notes', 'assumptions', and 'limitations'.
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 explicitly states this tool is for manually recording a derivation step, e.g., a result computed outside the tool. It clearly contrasts with automatic derivation tools like 'derive' among siblings.
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 implies usage for manual results not automatically derived, but does not explicitly state when not to use or compare to alternatives like 'derive' or 'intent_execute'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_resumeC
Resume a suspended derivation session
Args:
session_id: Session ID
Returns:
Session status
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It does not disclose preconditions (e.g., session must be suspended), side effects, permission requirements, or error conditions. The resume operation implies state change but is not elaborated.
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 very short (3 lines in a docstring format) and front-loaded with the purpose. However, the 'Returns' section is vague ('Session status'), which is acceptable since an output schema exists. Could be more structured for agent scanning.
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 role in session management and the existence of an output schema, the description is incomplete. It fails to mention expected session state (suspended vs active), error cases, or integration with other session tools. A user would need additional context.
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 only repeats the parameter name ('session_id') with minimal context ('Session ID'). It does not explain how to obtain a session_id, format restrictions, or the meaning of the parameter beyond the schema.
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 states the verb-resource combination 'Resume a suspended derivation session', which distinguishes it from sibling tools like session_start, session_abort, and session_status.
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?
No guidance on when to use this tool versus alternatives (e.g., session_start for new sessions, session_abort for aborting). The description implies usage but does not specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_rollbackA
Roll back to the specified step
Keep steps up to and including the specified step, and delete steps after it.
After rolling back, you can continue the derivation from that step (taking a different path).
Args:
to_step: Step number to roll back to (1-based); 0 = clear all
Returns:
Rollback result
| Name | Required | Description | Default |
|---|---|---|---|
| to_step | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses destructive behavior (deletes steps) and the ability to continue. However, it lacks warnings about irreversibility, prerequisites, or side effects on assumptions or other session state.
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 concise: a clear purpose, a behavioral explanation, and parameter documentation. Every sentence adds value with no redundancy or fluff.
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 simple tool with one parameter and an existing output schema, the description covers the main functionality and edge case (0 clears all). Minor gaps: no mention of error handling for invalid step numbers or session state requirements.
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?
Despite 0% schema description coverage, the description fully documents the single parameter 'to_step': it explains 1-based numbering and that 0 clears all. This adds essential meaning beyond the schema.
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 states the tool's purpose: rolling back to a specified step, keeping steps up to that step, deleting later steps. It distinguishes itself from sibling session tools by specifying the effect and allowing continued derivation.
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 implies usage when wanting to revert and diverge, but does not explicitly state when to use this tool over alternatives like session_abort or session_resume. No exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_set_goalA
Set a natural-language derivation goal for the current session.
Args:
goal: Natural-language goal text.
target_expression: Optional explicit target expression (e.g.
"v = sqrt(2*G*M/R)"). When provided, it overrides the
automatically-extracted target expression.
Returns:
Parsed goal and session status.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| target_expression | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It notes that target_expression overrides automatically extracted targets but does not disclose side effects like session state changes, destructive potential, or required permissions. The behavioral info is minimal.
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 concise, includes a clear Args and Returns section, and wastes no words. Every sentence adds value, and the structure is easy to scan.
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?
The description covers the tool's purpose, parameters, and return value. However, it omits prerequisites (e.g., active session) and error conditions. Given the low complexity and presence of an output schema, it is adequate but has gaps.
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?
With 0% schema description coverage, the description compensates by explaining both parameters: goal as natural-language text and target_expression as an optional explicit expression with an example. This adds meaningful context beyond parameter names.
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 states the tool sets a natural-language derivation goal for the current session, using specific verbs and resources. It distinguishes from sibling tools like session_start or session_resume by focusing on goal-setting, which is unique among siblings.
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 implies the tool is used to set a goal during a session but provides no explicit guidance on when to use it versus alternatives, nor does it mention when not to use it. The context is clear but lacks exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_showA
Show the current derivation state and formula
โ ๏ธ Must be called after each derivation operation to show the user the result!
Args:
show_steps: Whether to show all step history
Returns:
Current formula LaTeX and derivation state
| Name | Required | Description | Default |
|---|---|---|---|
| show_steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states the tool shows state and formula, and includes a warning about post-derivation usage. However, it does not mention side effects, permissions, or whether it is read-only. The description is adequate but not exhaustive.
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 highly concise: three short sentences. The first states purpose, the second is a critical usage warning, the third describes the parameter. No wasted words, and the important instruction 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?
Given the tool's simplicity (one optional boolean parameter) and the presence of an output schema, the description provides sufficient context. It specifies the tool shows current derivation state and formula, and includes a necessary usage warning. The sibling tool set is large, but the description distinguishes it adequately.
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%, so the description must add meaning beyond the input schema. It explains the 'show_steps' parameter as 'Whether to show all step history', which adds context not present in the schema's title. The explanation is clear and helpful.
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 states the tool shows the current derivation state and formula, with a specific verb and resource. Among many session-related siblings, this distinguishes it by focusing on the current state and formula, not listing steps or status.
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 states it 'Must be called after each derivation operation to show the user the result!', providing clear guidance on when to use it. It does not explicitly list alternatives or when not to use, but the imperative is strong and contextually complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_startC
Start a new derivation session
Args:
name: Derivation name
description: Derivation description
domain: Math/physics domain tag
pattern: Derivation pattern
goal: Natural-language goal (optional)
author: Author
Returns:
Session information
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| name | Yes | ||
| author | No | ||
| domain | No | general | |
| pattern | No | direct-manipulation | |
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself must disclose side effects and required context. It only states it starts a session and returns session info, but omits details like authentication needs, concurrency issues, or what happens if a session with the same name exists.
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 concise and uses a clear Args/Returns structure. However, the Returns section could be more detailed.
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 6 parameters with zero schema descriptions and a complex tool ecosystem, the description fails to provide sufficient context. It does not explain how it relates to sibling session tools or what output schema details are important.
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 merely lists parameter names without explaining their meaning, valid values, or how they affect behavior. For example, 'domain' defaults to 'general' but no clarification of allowed domains is provided.
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 states 'Start a new derivation session', specifying the verb and the resource. This distinguishes it from sibling session tools like session_list or session_resume.
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 provides no guidance on when to use this tool versus alternatives, nor does it explain prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_statusA
Get the current session status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only says 'Get' which implies no side effects, but does not explicitly state that it is read-only, safe, or requires no special permissions. The agent must infer this from the verb, which is adequate but not explicit.
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 a single, concise sentence. Every word is necessary and adds value. No wasted space.
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 has no parameters and output schema exists (though not detailed here), the description is complete enough for a simple status retrieval. It lacks only deeper behavioral context, which is minor for this straightforward tool.
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?
There are zero parameters, so the schema coverage is 100% (empty). The description does not need to add parameter details, and its brevity is appropriate. The baseline for 0 parameters is 4, and the description meets it.
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 states 'Get the current session status', specifying the verb (Get) and the resource (session status). It distinguishes from sibling tools like 'session_abort' or 'session_complete', which perform actions, by indicating a read-only observation.
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 implies that this tool is used to check the current session status, but it does not explicitly state when to use it versus alternatives like 'session_explain' or 'session_show'. No exclusions or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_suggest_formulasA
Suggest formulas that may help reach the current session goal.
Args:
top_k: Maximum number of suggestions.
Returns:
List of recommended formulas with rationale.
| Name | Required | Description | Default |
|---|---|---|---|
| top_k | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions the return type and purpose, but omits side effects, authentication needs, or prerequisites (e.g., a session goal must be set). Since this is a read-only suggestion tool, the lack of destructive behavior disclosure is acceptable, but other details are missing.
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 very concise: one main sentence, plus Args and Returns sections with clear labeling. Every part serves a purpose, and key 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?
The tool is simple with one parameter and an output schema, so the description covers the basic purpose. However, it lacks context about prerequisites (e.g., an active session with a goal) and does not describe the rationale format in the output. Additional details would improve completeness.
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?
The input schema has 0% description coverage, so the description compensates by explaining that top_k is the 'Maximum number of suggestions.' This adds basic meaning beyond the schema, but does not elaborate on the default value or valid range.
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 states that the tool suggests formulas to help achieve the current session goal, with a specific verb 'suggest' and resource 'formulas'. It distinguishes from sibling tools like formula_search (which searches by query) and session_set_goal (which sets the goal).
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 implies usage when the agent needs suggestions related to the session goal, but it does not explicitly state when to use this tool versus alternatives like formula_search or tool_recommend. No exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_verify_sessionA
Verify the entire derivation chain in the current session.
Returns:
Summary with total, verified, failed and inconclusive counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It describes the return summary (counts) but does not detail side effects, idempotency, or session requirements. Basic transparency but could be enhanced.
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?
Two concise sentences: first states purpose, second describes output. No extraneous content, front-loaded, and well-structured.
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 zero parameters and output schema present, description covers main purpose and return. Lacks note about session state requirements but is largely complete for a simple tool.
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?
No parameters exist; baseline score is 4. The description adds value by explaining the return value structure, which compensates for the lack of parameters.
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 states 'Verify the entire derivation chain in the current session' with a specific verb and resource. It distinguishes from sibling 'session_verify_step' which verifies a single step.
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?
Implies usage for full session verification but lacks explicit when-to-use, when-not, or alternatives. No mention of prerequisites or comparison with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_verify_stepA
Re-verify a single step in the current session.
Args:
step_number: 1-based step number. Defaults to -1 (last step).
Returns:
Verification result.
| Name | Required | Description | Default |
|---|---|---|---|
| step_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states 're-verify' and returns a 'verification result', but does not indicate side effects (e.g., whether it modifies state) or details about the result.
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 concise with a clear first sentence stating the main action, followed by parameter details. No superfluous text.
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 existence of an output schema, the description provides adequate context for a simple verification action. However, it could mention prerequisites (active session) and that it is typically used after step modifications.
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 0%, so the description compensates well by explaining the parameter's purpose, that it is 1-based, and the default behavior. This adds significant meaning beyond the bare schema.
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 states the verb 're-verify' and the resource 'a single step in the current session'. This distinguishes it from siblings like 'session_verify_session' which verifies the entire session.
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 explains the purpose but does not provide explicit guidance on when to use this tool versus alternatives. There are no 'when not to use' statements or references to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_assumptionsB
Show all symbolic assumptions in the current scope
Returns:
Assumptions in the current MathContext
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose behavioral details such as what constitutes 'current scope', whether the tool has side effects, or the format of the returned assumptions. The description is minimal and leaves significant uncertainty.
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 short with two sentences and no unnecessary words. However, the inclusion of a Returns section that mostly restates the first sentence is mildly redundant, preventing a perfect score.
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 has no parameters, an output schema, and is relatively simple, the description is adequate but not thorough. It does not explain key concepts like 'current scope' or assumption representation, leaving some context for agent decision-making.
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?
The tool has zero parameters and schema coverage is 100% (no params). The description adds value by stating the return object (assumptions in current MathContext), which goes beyond the empty schema. Baseline for 0 params is 4, and the description meets this baseline.
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 uses a specific verb 'Show' and resource 'symbolic assumptions' with scope 'current scope'. It clearly distinguishes from sibling tools like 'assume' (adds assumptions) and 'list_assumptions' (different listing context).
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?
No guidance on when to use this tool versus siblings like 'list_assumptions' or how assumptions are managed. The description does not provide context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_categoriesB
๐งฐ List SymKit tools organized by category.
Returns:
Categorized tool index with descriptions and examples.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects or safety. It only mentions the return format, which is partially covered by the output schema.
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 concise with two sentences, front-loading the core purpose with an emoji. It is clear but could be slightly more structured.
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 zero parameters and an output schema, the description is minimally adequate. However, it could mention that it provides a full catalog of available tools.
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?
There are no parameters, so schema coverage is 100%. The description adds no parameter info, which is acceptable as none exist.
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 states the tool lists SymKit tools organized by category, providing a specific verb and resource. It distinguishes from sibling tools like tool_recommend by specifying categorization, but does not explicitly contrast them.
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?
No guidance on when to use this tool versus alternatives like tool_recommend or formula_categories. The description only states what it does, not the context of use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_recommendA
๐ก Recommend the best tool(s) for a given task.
Args:
task: Brief description of what you want to do
domain: Optional domain context
Returns:
Recommended tool with rationale and example
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| domain | No | general |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool returns a recommended tool with rationale and example, which covers its main behavior. No contradictions or hidden side effects are indicated.
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 extremely concise: one sentence plus structured Args/Returns. It is front-loaded with an emoji and every sentence adds value. No wasted words.
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 simplicity (two parameters, no nested objects) and the presence of an output schema, the description adequately covers what the tool does and returns. It is complete for its purpose.
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%, so the description must compensate. The Args section adds meaning beyond the schema: 'Brief description of what you want to do' for task and 'Optional domain context' for domain. This is helpful but still brief, without examples or constraints.
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 states 'Recommend the best tool(s) for a given task,' which is a specific verb+resource. The tool's meta-purpose distinguishes it from sibling tools that perform specific actions like assume, derive, or session management.
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 usage context is implied: it is meant for tasks where tool selection is needed. However, there is no explicit guidance on when to use this tool versus alternatives, nor are any exclusions or prerequisites mentioned.
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.
41 tool updates
v1.0.0- First observed
assume - First observed
assume_for_step - First observed
check_assumption_conflicts - First observed
check_symbol_conflicts - First observed
clear_step_assumptions - First observed
derive - First observed
formula_add - First observed
formula_categories - First observed
formula_get - First observed
formula_search - First observed
generate_derivation_report - First observed
generate_latex_derivation - First observed
generate_python_function - First observed
generate_sympy_script - First observed
intent_execute - First observed
list_assumptions - First observed
list_domain_symbols - First observed
list_patterns - First observed
lookup_symbol - First observed
math - First observed
register_symbol - First observed
session_abort - First observed
session_add_note - First observed
session_complete - First observed
session_explain - First observed
session_get_steps - First observed
session_list - First observed
session_load_formula - First observed
session_record_step - First observed
session_resume - First observed
session_rollback - First observed
session_set_goal - First observed
session_show - First observed
session_start - First observed
session_status - First observed
session_suggest_formulas - First observed
session_verify_session - First observed
session_verify_step - First observed
show_assumptions - First observed
tool_categories - First observed
tool_recommend
TDQS
Scored across 41 tools
Many tools within categories like session management (16 tools) and assumptions (6 tools) have similar purposes, such as `session_add_note` vs `session_record_step` or `session_show` vs `session_status`. While descriptions help, the high number of closely related tools could cause misselection.
All tools use snake_case consistently, but the verb-object order varies (e.g., `formula_add` vs `session_start`). Some tools are single words like `math` or `derive`. Overall, the pattern is mostly predictable with minor deviations.
41 tools is high for a single server. The large number of session (16) and assumption (6) tools suggests the scope could be trimmed. However, the domain of symbolic mathematics derivation is complex, so the count is borderline acceptable.
The tool set covers the full derivation lifecycle: setup, formula management, symbolic operations, assumptions, verification, reporting, and code generation. Minor gaps exist (e.g., no explicit session import/export), but overall it is well-rounded for the domain.
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
Official DevSpeak MCP server โ translate technical text into formal specs from any AI IDE or agent
- WauldoOAuthcom.wauldo
Stateless agentic tools over MCP: concept extraction, long-context, knowledge graph, planning.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for step-by-step mathematical reasoning and planning, enabling AI agents to execute calculations and perform GUI actions like opening PowerPoint.1Apache 2.0
- AlicenseAqualityDmaintenanceA symbolic mathematics MCP server supporting calculus, linear algebra, number theory, statistics, and unit conversion via natural language.8MIT
- AlicenseBqualityAmaintenanceA universal mathematics MCP server that gives LLM clients full access to SageMath for symbolic calculus, number theory, linear algebra, and more, with persistent state across tool calls.3714MIT
- AlicenseAqualityDmaintenanceMCP server that gives small LLMs verified symbolic-math & logic tools.61Apache 2.0