Skip to main content
Glama

Aman-Amith-Shastry-scientific_computation_mcp

Server Details

This MCP server enables users to perform scientific computations regarding linear algebra and vect…

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
Aman-Amith-Shastry/scientific_computation_mcp
GitHub Stars
2
Server Listing
Scientific Computation MCP

TDQS

A3.6/5.0

Scored across 26 tools

Disambiguation4/5

Most tools target clearly distinct mathematical operations, e.g. add_matrices vs multiply_matrices vs scale_matrix and gradient vs divergence vs curl. A few could be confused by non-expert agents, especially find_orthonormal_basis vs qr_decompose and change_basis vs transpose, but the descriptions largely clarify the boundaries.

Naming Consistency3/5

All names use snake_case and are readable, but the verb/noun conventions are mixed: verb_noun (add_matrices, create_tensor), noun_verb (qr_decompose, svd_decompose), bare noun (determinant, rank), and noun_noun (matrix_inverse, vector_cross_product). This is not chaotic, but it lacks a single predictable pattern.

Tool Count3/5

26 tools is heavy for a single MCP server, even for a broad scientific computing domain. Each tool covers a distinct operation, but some could be consolidated or grouped (e.g. matrix arithmetic, decompositions), making the surface feel borderline expansive rather than perfectly scoped.

Completeness4/5

The server covers core linear algebra, vector operations, symbolic vector calculus, and plotting well, including matrix creation, arithmetic, decompositions, inverses, and key differential operators. Some notable gaps remain, such as solving linear systems, symbolic integration, ODEs, and listing stored tensors, but agents can work around most of these.

Available Tools

26 tools
add_matricesA
Read-onlyIdempotent
Inspect
    Adds two stored tensors element-wise, computing name_a + name_b.

    Args:
        name_a (str): The name of the first tensor.
        name_b (str): The name of the second tensor.

    Returns:
        Tensor: The result of element-wise addition.

    Raises:
        ValueError: If the tensor names are not found or shapes are incompatible.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
name_aYesName of the first stored tensor.
name_bYesName of the second stored tensor.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive behavior. The description adds context beyond this by stating it operates on stored tensors by name and by documenting ValueError conditions for missing names or incompatible shapes. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The docstring is compact and well-structured with Args, Returns, and Raises sections. The phrase 'computing name_a + name_b' is mildly redundant after 'element-wise,' but the overall structure is clean and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter, read-only tensor operation with an output schema and full annotations, the description covers the operation, error conditions, and result type. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters described as 'name of the first/second stored tensor.' The description's Args section repeats essentially the same information and adds no new semantic detail, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Adds'), a resource ('stored tensors'), and clarifies the operation is element-wise with 'computing name_a + name_b.' This distinguishes it from matrix multiplication siblings like multiply_matrices, and the operation is unambiguous against subtract/multiply siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage—call this when you need element-wise addition of two stored tensors—but it provides no explicit when-to-use vs alternatives, no exclusions, and no mention of sibling tools like subtract_matrices or multiply_matrices. The Raises section hints at constraints but doesn't help an agent select among operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

change_basisA
Read-onlyIdempotent
Inspect
    Changes the basis of a stored square matrix.

    Args:
        name (str): Name of the matrix in the tensor store.
        new_basis (list[list[float]]): Columns are new basis vectors.

    Returns:
        Tensor: Representation of the matrix in the new basis.

    Raises:
        ValueError: If the matrix name is not found or non-invertible.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored square matrix to re-express.
new_basisYesThe new basis as a nested list whose columns are the basis vectors.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavior: it returns a new Tensor representation and raises ValueError for missing or non-invertible matrices, going beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured with Args, Returns, and Raises sections. Every line conveys useful information without fluff or redundant elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two simple parameters, full schema coverage, an output schema, and annotations, the description is largely complete for invoking the tool. It includes error conditions and return semantics, though it could clarify the mathematical convention for interpreting new_basis columns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description mostly restates the schema ('Name of the matrix in the tensor store', 'Columns are new basis vectors') and adds only minor context, not significant new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Changes the basis of a stored square matrix.' This clearly distinguishes it from sibling tools like determinant, matrix_inverse, or qr_decompose, which perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended context is implied: use this when you have a stored square matrix and want it re-expressed in a new basis. However, it provides no explicit guidance about when to prefer this tool over related alternatives, nor does it mention any excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_eigenA
Read-onlyIdempotent
Inspect
    Computes the eigenvalues and right eigenvectors of a stored square matrix.

    Args:
        name (str): The name of the tensor to analyze.

    Returns:
        dict: A dictionary with keys:
            - 'eigenvalues': list of eigenvalues
            - 'eigenvectors': list of right eigenvectors, one per column of the result

    Raises:
        ValueError: If the tensor is not found or is not a square matrix.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored square matrix to analyze.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral detail beyond the annotations: it specifies the return dict with eigenvalues and right eigenvectors, and explicitly documents ValueError for non-square or missing tensors. No contradiction with readOnlyHint/idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The docstring is well-structured with Args, Returns, and Raises sectionshots, and the core behavior is front-loaded. It is slightly repetitive with the schema, but not enough to hurt clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only analysis tool, the description fully covers input requirements, return shape, and failure modes. The agent has everything needed to invoke and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the single parameter as the name of the stored square matrix. The docstring's Args section largely restates this, adding minimal new semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Computes the eigenvalues and right eigenvectors of a stored square matrix' — a specific verb, clear target resource, and immediate distinction from sibling matrix tools like SVD, QR, or inverse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool instead of sibling tools, and no alternative tools are named. The square-matrix constraint is stated, but not developed into selection guidance or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_tensorA
Idempotent
Inspect
Creates a NumPy array (matrix) with a specified shape and values.

Args:
    shape (list[int]): The shape of the resulting array as a tuple(e.g., (2, 3)).
    values (list[float]): A flat list of values to populate the array.
    name (str): The name of the tensor to be stored.

Returns:
    Tensor: The stored tensor as nested lists.

Raises:
    ValueError: If the number of values does not match the product of the shape.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName to store the tensor under; other tools take this name as their argument.
