Skip to main content
Glama
islobodan

Crucher MCP

set_angle_mode

Idempotent

Set the global trigonometric angle mode for calculations. Choose radians or degrees, individual function calls can override with a unit parameter.

Instructions

Set global trig angle mode. Individual calls with unit param override this.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeYes

Implementation Reference

  • The handler function that executes the set_angle_mode tool logic. Sets the global angleMode variable (line 109) to the provided mode ('degrees' or 'radians') and returns a confirmation message.
    /** Set the global angle mode. */
    set_angle_mode: ({ mode }) => {
        angleMode = mode;
        return `Angle mode set to ${mode}`;
    },
  • The input schema and tool definition for set_angle_mode. Defines the tool metadata (title, annotations, description) and inputSchema with a required 'mode' parameter constrained to enum ['degrees', 'radians'].
    {
        name: "set_angle_mode",
        annotations: {
            title: "Set Angle Mode",
            readOnlyHint: false,
            destructiveHint: false,
            idempotentHint: true,
            openWorldHint: false,
        },
        description: "Set global trig angle mode. Individual calls with unit param override this.",
        inputSchema: {
            type: "object",
            properties: {
                mode: { type: "string", enum: ["degrees", "radians"] }
            },
            required: ["mode"]
        }
    },
  • cruncher.js:136-138 (registration)
    set_angle_mode is registered as a main-thread instant tool (no worker overhead) in the MAIN_THREAD_TOOLS Set, ensuring it runs synchronously without spawning a worker.
    const MAIN_THREAD_TOOLS = new Set([
        // Angle management
        "set_angle_mode", "get_angle_mode",
  • cruncher.js:81-81 (registration)
    set_angle_mode is included in the 'standard' tool tier, meaning it is available by default when CRUNCHER_TOOL_SET is 'standard'.
    "set_angle_mode", "get_angle_mode",
  • The global angleMode state variable that set_angle_mode modifies. Defaults to 'degrees'.
    // --- Angle Mode State ---
    let angleMode = "degrees"; // Default unit for trigonometric functions
Behavior4/5

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

Annotations already indicate idempotentHint, non-destructive, and not read-only. The description adds that the mode is global and that individual calls can override, which provides behavioral context beyond annotations. It doesn't detail side effects on existing results, but the idempotentHint mitigates that need.

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 one sentence with an additional clarifying sentence about overrides. Every word adds value, no wasted text. It is front-loaded with the main purpose.

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 setter tool with one enum parameter, no output schema, and adequate annotations, the description provides enough context: global scope, set action, and override behavior. It could mention return value (likely nothing) but overall is sufficient.

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 has 0% description coverage, but the parameter 'mode' is self-explanatory with clear enum values (degrees, radians). The description does not explicitly describe the parameter or its allowed values, relying on the schema. For such a simple parameter, this is adequate, but the description could add value by stating 'mode must be degrees or radians'.

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 sets the global trig angle mode, using the verb 'set' and specific resource 'global trig angle mode'. It distinguishes from siblings like get_angle_mode by indicating it's a setter, and notes that individual calls with unit parameters override this global setting.

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: setting a global default that can be overridden by individual calls. However, it does not explicitly state when to use this tool versus alternatives (e.g., not needed if only one calculation with a specific unit), nor does it provide explicit when-not-to-use guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/islobodan/cruncher-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server