shapeYesTensor shape as a list of dimension sizes, e.g. [2, 3] for a 2x3 matrix.
valuesYesFlat, row-major list of values; its length must equal the product of shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and idempotentHint=true. The description adds the ValueError condition for mismatched values and specifies the return format as nested lists, which are useful behavioral details beyond annotations. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args, Returns, and Raises sections, and is front-loaded with the core purpose. It avoids excessive detail while including important error handling information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the description covers purpose and error conditions. However, it does not specify behavior when a tensor with the same name already exists (overwrite vs. error), which could be relevant for an agent. Given the output schema and annotations, this is a minor but notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptive text for each parameter. The description's Args section merely repeats parameter names without adding new semantics. It even inaccurately describes shape as a 'tuple' while the schema expects a list, which could cause minor confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a NumPy array with specified shape and values, and stores it under a given name. This is specific and distinct from sibling operations like add_matrices or view_tensor, which operate on existing tensors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating tensors to be referenced by other tools via the name parameter, as reinforced by the schema description for name. It doesn't explicitly list alternatives or exclusions, but the context is clear given the tool's purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

curlA
Read-onlyIdempotent
Inspect
    Computes the symbolic curl of a vector field, optionally evaluated at a point.

    Args:
        f_str (str): A string representing the vector field in list format (e.g., "[x+y, x, 2*z]").
        point (list[float], optional): A list of coordinates [x, y, z] to evaluate the curl numerically.

    Returns:
        dict: A dictionary with the symbolic curl as a string, and optionally the evaluated vector.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
f_strYesVector field in bracketed list form with components in x, y, z, e.g. "[x+y, x, 2*z]".
pointNoOptional [x, y, z] coordinates at which to evaluate the result numerically.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive behavior, so the description only needs to add behavioral context. It adds that the curl is computed symbolically by default and can be numerically evaluated at a point, plus the return format is a dict with a string and optionally a numeric vector. This goes beyond the annotation coverage and gives useful insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is an effective, front-loaded purpose. The Args/Returns sections mirror the schema, which introduces minor redundancy, but the structure is clean and the text remains short. It could be trimmed to remove duplication, but overall it is well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the limited 2-param schema, full schema descriptions, and readOnly/idempotent hints from annotations, this description is sufficient. It mentions the symbolic versus numeric behavior, the Return dict, and doesn't need to explain return types because the output schema exists. There are no missing pieces for correct calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes both parameters (coverage 100%), with the same explanations for f_str and point that appear in the description. The description repeats those semantics but adds no new meaning beyond the schema, so it stays at the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource – 'computes the symbolic curl of a vector field' – and clearly distinguishes this from the other vector calculus siblings (divergence, gradient, laplacian). It also mentions the optional numeric evaluation, which helps an agent understand the tool's unique capability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (whenever a curl of a vector field is needed), but it gives no explicit routing to alternatives such as divergence or gradient. An agent can infer usage from the purpose, but there is no explicit 'use this instead of' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_tensorB
DestructiveIdempotent
Inspect
Deletes a tensor from the in-memory tensor store.

Args:
    name (str): The name of the tensor to delete.

Returns:
    str: Confirmation that the tensor was removed.

Raises:
    ValueError: If the tensor name is not found in the store or if an error occurs during deletion.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored tensor to remove from the store.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotation Contradiction: The description says ValueError is raised if the tensor name is not found, implying a second delete of the same name fails. This contradicts the idempotentHint=true annotation, which claims repeated identical requests produce the same outcome. Additionally, the description adds little beyond annotations: the destructive behavior is already declared, and 'if an error occurs during deletion' is vague.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose. The structured Args/Returns/Raises format is easy to parse. Minor redundancy exists because the Args section repeats schema information, and the 'or if an error occurs during deletion' clause is imprecise, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter deletion tool, the description covers the action, parameter, return value, and error condition. However, the idempotency contradiction creates meaningful ambiguity about repeated calls, and the description does not clarify irreversibility beyond the annotation. The output schema and annotations fill many gaps, but the contradiction undermines completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the required 'name' parameter. The description repeats the parameter meaning but adds no extra format, constraints, or edge-case details beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Deletes a tensor from the in-memory tensor store.' This clearly distinguishes it from sibling tools like create_tensor, view_tensor, and matrix operations. It also names the target store, leaving no ambiguity about what the operation affects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: use this tool to remove a named tensor from the in-memory store. However, it does not explicitly mention when not to use it or name alternatives such as create_tensor or view_tensor. The usage context is strong but exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

determinantA
Read-onlyIdempotent
Inspect
    Computes the determinant of a stored square matrix.

    Args:
        name (str): The name of the matrix.

    Returns:
        float: The determinant of the matrix.

    Raises:
        ValueError: If the matrix is not found or is not square.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored square matrix.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as read-only and idempotenthjklmn, but the description adds specific behavior: it raises ValueError when the matrix is not found or not square. That error handling detail goes beyond the structured annotations and is valuable for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by a standard Args/Returns/Raises block. Every sentence earns its place; no filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read-only operation, the description covers purpose, input, return type, and failure conditions. The presence of an output schema and existing sibling list makes this complete; no critical operating detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes `name` as 'Name of the stored square matrix,' and the description restates this almost identically without extra depth (e.g., no naming conventions, accepted formats, or reference requirements). Schema coverage is 100%, so the description adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Computes'), the specific object ('determinant'), the input domain ('stored square matrix'), and the return type. This unambiguously differentiates it from siblings like matrix_inverse or transpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description strongly implies when to use this tool (when you need a matrix's determinant) and includes error conditions, but it does not explicitly contrast with alternative tools or state when not to use it. This is clear context without explicit exclusions or named sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

directional_derivA
Read-onlyIdempotent
Inspect
    Computes symbolic directional derivative of scalar field along a vector direction.

    Args: f_str (str): Expression like "x*y*z". u (list[float]): Direction vector [vx, vy, vz]. unit (bool): True
    if u should be normalized before calculating directional derivative. Set to True by default.

    Returns:
        str: Symbolic result as string.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
uYesDirection as [vx, vy, vz]; trailing components may be omitted.
unitNoNormalize the direction to unit length before differentiating.
f_strYesScalar function of x, y, z, e.g. "x*y*z".

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds the unit normalization default (unit=True) and that the result is a symbolic string, which are helpful behavioral details beyond annotations. It does not discuss limitations like variable assumptions or error handling, but these are minor for a pure computation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, with clear docstring-like structure. It front-loads the main purpose, then lists parameters and return. Every sentence is informative, though the parameter listings partially mirror the schema, which is slightly redundant but not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the output schema exists to describe return values, and the description covers the key inputs and behavior. It lacks deeper context like supported variable names or edge cases (e.g., zero vector), but for a symbolic math tool, the description is adequate. No major missing details for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already documented. The description adds the example expression "x*y*z" and the default for unit, but these are mostly redundant with schema descriptions. It does clarify that u is a direction vector and unit controls normalization, which aligns with schema. No significant additional meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it computes the symbolic directional derivative of a scalar field along a vector direction, specifying the math operation and the resource (scalar field). This distinguishes it from siblings like gradient, divergence, and curl, which are different vector calculus operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for directional derivative calculations in vector calculus contexts; however, it does not explicitly state when to prefer this over siblings like gradient or when not to use it. The context of the tool name and the operation are clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

divergenceA
Read-onlyIdempotent
Inspect
    Computes the symbolic divergence of a vector field, optionally evaluated at a point.

    Args:
        f_str (str): A string representing the vector field in list format (e.g., "[x+y, x, 2*z]").
        point (list[float], optional): A list of coordinates [x, y, z] to evaluate the divergence numerically.

    Returns:
        dict: A dictionary with the symbolic divergence as a string, and optionally the evaluated scalar.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
f_strYesVector field in bracketed list form with components in x, y, z, e.g. "[x+y, x, 2*z]".
pointNoOptional [x, y, z] coordinates at which to evaluate the result numerically.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds that the result is symbolic and optionally numerically evaluated at a point, but does not discuss errors, expression constraints, or exact return shape beyond 'dict'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded with the core operation; the example and point-evaluation detail are relevant without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with annotations and schema, the description covers what the tool computes, the string format, and the optional numerical evaluation. It does not specify key names in the returned dict or error/edge cases, but the output schema likely supplies that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers f_str and point with 100% parameter coverage. The description adds an example string and the optional evaluation semantics, which is helpful but not a major semantic layer beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation ('computes the symbolic divergence of a vector field') with a clear subject, input domain, and an optional numeric-evaluation behavior. No ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly defines the computation but gives no guidance on when to choose it over closely related sibling tools like curl or gradient, nor conditions for using the optional point parameter. Context is implied by the operation itself, not by explicit selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_orthonormal_basisA
Read-onlyIdempotent
Inspect
    Finds an orthonormal basis for the column space of a stored matrix using QR decomposition.

    Args:
        name (str): The name of the matrix.

    Returns:
        list[list[float]]: A list of orthonormal basis vectors.

    Raises:
        ValueError: If the matrix is not found or decomposition fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored matrix whose column space to orthonormalize.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond annotations by disclosing the ValueError failure modes (matrix not found, decomposition fails) and the expected return format. No contradiction with the annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is compact and front-loaded with the core purpose. The Args/Returns sections are somewhat redundant with the schema and output schema, but the Raises section adds unique value. It is efficient without being over-redundant, though the Args block could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With the output schema present, return format need not be spelled out in prose, and annotations cover safety. The description covers purpose, algorithm, and failure modes for the single parameter. It is essentially complete for a simple read-only tool; only alternative-routing guidance is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema's parameter description ('Name of the stored matrix whose column space to orthogonalize.') is actually richer than the description's own 'name (str): The name of the matrix.' Since the schema already documents the single parameter fully, the description adds no additional semantics, warranting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('finds'), a precise target ('orthonormal basis for the column space of a stored matrix'), and the method ('using QR decomposition'). This clearly differentiates it from the sibling `qr_decompose` (returns the factor pair) and `change_basis` (changes to an arbitrary basis), even without reading their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose is clear and the algorithm hint implies the use case (you want an orthogonalized column-space basis). However, there is no explicit guidance on when to choose this over `qr_decompose` or `change_basis`, and no exclusions or alternative conditions are stated, so the agent must infer the selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gradientB
Read-onlyIdempotent
Inspect
    Computes the symbolic gradient of a scalar function.

    Args:
        f_str (str): A string representing a scalar function (e.g., "x**2 + y*z").

    Returns:
        str: A string representation of the symbolic gradient as a vector.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
f_strYesScalar function of x, y, z, e.g. "x**2 + y*z".

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful context that the computation is symbolic and returns a string representation of a vector, but it does not disclose potential failure modes, input restrictions beyond 'scalar function,' or behavior on invalid expressions. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately short and front-loaded with the main purpose. The Args and Returns sections are standard and add structure without excessive detail. It loses a point for repeating schema information that didn't need restating.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter symbolic math tool, the description is mostly complete: it names the operation, the expected input form, and the output form. Since an output schema is present, the return type does not need further explanation. Minor gaps include lack of mention of variable names beyond the schema and no guidance on error handling, but these are not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents f_str as a scalar function of x, y, z with an example. The description repeats this information in the Args section without adding meaning beyond the schema. It gives an example, but the schema already provides the same one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Computes the symbolic gradient of a scalar function.' The return type is also clear. It does not explicitly distinguish itself from related siblings like curl, divergence, or directional_deriv, but the mathematical meaning of gradient is well established and the scalar-function input helps disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings such as curl, divergence, or directional_deriv. There is no mention of alternatives, exclusions, or context that would help an agent decide that gradient is the right choice among the many vector calculus tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

laplacianA
Read-onlyIdempotent
Inspect
    Computes the Laplacian of a scalar or vector field symbolically.

    Args:
        f_str (str): Scalar function as "x**2 + y*z" or vector "[Fx, Fy, Fz]".
        is_vector (bool): Set True to compute vector Laplacian.

    Returns:
        str: Symbolic result of the Laplacian—scalar or list of 3 components.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
f_strYesScalar function such as "x**2 + y*z", or a bracketed vector field such as "[Fx, Fy, Fz]".
is_vectorNoSet True when f_str is a vector field, so the Laplacian is taken componentwise.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and idempotent hints. The description adds value by disclosing the return format (string, scalar or list of 3 components) and noting the symbolic nature of the result. It does not contradict annotations, and the added behavioral context is helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact docstring with a clear structure: purpose, Args, Returns. Every sentence adds information—no filler. The key purpose is stated first, and the parameter/return details are neatly organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter symbolic math tool, the description is complete: it explains inputs, the scalar/vector distinction, and the output format. With annotations covering safety and an output schema present (though not shown), nothing essential is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. The description reinforces the parameter meanings with concrete examples (e.g., 'x**2 + y*z' and '[Fx, Fy, Fz]') and clarifies the effect of is_vector on the computation. While it largely repeats schema info, the examples add practical clarity beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes the Laplacian of a scalar or vector field symbolically, with explicit examples of input formats. It distinguishes itself from sibling vector calculus tools (gradient, curl, divergence) by its specific operation, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use it (computing Laplacians) and explains the scalar vs. vector distinction via the is_vector flag. It does not explicitly name alternatives or exclusions, but the purpose is so specific that usage is implied. A 4 reflects clear context without explicit exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

matrix_inverseA
Read-onlyIdempotent
Inspect
    Computes the inverse of a stored square matrix.

    Args:
        name (str): The name of the tensor to invert.

    Returns:
        Tensor: The inverse of the matrix.

    Raises:
        ValueError: If the matrix is not found, is not square, or is singular (non-invertible).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored square matrix to invert.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral context by specifying failure conditions: missing matrix, non-square matrix, and singular/non-invertible matrix.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured with Args, Returns, and Raises sections. Every sentence is informative, with no redundancy or unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with an output schema and safety annotations, the description is complete. It documents the key constraints (square, invertible) and error conditions, leaving no important invocation requirements unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's 'Args' section essentially restates the schema. It does not add meaningful parameter semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes the inverse of a stored square matrix, with a specific verb and resource. It does not explicitly distinguish itself from sibling tools, though the operation is unique among the listed siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context for use is implied: an agent would call this when it needs the inverse of a stored square matrix. However, the description does not explicitly state when to use this tool over alternatives 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.

multiply_matricesA
Read-onlyIdempotent
Inspect
    Performs matrix multiplication between two stored tensors, computing name_a @ name_b.

    Args:
        name_a (str): The name of the first tensor.
        name_b (str): The name of the second tensor.

    Returns:
        Tensor: The result of matrix multiplication.

    Raises:
        ValueError: If either tensor is not found or their shapes are incompatible.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
name_aYesName of the left-hand tensor in the product.
name_bYesName of the right-hand tensor in the product.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context: it raises ValueError if tensors are not found or shapes are incompatible, and returns a Tensor. This goes beyond annotations and helps the agent anticipate failure conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a concise docstring with clear sections (Args, Returns, Raises). The main operation is stated first, and each section is minimal and relevant. No wasted words; the structure is ideal for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential context: operation, parameters, return type, and error conditions. Since an output schema exists, the description doesn't need to detail the return structure. It might mention storage semantics ('stored tensors') but is otherwise complete for a straightforward matrix multiplication tool. A 4 reflects a minor omission—no mention of how to obtain tensor names or if any preconditions exist—but these are likely covered by sibling tools and context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters (name_a and name_b) are already described in the schema. The description simply restates them without adding new meaning (e.g., format, constraints, or usage nuances). Baseline of 3 is correct because the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Performs matrix multiplication between two stored tensors'. It clearly differentiates from siblings like add_matrices and subtract_matrices by explicitly naming the operation (name_a @ name_b). No ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool (when matrix multiplication is needed) and the operation is self-contained. However, it does not explicitly mention alternatives or exclusion criteria (e.g., 'for element-wise multiplication use...'). Since the purpose is unambiguous and siblings are distinct, this is a minor gap, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plot_functionA
Read-onlyIdempotent
Inspect
    Plots a 2D or 3D mathematical function from a symbolic expression string.

    Args:
        expr_str: string representation of a function in x or x and y,
                  e.g. "x**2" or "sin(sqrt(x**2 + y**2))"
        xlim: (xmin, xmax) range for x-axis
        ylim: (ymin, ymax) range for y-axis (used in 2D or 3D)
        grid: resolution of the plot grid

    Returns:
        A rendered Image of the function using Matplotlib.
        - 2D plot if the expression contains only x
        - 3D surface plot if the expression contains both x and y
    
ParametersJSON Schema
NameRequiredDescriptionDefault
gridNoSamples per axis. Higher is smoother and slower.
xlimNox-axis range as (xmin, xmax).
ylimNoy-axis range as (ymin, ymax); used only for 3D surfaces.
expr_strYesFunction of x (2D curve) or of x and y (3D surface), e.g. "x**2" or "sin(x**2 + y**2)".

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it readOnly and non-destructive. The description adds useful behavioral detail beyond that: it auto-selects between a 2D line plot and a 3D surface based on whether the expression contains x only or both x and y, and it returns a rendered Matplotlib Image.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with an Args/Returns breakdown, includes concrete expression examples, and front-loads the core purpose. Every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a plotting tool with annotations covering safety, the definition explains the input expression form, axis ranges, grid resolution, return type, and automatic 2D/3D behavior. It lacks explicit failure-mode information and contains the ylim discrepancy, so it is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds examples and explains the variable-based dimensionality switch, but it conflicts with the schema on ylim: the description says it is 'used in 2D or 3D' while the schema says 'used only for 3D surfaces.' This inconsistency prevents a higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Plots a 2D or 3D mathematical function from a symbolic expression string.' This clearly distinguishes the tool from sibling plot_vector_field, which handles vector fields rather than scalar functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool—plotting symbolic mathematical expressions in one or two variables—and conveys the 2D vs. 3D behavior. It does not explicitly name alternatives or state when not to use it, but the intent is unambiguous given the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plot_vector_fieldA
Read-onlyIdempotent
Inspect
    Plots a 3D vector field from a string "[u(x,y,z), v(x,y,z), w(x,y,z)]"

    Args:
        f_str: string representation of 3D field, e.g. "[z, -y, x]".
        bounds: (xmin, xmax, ymin, ymax, zmin, zmax)
        n: grid resolution per axis

    Returns: Displayed Matplotlib 3D quiver plot (no image return needed)
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of arrows sampled per axis; the grid holds n**3 points.
f_strYes3D vector field in bracketed list form, e.g. "[z, -y, x]".
boundsNoPlot domain as (xmin, xmax, ymin, ymax, zmin, zmax).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds useful behavioral detail: the tool displays a Matplotlib 3D quiver plot and does not return an image. This goes beyond what the annotations provide without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact docstring with a clear one-sentence purpose, an Args list, and a Returns note. No unnecessary prose, though the Args section is partially redundant with the schema's parameter descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only plotting tool, the description covers the input format, grid resolution, bounds, and return behavior (displayed plot, no image return). All essential information for calling it correctly is present; error handling of malformed strings is not described but is not critical for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already explains each parameter (f_str format, bounds tuple, n resolution). The description's Args section restates these but adds no new information beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Plots') and resource ('3D vector field'), and includes an example expression. Clearly distinguishes itself from siblings like plot_function, which presumably handles scalar functions, by emphasizing the 3D vector field input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence gives clear context for when to use this tool: when a 3D vector field needs to be visualized. It does not explicitly name alternatives or exclusion criteria, but the purpose statement is specific enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qr_decomposeA
Read-onlyIdempotent
Inspect
    Computes the QR decomposition of a stored matrix.

    Decomposes the matrix A into A = Q @ R, where Q is an orthogonal matrix
    and R is an upper triangular matrix.

    Args:
        name (str): The name of the matrix to decompose.

    Returns:
        dict: A dictionary with keys:
            - 'q': the orthogonal matrix Q, as nested lists
            - 'r': the upper triangular matrix R, as nested lists

    Raises:
        ValueError: If the matrix is not found or decomposition fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored matrix to decompose.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by specifying the return format (keys 'q' and 'r' as nested lists) and raising ValueError for missing matrices or decomposition failure, which goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear summary, mathematical definition, args section, returns section, and raises section. Every sentence earns its place, and the core purpose is front-loaded. It is appropriately sized for a tool with one parameter and a defined output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a single-parameter read-only tool: it explains the operation, the return structure, and error conditions. The output schema exists, so return values are already structured. It could mention prerequisites (e.g., matrix must be square) but the ValueError for decomposition failure covers the failure mode adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'name' parameter as 'Name of the stored matrix to decompose.' The description repeats this information without adding new semantic detail, such as expected matrix format or constraints. Baseline 3 is appropriate since the schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes the QR decomposition of a stored matrix, specifies the mathematical relationship A = Q @ R, and defines Q as orthogonal and R as upper triangular. This distinguishes it from siblings like svd_decompose, determinant, and matrix_inverse, which perform different matrix operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: it operates on a stored matrix identified by name, and the mathematical definition makes clear it is for QR factorization. It does not explicitly state when to prefer this over svd_decompose or other decompositions, but the mathematical clarity and sibling context provide adequate guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rankA
Read-onlyIdempotent
Inspect
    Computes the rank of a stored tensor.

    Args:
        name (str): The name of the tensor.

    Returns:
        int | list[int]: The rank of the matrix.

    Raises:
        ValueError: If the tensor name is not found in the store.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored tensor.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, read-only operation. The description adds a ValueError if the tensor name is not found, which is useful behavioral context beyond what annotations provide. However, it does not detail how the rank is computed for tensors with different dimensionalities (e.g., matrix vs. higher-order tensor), which could be a behavioral nuance. Given annotations cover safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-line summary, clear Args, Returns, and Raises sections. It is front-loaded with the main action, and every sentence adds value—there is no filler. This is an example of effective brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter, a rich output schema (int | list[int]), and clear annotations. The description covers the essential usage: it names the parameter, describes the return type, and notes the error condition. A slight gap is not specifying whether the rank can be multi-valued (list[int]) for higher-order tensors, but the output schema covers that. Given the simplicity and available structured data, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% since the only parameter 'name' is described in the schema as 'Name of the stored tensor'. The description repeats this with 'The name of the tensor' and adds the context that it must exist in the store (via the Raises section). This adds minimal value beyond the schema but is not harmful. Baseline is 3, and it is met.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'computes' and the resource 'rank of a stored tensor', which is specific and distinguishes it from sibling tools like determinant or svd_decompose. It is not just a tautology of the name 'rank' because it clarifies that it operates on tensors in the store. However, it could better differentiate from related concepts like shape or dimensions, but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you need the rank of a stored tensor and have its name. However, it does not explicitly state when not to use it or mention alternatives (e.g., use 'view_tensor' to inspect the tensor itself). The context is clear but lacks exclusions or comparisons to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scale_matrixAInspect
    Scales a stored tensor by a scalar factor.

    Args:
        name (str): The name of the tensor to scale.
        scale_factor (float): The scalar value to multiply the tensor by.
        in_place (bool): If True, updates the stored tensor; otherwise, returns a new scaled tensor.

    Returns:
        Tensor: The scaled tensor.

    Raises:
        ValueError: If the tensor name is not found in the store.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored tensor to scale.
in_placeNoOverwrite the stored tensor with the scaled result. False returns the result and leaves the store untouched.
scale_factorYesScalar value to multiply every element by.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: the default in_place=True mutates the stored tensor, in_place=False returns a new tensor and leaves storage untouched, and a missing name raises ValueError. No contradiction with the annotations is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the docstring is compact and well organized. The Args/Returns/Raises sections are mostly redundant with the schema, but the description still remains appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter tool with full schema coverage, an output schema, and annotations, the description covers the core operation, mutation versus non-mutation behavior, and the error case. Nothing necessary for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The Args section essentially restates the schema's parameter descriptions without adding meaningful new details about formats, edge cases, or usage constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Scales a stored tensor by a scalar factor,' which names a specific verb, the resource, and the exact operation. This clearly distinguishes it from sibling tools like add_matrices or multiply_matrices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: to scale a stored tensor by a scalar, with the in_place flag deciding mutation versus returning a new tensor. However, it does not explicitly mention alternatives or state when another sibling tool should be used instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subtract_matricesA
Read-onlyIdempotent
Inspect
    Subtracts one stored tensor from another element-wise, computing name_a - name_b.

    Args:
        name_a (str): The name of the tensor to subtract from (the minuend).
        name_b (str): The name of the tensor to subtract (the subtrahend).

    Returns:
        Tensor: The result of element-wise subtraction.

    Raises:
        ValueError: If the tensor names are not found or shapes are incompatible.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
name_aYesName of the tensor to subtract from (the minuend).
name_bYesName of the tensor to subtract (the subtrahend).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the error condition (ValueError for missing names or incompatible shapes), which is useful behavioral context beyond the annotations. However, it doesn't disclose details like whether the result is stored or returned transiently, or any side effects on the stored tensors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core operation in the first sentence. The Args/Returns/Raises sections are standard and add necessary detail without bloat. It earns a 4 because it is efficient, though the Args section largely duplicates the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no nested objects) and has an output schema, so the description doesn't need to explain return values. The error conditions are disclosed, and the operation is fully specified. It is complete for an agent to call correctly, though it could mention whether the result is stored or returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters fully. The description repeats the parameter meanings ('minuend' and 'subtrahend') but adds no new semantic information beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('subtracts'), a specific resource ('stored tensor'), and the exact operation ('computing name_a - name_b'). It clearly distinguishes itself from siblings like add_matrices and multiply_matrices by naming the element-wise subtraction operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by defining the two tensor names and the operation, but it does not explicitly state when to use this tool versus alternatives like add_matrices or multiply_matrices. The context is clear enough for an agent to infer the use case, but there is no explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

svd_decomposeA
Read-onlyIdempotent
Inspect
    Computes the Singular Value Decomposition (SVD) of a stored matrix.

    Decomposes the matrix A into A = U @ S @ V^T, where U and V^T are orthogonal
    matrices, and S is a diagonal matrix of singular values.

    Args:
        name (str): The name of the matrix to decompose.

    Returns:
        dict: A dictionary with keys:
            - 'u': the left singular vectors, as nested lists
            - 's': the singular values, as a flat list
            - 'v_t': the right singular vectors transposed, as nested lists

    Raises:
        ValueError: If the matrix is not found or decomposition fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored matrix to decompose.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation read-only, idempotent, and non-destructive, and the description adds meaningful behavioral detail: it specifies the returned keys and raises ValueError when the matrix is missing or decomposition fails. This adds value without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loads the defining formula, and clearly partitions Args/Returns/Raises. Some redundancy with the schema and output schema exists in the Args and Returns sections, but it remains well-structured and the extra error information is useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only, idempotent tool with an output schema, the description covers the operation, mathematical definition, return keys, and failure mode. An agent has everything it needs to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single 'name' parameter at 100% coverage, and the description's Args section essentially restates 'matrix to decompose'. No additional parameter semantics are provided beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb 'Computes' and the exact resource 'stored matrix', and defines the operation with the formula A = U @ S @ V^T plus characteristic output keys. This makes it unmistakably distinct from sibling matrix tools such as qr_decompose or compute_eigen, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear that this tool is for computing the SVD of a stored matrix, which gives an agent a clear condition for when to call it. It does not explicitly discuss alternatives or when not to use it, so it stops short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transposeA
Read-onlyIdempotent
Inspect
    Computes the transpose of a stored tensor.

    Args:
        name (str): The name of the tensor to transpose.

    Returns:
        Tensor: The transposed tensor.

    Raises:
        ValueError: If the tensor name is not found in the store.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored tensor to transpose.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds beyond that by stating the return value is the transposed tensor and by documenting the ValueError when the tensor name is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a tight docstring with a one-sentence summary plus compact Args, Returns, and Raises sections. Every part earns its place and there is no filler or redundant prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, non-mutating operation backed by annotations, an output schema, and a documented failure mode, the description is largely complete. It does not specify exact transpose behavior for higher-dimensional tensors, but the low complexity and standard meaning make this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the single 'name' parameter. The description repeats the parameter's meaning with 'The name of the tensor to transpose' but does not add new constraints, formats, or edge-case guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Computes the transpose of a stored tensor,' giving a specific verb and resource. This clearly distinguishes it from sibling operations like matrix_inverse, determinant, and view_tensor without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes the context: it operates on a stored tensor and requires the tensor's name. It does not explicitly list exclusions or alternative tools, but the operation is unique enough among siblings that the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vector_cross_productA
Read-onlyIdempotent
Inspect
    Computes the cross product of two stored vectors.

    Args:
        name_a (str): Name of the first vector in the tensor store.
        name_b (str): Name of the second vector in the tensor store.

    Returns:
        Tensor: Vector result of the cross product.

    Raises:
        ValueError: If either vector is not found or if the cross product computation fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
name_aYesName of the first stored vector (the left operand).
name_bYesName of the second stored vector (the right operand).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool is known to be safe and non-destructive. The description adds value by mentioning the operation's non-commutative nature implicitly through operand ordering (name_a vs name_b) but does not explicitly state that cross product is anti-commutative, which is relevant behavior. It also mentions the error condition (ValueError) but that provides minimal extra beyond schema. Overall, since annotations cover safety, the description adds moderate value with error handling details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear purpose statement, parameter descriptions, return type, and error conditions. It follows a docstring format that is well-structured: purpose first, then args, returns, and raises. No extraneous information. Each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool complexity (mathematical operation on stored vectors), the description is a bit sparse. It lacks critical usage details such as vector dimensions required (cross product typically only for 3D), dimensionality constraints, and what happens if the vectors are not 3D. While the output schema exists (though not provided in full), the description doesn't explain return format beyond 'Tensor'. Considering the sibling tools are all mathematical operations, more context on applicability would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with clear descriptions for both parameters: each is 'Name of the first/second stored vector' and left/right operand. The description adds minimal value, essentially repeating the same information. However, it does clarify that the tool operates on stored vectors (by name), which is slightly beyond schema. Baseline 3 is appropriate as the schema already covers parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool computes the cross product of two stored vectors, specifying the operands as name references in the tensor store. It distinguishes from siblings like vector_dot_product and vector_project by explicitly naming 'cross product'. However, it doesn't explicitly differentiate from other vector operations, but the verb 'cross product' is specific enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: it requires two vectors stored in the tensor store)Skip, but does not explicitly state when to use this tool versus alternatives (e.g., for 3D vectors only, not for dot product). It doesn't mention constraints like vector dimensionality (cross product is typically only defined for 3D vectors), which is a notable gap for correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vector_dot_productA
Read-onlyIdempotent
Inspect
    Computes the dot product between two stored vectors.

    Args:
        name_a (str): Name of the first vector in the tensor store.
        name_b (str): Name of the second vector in the tensor store.

    Returns:
        float: Scalar result of the dot product.

    Raises:
        ValueError: If either vector is not found or if the dot product computation fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
name_aYesName of the first stored vector.
name_bYesName of the second stored vector.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this readOnly and idempotent, lowering the burden. The description adds that a ValueError is raised when a vector is missing or the operation fails, and that inputs are stored vectors referenced by name, which is useful behavior beyond annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sections: a one-line computation statement, two parameter lines, return and error note. No filler, and the Raises clause is behaviorally useful. The description is compact and structured for quick scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter compute tool, the description covers operation, operands, return, and failure mode. It doesn't mention vector dimension compatibility or that vectors must already be stored, but schema param titles ('stored vector') plus 'stored vectors' in the description cover this. An agent has sufficient context to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are named and described in the schema. The description repeats the same parameter explanations, adding no extra semantic nuance beyond 'stored' vectors. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Computes the dot product between two stored vectors.' This clearly distinguishes it from sibling tools like vector_cross_product and vector_project without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the tool's purpose clear (computing a dot product between two stored vectors), so an agent can infer when to use it. However, it does not explicitly state exclusions or alternatives (e.g., when to prefer cross product or projection), leaving some selection reasoning to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vector_projectA
Read-onlyIdempotent
Inspect
    Projects a stored vector onto another vector.

    Args:
        name (str): Name of the stored vector to project.
        new_vector (list[float]): The vector to project onto.

    Returns:
        Tensor: The projection result vector.

    Raises:
        ValueError: If the vector name is not found or projection fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored vector to project.
new_vectorYesThe vector to project onto, as a flat list.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value by specifying error behavior (ValueError if name not found or projection fails) and the return type (Tensor), which goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence plus a structured Args/Returns/Raises block. It is front-loaded with the main purpose and avoids unnecessary elaboration. However, the Args block largely duplicates the schema, making it slightly redundant, but overall it remains tight and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and the description, combined with the output schema, provides sufficient information for an agent to call it correctly. It covers the main inputs, the return type, and an error condition. While it does not mention dimension matching or prerequisites for the stored vector, such details are likely implied and not critical for a straightforward projection operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description's Args section repeats the schema text ('Name of the stored vector to project' and 'The vector to project onto, as a flat list') without adding new semantic details such as vector dimension requirements or format expectations. Thus it adds no significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: 'Projects a stored vector onto another vector.' It clearly identifies the resource (stored vector) and the operation (projection), which distinguishes it from sibling operations like add, multiply, or determinant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but does not provide explicit guidance on when to use it versus alternatives. It neither names sibling tools nor gives conditions for selection. The usage context is implied by the operation but not clarified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_tensorA
Read-onlyIdempotent
Inspect
Returns an immutable view of a previously stored NumPy tensor from the in-memory tensor store.

Args:
    name (str): The name of the tensor as stored in the in-store dictionary

Returns:
    Tensor: The stored tensor as nested lists.

Raises:
    ValueError: If the tensor name is not found in the store.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the stored tensor to read back.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important runtime behavior: the returned value is an immutable view, it is returned as nested lists, and it raises ValueError when the name is missing. This gives the agent a clear model of what happens on both success and failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args, Returns, and Raises sections, making it easy to parse. It is concise, though there is slight redundancy between 'previously stored' and 'as stored in the in-store dictionary'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with full annotations and an output schema, the description covers the essential details: what it returns, where the data lives, and the failure mode. Nothing critical is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter is already well-documented by the schema. The description adds minor context by clarifying that the name is used as the key 'as stored in the in-store dictionary', but this does not substantially change an agent's understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('Returns'), resource ('previously stored NumPy tensor'), and source ('in-memory tensor store'). It distinguishes this as a read-only retrieval tool relative to mutation siblings like create_tensor and delete_tensor, though it doesn't explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously stored' implies the tool should be used after a tensor has been created, and the ValueError note indicates a precondition that the name must exist. However, there is no explicit statement about when to choose this tool over siblings 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 26 tool updates
    • Changedadd_matrices3 fields changed
      • addedInput schema / properties / name_a / description
        Added value: +"Name of the first stored tensor."
      • addedInput schema / properties / name_b / description
        Added value: +"Name of the second stored tensor."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_matricesOutput",
        +  "type": "object"
        +}
    • Changedchange_basis3 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored square matrix to re-express."
      • addedInput schema / properties / new_basis / description
        Added value: +"The new basis as a nested list whose columns are the basis vectors."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "change_basisOutput",
        +  "type": "object"
        +}
    • Changedcompute_eigen2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored square matrix to analyze."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "compute_eigenDictOutput",
        +  "type": "object"
        +}
    • Changedcreate_tensor4 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name to store the tensor under; other tools take this name as their argument."
      • changedInput schema / properties / shape / description
        Previous value: -"Tensor shape as list of integers"New value: +"Tensor shape as a list of dimension sizes, e.g. [2, 3] for a 2x3 matrix."
      • changedInput schema / properties / values / description
        Previous value: -"Flat list of floats to fill the tensor"New value: +"Flat, row-major list of values; its length must equal the product of shape."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "create_tensorOutput",
        +  "type": "object"
        +}
    • Changedcurl6 fields changed
      • addedInput schema / properties / f_str / description
        Added value: +"Vector field in bracketed list form with components in x, y, z, e.g. \"[x+y, x, 2*z]\"."
      • addedInput schema / properties / point / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / point / description
        Added value: +"Optional [x, y, z] coordinates at which to evaluate the result numerically."
      • removedInput schema / properties / point / items
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / point / type
        Removed value: -"array"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "curlDictOutput",
        +  "type": "object"
        +}
    • Changeddelete_tensor2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored tensor to remove from the store."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "delete_tensorOutput",
        +  "type": "object"
        +}
    • Changeddeterminant1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored square matrix."
    • Changeddirectional_deriv5 fields changed
      • addedInput schema / properties / f_str / description
        Added value: +"Scalar function of x, y, z, e.g. \"x*y*z\"."
      • addedInput schema / properties / u / description
        Added value: +"Direction as [vx, vy, vz]; trailing components may be omitted."
      • addedInput schema / properties / u / maxItems
        Added value: +3
      • addedInput schema / properties / u / minItems
        Added value: +1
      • addedInput schema / properties / unit / description
        Added value: +"Normalize the direction to unit length before differentiating."
    • Changeddivergence6 fields changed
      • addedInput schema / properties / f_str / description
        Added value: +"Vector field in bracketed list form with components in x, y, z, e.g. \"[x+y, x, 2*z]\"."
      • addedInput schema / properties / point / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / point / description
        Added value: +"Optional [x, y, z] coordinates at which to evaluate the result numerically."
      • removedInput schema / properties / point / items
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / point / type
        Removed value: -"array"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "divergenceDictOutput",
        +  "type": "object"
        +}
    • Changedfind_orthonormal_basis1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored matrix whose column space to orthonormalize."
    • Changedgradient1 field changed
      • addedInput schema / properties / f_str / description
        Added value: +"Scalar function of x, y, z, e.g. \"x**2 + y*z\"."
    • Changedlaplacian2 fields changed
      • addedInput schema / properties / f_str / description
        Added value: +"Scalar function such as \"x**2 + y*z\", or a bracketed vector field such as \"[Fx, Fy, Fz]\"."
      • addedInput schema / properties / is_vector / description
        Added value: +"Set True when f_str is a vector field, so the Laplacian is taken componentwise."
    • Changedmatrix_inverse2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored square matrix to invert."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "matrix_inverseOutput",
        +  "type": "object"
        +}
    • Changedmultiply_matrices3 fields changed
      • addedInput schema / properties / name_a / description
        Added value: +"Name of the left-hand tensor in the product."
      • addedInput schema / properties / name_b / description
        Added value: +"Name of the right-hand tensor in the product."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "multiply_matricesOutput",
        +  "type": "object"
        +}
    • Changedplot_function10 fields changed
      • addedInput schema / properties / expr_str / description
        Added value: +"Function of x (2D curve) or of x and y (3D surface), e.g. \"x**2\" or \"sin(x**2 + y**2)\"."
      • addedInput schema / properties / grid / description
        Added value: +"Samples per axis. Higher is smoother and slower."
      • addedInput schema / properties / grid / maximum
        Added value: +1000
      • addedInput schema / properties / grid / minimum
        Added value: +10
      • changedInput schema / properties / grid / title
        Previous value: -"grid"New value: +"Grid"
      • changedInput schema / properties / grid / type
        Previous value: -"string"New value: +"integer"
      • addedInput schema / properties / xlim / description
        Added value: +"x-axis range as (xmin, xmax)."
      • changedInput schema / properties / xlim / prefixItems
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "integer"
        -  }
        -]New value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • addedInput schema / properties / ylim / description
        Added value: +"y-axis range as (ymin, ymax); used only for 3D surfaces."
      • changedInput schema / properties / ylim / prefixItems
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "integer"
        -  }
        -]New value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
    • Changedplot_vector_field10 fields changed
      • addedInput schema / properties / bounds / description
        Added value: +"Plot domain as (xmin, xmax, ymin, ymax, zmin, zmax)."
      • addedInput schema / properties / bounds / maxItems
        Added value: +6
      • addedInput schema / properties / bounds / minItems
        Added value: +6
      • addedInput schema / properties / bounds / prefixItems
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / bounds / title
        Previous value: -"bounds"New value: +"Bounds"
      • changedInput schema / properties / bounds / type
        Previous value: -"string"New value: +"array"
      • addedInput schema / properties / f_str / description
        Added value: +"3D vector field in bracketed list form, e.g. \"[z, -y, x]\"."
      • addedInput schema / properties / n / description
        Added value: +"Number of arrows sampled per axis; the grid holds n**3 points."
      • addedInput schema / properties / n / maximum
        Added value: +30
      • addedInput schema / properties / n / minimum
        Added value: +2
    • Changedqr_decompose2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored matrix to decompose."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "qr_decomposeDictOutput",
        +  "type": "object"
        +}
    • Changedrank1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored tensor."
    • Changedscale_matrix4 fields changed
      • addedInput schema / properties / in_place / description
        Added value: +"Overwrite the stored tensor with the scaled result. False returns the result and leaves the store untouched."
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored tensor to scale."
      • addedInput schema / properties / scale_factor / description
        Added value: +"Scalar value to multiply every element by."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "scale_matrixOutput",
        +  "type": "object"
        +}
    • Changedsubtract_matrices3 fields changed
      • addedInput schema / properties / name_a / description
        Added value: +"Name of the tensor to subtract from (the minuend)."
      • addedInput schema / properties / name_b / description
        Added value: +"Name of the tensor to subtract (the subtrahend)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "subtract_matricesOutput",
        +  "type": "object"
        +}
    • Changedsvd_decompose2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored matrix to decompose."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "svd_decomposeDictOutput",
        +  "type": "object"
        +}
    • Changedtranspose2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored tensor to transpose."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "transposeOutput",
        +  "type": "object"
        +}
    • Changedvector_cross_product3 fields changed
      • addedInput schema / properties / name_a / description
        Added value: +"Name of the first stored vector (the left operand)."
      • addedInput schema / properties / name_b / description
        Added value: +"Name of the second stored vector (the right operand)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "vector_cross_productOutput",
        +  "type": "object"
        +}
    • Changedvector_dot_product3 fields changed
      • addedInput schema / properties / name_a / description
        Added value: +"Name of the first stored vector."
      • addedInput schema / properties / name_b / description
        Added value: +"Name of the second stored vector."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "vector_dot_productOutput",
        +  "type": "object"
        +}
    • Changedvector_project3 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored vector to project."
      • addedInput schema / properties / new_vector / description
        Added value: +"The vector to project onto, as a flat list."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "vector_projectOutput",
        +  "type": "object"
        +}
    • Changedview_tensor2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the stored tensor to read back."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "items": {
        +            "items": {
        +              "items": {
        +                "type": "number"
        +              },
        +              "type": "array"
        +            },
        +            "type": "array"
        +          },
        +          "type": "array"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "view_tensorOutput",
        +  "type": "object"
        +}
  2. 26 tool updates
    • First observedadd_matrices
    • First observedchange_basis
    • First observedcompute_eigen
    • First observedcreate_tensor
    • First observedcurl
    • First observeddelete_tensor
    • First observeddeterminant
    • First observeddirectional_deriv
    • First observeddivergence
    • First observedfind_orthonormal_basis
    • First observedgradient
    • First observedlaplacian
    • First observedmatrix_inverse
    • First observedmultiply_matrices
    • First observedplot_function
    • First observedplot_vector_field
    • First observedqr_decompose
    • First observedrank
    • First observedscale_matrix
    • First observedsubtract_matrices
    • First observedsvd_decompose
    • First observedtranspose
    • First observedvector_cross_product
    • First observedvector_dot_product
    • First observedvector_project
    • First observedview_tensor

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Python-based MCP server providing mathematical computation tools and plotting utilities for a wide range of math topics including calculus, matrix operations, statistics, and more.
    22
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables mathematical operations and calculations through an MCP server interface. Provides computational capabilities accessible via HTTP endpoints for mathematical processing tasks.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server providing over 30 mathematical and statistical tools, enabling language models to perform calculations, trigonometry, statistics, combinatorics, and list operations through natural language.
    22 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.