Skip to main content
Glama
youngminsw

Origin Pro MCP Server

by youngminsw

Origin Pro MCP Server

An MCP (Model Context Protocol) server that enables AI assistants like Claude to control OriginLab Origin Pro via COM automation. All operations are reflected in Origin's GUI in real-time — you watch as the AI creates worksheets, plots graphs, and styles figures.

What Can It Do?

  • Worksheet Management — Create workbooks, read/write data, import CSV/Excel, export CSV, column formulas, sort, transpose

  • Matrices & 3D — Matrix books, XYZ gridding, 3D surface/scatter, contour, heatmap, image plots

  • Graph Creation — Scatter, line, line+symbol, column, bar, area, pie, histogram, contour plots

  • Graph Layers & Axes — Log scales, dual Y axis, panels, reference lines, text annotations

  • Plot Styling — Colors, symbols, line width, publication-ready formatting in one call

  • Analysis — Curve fitting, FFT, smoothing, integration, differentiation, interpolation, peak finding

  • Statistics — Descriptive stats, two-sample t-test, frequency counts (via the stats and transform tools)

  • Project Management — New/save/load projects, export all graphs (with pixel-size control)

  • LabTalk Scripting — Direct LabTalk execution with destructive/file-overwrite commands blocked

This MCP server is intentionally Windows-runtime-only. The AI agent or MCP client can run from Windows or WSL, but the MCP server process that talks to Origin must be launched with Windows Python and pywin32. WSL/Linux can edit the project and run non-COM unit tests, but cannot directly control Origin COM.

Related MCP server: MCP Outlook

Quick Start

Agentic Setup (read this if you are an AI agent configuring this server)

Copy-paste rules to self-configure the origin-pro MCP with zero human steps:

  1. Environment requirement. This server only works on Windows with a licensed Origin/OriginPro install and Windows Python with pywin32. COM automation cannot run from WSL or Linux Python. If the agent runs in WSL, it must launch the Windows executable (uvx.exe / Windows origin-pro-mcp), never WSL Python.

  2. Preferred install path. Use uvx (zero setup) or pip install origin-pro-mcp. Both install to a Windows-local location and "just work":

    { "mcpServers": { "origin-pro": { "command": "uvx", "args": ["--quiet", "origin-pro-mcp"] } } }

    From WSL, call uvx.exe instead of uvx (see Option A below).

  3. Critical UNC rule. If you point at a local checkout from WSL, the repo MUST live under a Windows drive (e.g. C:\Users\YOU\Origin-Pro-MCP). Never reference it through a \\wsl.localhost\... UNC path: the background daemon (python -m origin_pro_mcp.daemon) cannot resolve a -m module or a working directory over UNC, so it fails silently (Origin never opens). uvx/pip install avoid this entirely.

  4. Discover skills first. After connecting, call the list_skills tool to see bundled skills (e.g. publication-figure) and when to use each, then get_skill(name) to load the full step-by-step instructions before producing figures/plots/analysis. No file copying is needed — skills ship inside the package and are exposed by the server.

1. Prerequisites

  • Windows with a licensed Origin/OriginPro installation that exposes the Automation Server

  • Python 3.10+ (Windows Python, not WSL)

Tested environment: Origin Pro 2020. Other Origin/OriginPro versions may work if they expose compatible COM Automation Server and LabTalk behavior, but they are not verified by this project yet.

2. Install & Configure

Option A: uvx (recommended — zero setup)

No manual install needed. The MCP client launches the server for you. Just add this to your Claude Code MCP settings when Claude Code is running on Windows:

{
  "mcpServers": {
    "origin-pro": {
      "command": "uvx",
      "args": ["--quiet", "origin-pro-mcp"]
    }
  }
}

uvx automatically downloads and runs the server in an isolated environment. Nothing else to install. The --quiet flag keeps first-run dependency messages out of your MCP client logs.

If Claude Code or another MCP client is running inside WSL, launch the same Windows server by calling Windows uvx.exe directly:

{
  "mcpServers": {
    "origin-pro": {
      "command": "uvx.exe",
      "args": ["--quiet", "origin-pro-mcp"]
    }
  }
}

For a local checkout before publishing/installing, point Windows uvx at the Windows path of the repo:

{
  "mcpServers": {
    "origin-pro": {
      "command": "uvx.exe",
      "args": ["--quiet", "--refresh", "--from", "D:\\04.Agent OS\\Origin-Pro-MCP", "origin-pro-mcp"]
    }
  }
}

Keep the command and args as separate JSON array entries. That avoids quoting problems when a Windows path contains spaces. If WSL cannot find uvx.exe, set command to the full WSL path for the Windows executable, for example /mnt/c/Users/YOU/.local/bin/uvx.exe.

WSL users — the package must live on a Windows-local path, not a \\wsl.localhost\... (UNC) path. The server runs a background daemon (python -m origin_pro_mcp.daemon); Windows cannot resolve a -m module or use a working directory over a UNC path, so launching it from a WSL-filesystem checkout fails silently (Origin never opens and a console window flashes). uvx/pip install already install to a Windows-local location, so they are unaffected. If you point at a local checkout, clone it under a Windows drive (e.g. C:\Users\YOU\Origin-Pro-MCP) and reference that path — do not point the MCP config at a repo inside the WSL filesystem.

Option B: pip install from PyPI

pip install origin-pro-mcp

Then configure Claude Code:

{
  "mcpServers": {
    "origin-pro": {
      "command": "origin-pro-mcp"
    }
  }
}

Option C: Clone and run directly

git clone https://github.com/youngminsw/Origin-Pro-MCP.git
cd Origin-Pro-MCP
pip install -e .
{
  "mcpServers": {
    "origin-pro": {
      "command": "origin-pro-mcp"
    }
  }
}

Note: If Claude Code runs in WSL, make sure the uvx or python command points to your Windows Python, not WSL Python. Origin COM only works from Windows.

3. Origin Startup

You do not need to start Python or Origin manually. The MCP client starts origin-pro-mcp, which launches an isolated Origin instance for the session. By default the Origin window is visible, so you watch the agent create worksheets and plot graphs in real time.

Display mode — set the ORIGIN_PRO_MCP_VISIBLE environment variable in your MCP config:

Value

Mode

Use for

1 (default)

Visible — Origin window shown

Watching the agent work interactively

0

Invisible — Origin runs hidden

Headless/batch runs, many concurrent agents, no window pop-ups

{ "mcpServers": { "origin-pro": {
  "command": "origin-pro-mcp",
  "env": { "ORIGIN_PRO_MCP_VISIBLE": "0" }
} } }

Reliability & recovery (advanced env vars)

The background daemon runs one isolated Origin instance per session. These environment variables harden it against a wedged Origin COM call (a synchronous operation that never returns) and against destructive mistakes. Some default off; the wedge/data-safety ones now default on because they are safe (see each row). Set any to off to opt out.

Variable

Default

Effect

ORIGIN_PRO_MCP_DISPATCH_TIMEOUT

90

Soft budget (seconds) for each tool dispatch. If Origin doesn't respond within it, a persistent per-session watchdog is polled for the modal dialog that is blocking it: when one is found, the error names its exact title and says whether it was already auto-dismissed (retry the call) or is waiting for you to close it by hand; if none is found it falls back to the generic "most likely a modal dialog" message. NOTHING is killed at this stage. Set off/0 to disable.

ORIGIN_PRO_MCP_DISPATCH_KILL_GRACE

90

Grace (seconds) AFTER the soft warning before Origin is force-killed as a last resort (so a wedged session can never permanently hold a pool slot). Total time to a hard reset = timeout + grace (default 180s). Set off/0 for no warning phase (legacy: force-kill straight at the soft budget).

ORIGIN_PRO_MCP_DIALOG_AUTODISMISS

on

Every session runs a persistent watchdog that polls (~2s) for modal dialogs owned by its Origin process and records their titles. By default it also auto-dismisses (closes) each one it finds, so a startup or mid-session dialog no longer freezes the session. Set to 0/off/false/no to keep detection and reporting (dispatch-timeout errors still name the dialog) without the daemon closing it — you then close it by hand in the Origin window.

ORIGIN_PRO_MCP_AUTOSAVE

on

Save the project in place (its own file, same name — like pressing Save) before a destructive op (delete graph/plot, column deletion, project load/new, overwriting a populated sheet, or a confirmed destructive run_labtalk), so a bad edit is recoverable by reloading. It never writes a differently-named copy, and never overwrites a real file with an empty/blanked project (N5-safe). Only saves a project that already has a file on disk. Set off to disable autosave entirely.

ORIGIN_PRO_MCP_AUTOSAVE_INTERVAL

300

Also save the project in place every N seconds (proactive autosave), not just before destructive ops. Applies to agent-isolated sessions with a saved project; the Origin you ATTACH to is left to you. off/0 disables periodic autosave (preflight still runs).

ORIGIN_PRO_MCP_AUTOSAVE_REQUIRED

1

When autosave is on and a required preflight in-place save fails, the destructive op is not run and an error is returned. Set 0 to proceed without saving.

ORIGIN_PRO_MCP_REAP_CLOSE

off

Session lifecycle: by default a session ending gracefully (idle / client disconnect) is detached — the session's worker thread stops but your Origin window is left exactly as it was (original save path and unsaved edits intact) so you keep the project. Set 1 to restore the old save-a-recovery-copy-and-close behavior. (A wedged session's Origin is still force-killed — the only way to free a worker stuck in a synchronous COM call.)

ORIGIN_PRO_MCP_SWEEP_ORPHANS

off

By default a restarting daemon does not kill leftover Origin windows (so a restart never destroys a project you kept open). Set 1 to have startup reclaim leftover Origins (orphan cleanup, at the cost of closing kept windows).

ORIGIN_PRO_MCP_NO_SPAWN

off

Set 1 to stop the shim from auto-respawning the daemon. Use it to shut the daemon down from the process manager and keep it stopped — tool calls then return a clear "daemon not running" error instead of relaunching it.

ORIGIN_PRO_MCP_ATTACH

off

Set 1 so this session attaches to the Origin you already have open (the shared ApplicationSI instance) instead of spawning a fresh isolated one — the agent then works on your currently-open project. Only one session can attach (a second falls back to an isolated instance); other agents keep their own isolated Origins. The attached instance is never force-killed by the daemon (it's yours).

Per-call override: run_labtalk(script, confirm=True, timeout=120) bounds that one call even when a longer/shorter budget than ORIGIN_PRO_MCP_DISPATCH_TIMEOUT is needed (and works even when the timeout is off).

Rollback: unset any of these (or set the timeout to off) to return to the prior behavior — no code change or redeploy required.

Session lifecycle & restarts

Each MCP client process gets its own daemon session (its own isolated Origin). Because sessions and the daemon can restart independently, the daemon keeps a small ledger sidecar (sessions.json, next to the private lockfile) recording each session's last Origin PID and project path. When a new session starts, the daemon reads that ledger once and, on the first successful tool response, piggybacks a short one-time [origin-mcp] notice telling the agent what happened — so it continues the work instead of silently rebuilding into an empty window. What you may see:

  • Your MCP client restarted (new session). Your previous Origin window was detached, not closed (see ORIGIN_PRO_MCP_REAP_CLOSE): the notice says it is still open with your project and to save/close it in the GUI before reloading, or just work in the fresh instance.

  • The daemon restarted and your old Origin is gone. The notice says your project is not loaded and to reopen it with load_project.

  • Ghost windows. Leftover Origins from earlier sessions are preserved by default, so they can accumulate. The notice summarizes how many are still open; close them in the GUI once saved, or set ORIGIN_PRO_MCP_SWEEP_ORPHANS=1 so a restarting daemon reclaims them.

  • Attach (ORIGIN_PRO_MCP_ATTACH=1). If you got the user's open Origin, the notice reminds you that autosave and force-recovery are disabled there — save explicitly and avoid destructive ops. If another session already holds the single attach slot, the notice says you got an isolated Origin instead.

Separately, load_project appends a one-line collision warning to its result when the ledger shows another live Origin still holding the same project file (saving from both would clobber it — close the other first). The notice and the warning are advisory strings only; they never block a call, and a missing/corrupt ledger is treated as empty.

4. Use It

Just ask Claude to work with Origin:

"Create a scatter plot from this data: x=[1,2,3,4,5], y=[2.1,4.0,5.9,8.1,10.0]"
"Apply publication styling to Fig1 with axis labels Temperature (K) and Absorbance (a.u.)"
"Fit a Gaussian to the data in Book1"
"Export all graphs to C:\Users\me\figures\"

File paths can be Windows style (C:\Users\me\fig.png) or WSL style (/mnt/c/Users/me/fig.png) — the server converts WSL paths automatically, so agents running in WSL can pass their native paths.

Agent Location vs Server Runtime

The agent does not have to run on Windows. These setups are valid:

  • Windows agent -> Windows origin-pro-mcp server -> Origin Pro

  • WSL agent -> Windows origin-pro-mcp server -> Origin Pro

The unsupported setup is WSL/Linux origin-pro-mcp server -> Origin Pro, because COM is a Windows API.

Version Support

This project is currently verified only with Origin Pro 2020. The implementation uses Origin's COM Automation Server and LabTalk, which exist across multiple Origin releases, so other versions may work. Treat them as unverified until someone runs the test suite and a real graph/export smoke test on that version.

Direct LabTalk Safety

The run_labtalk tool is available by default for styling, analysis, graph tweaks, and other advanced Origin operations. It blocks common destructive or file-writing LabTalk commands such as project reset, delete, save/open, file dialogs, external script execution, and graph export. Use the typed tools for saving, loading, importing, and exporting.

This is an accident-prevention guard, not a security sandbox for untrusted code.

LabTalk Gotchas (Origin 2020, styling-report fixes)

  • One flag per set call. set <ds> -c color(255,0,0) -cf color(255,0,0); (combining flags in ONE command) silently wipes the plot to black; the same applies to -k/-kf/-z combined (can blank the symbol). Send each flag as its own set <ds> -flag val; call.

  • Tick-label offset is layer.<ax>.label.offsetV / .offsetH (vertical for the x axis, horizontal for y), in % of the tick-label font size, positive = toward the axis. The plausible-looking names .offset, .voff, .hoff, .offsetX/.offsetY, .xOffset/.yOffset are all silent no-ops (they "read back" a value but never move the labels). Use set_tick_labels(offset_pct=).

  • Never write layer.x2.majorTicks / layer.y2.majorTicks. Setting it to 0 wipes the number labels on ALL FOUR axes, not just the opposite side. Use layer.<ax>.ticks = 0 (or axis(op="tick", axis="top"/"right", tick_direction="none")) to remove tick marks instead.

  • Units differ between line width and error-bar width. set -w is ~200 units per point (500 = 2.5pt); error bars use -erw <points> / -erwc <cap width> directly in points — do not reuse the -w scale for error bars, and never style them via a bare set -w/-ew. set_plot_style(error_bar_width=, error_cap_width=) handles the units.

  • The active window matters. layer.*, col(), and %C all target whatever window is currently active — pass window=<name> to run_labtalk to activate it first, or prefer the typed tools (graph_name/book_name params never depend on activation state).

  • A freshly created page needs a moment before its FIRST styling/read/ export commandcreate_graph/add_plot_to_graph/ungroup_plots handle this internally now; a raw run_labtalk sequence right after CreatePage/plotxy may still need its own settle.

  • Symbol shape -k codes (Origin 2020, re-verified live): 1=square, 2=circle, 3=triangle-up, 4=triangle-down, 5=diamond, 6=plus, 7=x/cross, 8=asterisk. Codes 9-12 render as a dash/vertical-bar/literal glyph, not useful marker shapes.

Architecture

Claude Code (WSL or Windows)
    |  stdio (MCP protocol)
    v
MCP Server (Windows Python + win32com)
    |  COM automation
    v
Origin Pro (GUI visible in real-time)

Direct CLI (no MCP client)

Every MCP tool is also a plain command, so the repo alone can drive Origin — no MCP client, no per-task scripts. Same Windows-runtime rule applies (Windows Python + pywin32 + Origin).

# List all tools with their arguments
python -m origin_pro_mcp.cli list

# Call any tool: simple flags...
python -m origin_pro_mcp.cli list_worksheets
python -m origin_pro_mcp.cli apply_publication_style --graph_name Fig1

# ...or --json for values with spaces/paths (recommended for scripting)
python -m origin_pro_mcp.cli apply_publication_style --json '{"graph_name": "Fig1", "x_label": "Temperature (K)"}'
python -m origin_pro_mcp.cli export_graph --json '{"graph_name": "Fig1", "file_path": "/mnt/c/Users/me/fig1.png"}'

After pip install (or via uvx) the same is available as the origin-pro-cli command, e.g. origin-pro-cli list_worksheets.

Running a WSL agent? Invoke Windows Python with the package on the path, for example from the repo's src/ directory:

cd src && /mnt/c/.../python.exe -m origin_pro_mcp.cli list_worksheets

The CLI reflects over the same tool registry as the MCP server, so it always exposes exactly the tools listed below.

Available Tools (45 total)

Several tools are dispatchers: one tool name with an op/kind/method argument that selects the specific action, so a handful of tools cover what used to be many single-purpose ones.

Project Management

Tool

Description

new_project

Create new empty Origin project

save_project

Save project to .opju file

load_project

Open existing .opj/.opju file

export_all_graphs

Export every graph in the project to image files

save_graph_template

Save a graph as a reusable .otpu/.otp template

Note: create_worksheet, create_matrix, create_graph, create_matrix_plot, import_data, and worksheet_to_matrix return a JSON string (not a sentence) with the actual assigned name — Origin may rename on collision, so read "name" from the result rather than assuming the requested name was used.

Return-format convention: tools that create or read structured data (worksheets, graphs, matrices, imports, fits, stats, transforms) return a JSON string to parse; tools that apply styling or a one-off action (the Styling and Advanced sections below, plus most of Graphing) return a plain human-readable status string. A few dispatcher tools (stats, transform) mix both across their op/method choices — each is documented per-tool.

Worksheet Data

Tool

Description

create_worksheet

Create new workbook

set_worksheet_data

Write column data (JSON arrays)

get_worksheet_data

Read worksheet data as JSON (empty cells → null)

import_data

Import a CSV/text or Excel file (format="auto"/"csv"/"excel"); CSV/text import suppresses Origin's auto-generated sparkline mini-graph windows by default (sparklines=False). file_path may also be a directory or glob to batch-import every matching file, each into its own book

export_worksheet

Export a worksheet to CSV/text

list_worksheets

List open workbooks, graphs, and matrices

manage_columns

Add, delete, or edit columns — op="add"/"delete"/"properties"/"formula"

sort_worksheet

Sort rows by a column (asc/desc)

transpose_worksheet

Transpose rows and columns

Matrix

Tool

Description

create_matrix

Create a matrix book

set_matrix_data / get_matrix_data

Write / read a 2D grid

worksheet_to_matrix

Grid scattered XYZ into a matrix (xyz2mat)

create_matrix_plot

Surface (3D), contour, heatmap, or image from a matrix (with a data-linked color scale)

Graphing

Tool

Description

create_graph

Create graph (scatter, line, line+symbol, column, bar, area, pie, histogram, box, contour, 3d_scatter); optional template= builds it from a saved .otpu/.otp (2D XY types only)

add_plot_to_graph

Add another dataset to an existing graph

delete_graph

Delete a graph window

remove_plot

Remove one data plot from a graph, addressed by index (COM DataPlot.Destroy()) — removes only that plot even if the same dataset is plotted more than once

set_error_bars

Attach Y/X error bars to an existing plot from an error column (no duplicate)

set_layer_geometry

Set a layer's panel position/size (left/top/width/height)

add_second_y_axis

Add a right-Y layer and plot on it

add_layer

Add a panel/axis layer (right-y, top-x, inset, independent)

axis

Configure axes — op="labels"/"range"/"scale"/"tick"/"frame"; op="labels" also sets the right/top-axis title on axis="right"/"top"

annotate

Add an annotation — kind="reference_line"/"text"/"line"/"arrow"

colormap

Apply a palette and/or set the Z color-scale range on a colormapped graph

export_graph

Export to an image file — raster (png/jpg/tif/bmp) or vector (pdf/eps/emf, resolution-independent); width= sets an exact pixel width for raster (default ~1200px wide, height follows the graph's aspect ratio)

ungroup_plots

Break a plot group so each curve can be colored independently

Styling

Tool

Description

apply_publication_style

One-call publication formatting (recommended)

set_plot_style

Set color, line width, symbol shape/size, and open/solid marker

set_graph_font

Set font family, size, and optional bold

set_legend

Configure legend text and position

set_tick_labels

Tick-label numeric format (decimal/scientific/engineering), bold, decimal places, axis→label offset (offset_pct, % of font; +toward axis)

Analysis

Tool

Description

curve_fit

Curve fitting: parameters ± std errors, R², SSR, reduced χ²; optional plot_on_graph, x_min/x_max to restrict the fit range, and peaks=N (gauss/lorentz/voigt) for multi-peak deconvolution

list_fitting_functions

Show available fit functions

transform

Numerical transform on an XY curve — method="integrate"/"differentiate"/"smooth"/"interpolate"/"fft"/"find_peaks"; smooth takes smooth_method="savitzky_golay"/"adjacent"/"binomial"

stats

Statistics on worksheet columns — op="column"/"compare_means"/"frequency"

Advanced

Tool

Description

run_labtalk

Execute LabTalk with destructive/file-writing commands blocked; optional capture reads variables back. If a 2+ statement script fails as a whole, it is automatically retried statement-by-statement and each statement's OK/FAILED status is reported (partial application is possible — this is intentional)

get_labtalk_variable

Read a LabTalk variable value

Skills

Tool

Description

list_skills

List bundled skills (name, title, when to use)

get_skill

Load a skill's full markdown instructions by name

Example: Publication-Quality Figure

# 1. Start fresh
new_project()

# 2. Create data
create_worksheet(book_name="Data")
set_worksheet_data(
    book_name="Data", sheet_name="Sheet1",
    columns="[[300,350,400,450,500,550,600],[0.12,0.35,0.89,1.62,1.95,1.92,1.25],[0.08,0.22,0.62,1.35,1.88,1.90,1.12]]",
    column_names="Temperature,Pristine,Annealed"
)

# 3. Create line+symbol graph
create_graph(graph_name="Fig1", data_book="Data", data_sheet="Sheet1",
             x_col=1, y_col=2, plot_type="line+symbol")
add_plot_to_graph(graph_name="Fig1", data_book="Data", data_sheet="Sheet1",
                  x_col=1, y_col=3, plot_type="line+symbol")

# 4. One call does everything: colors, fonts, ticks, frame, legend
apply_publication_style(
    graph_name="Fig1",
    x_label="Temperature (K)",
    y_label="Absorbance (a.u.)",
    x_min=280, x_max=620, y_min=0, y_max=2.2,
    legend_entries="Pristine,Annealed",
    legend_position="top-right"
)

# 5. Export
export_graph(graph_name="Fig1", file_path="C:\\Users\\me\\fig1.png")

Result: A publication-ready figure with bold Arial labels, colorblind-safe colors (blue circles + red triangles), filled symbols, solid lines, inward ticks, closed frame, and positioned legend.

Claude Code Skill: Publication Figure

This server ships a bundled skill (src/origin_pro_mcp/skills/publication-figure.md) that teaches Claude how to create journal-quality figures step by step. No manual copying is needed — the skill is packaged inside the wheel and exposed over MCP, so any connecting agent discovers it automatically:

  1. Call the list_skills tool — it returns each skill's name, title, and when to use it (e.g. publication-figure).

  2. Call get_skill("publication-figure") to load the full markdown instructions.

  3. Each skill is also available as an MCP resource at skill://<name> (e.g. skill://publication-figure) for clients that browse resources.

When you ask Claude to "make a publication figure", it can autonomously pull this skill and follow its workflow:

  • Ask about data source, figure type, target journal

  • Use colorblind-safe color palette (steel blue → rose → teal → amber → purple → gray cyan; see the Color Palette table below)

  • Apply proper typography (Arial, bold, correct sizes)

  • Follow a pre-export checklist

The skill also documents COM quirks observed while testing on Origin Pro 2020 — what works, what doesn't, and tested workarounds. This is invaluable if you need to customize beyond apply_publication_style.

Customizing the Skill for Your Style

The included skill is a generic starting template for paper-grade Origin figures. You should copy and customize it to match your lab's habits, target journals, and visual taste:

  • Font: Change from Arial to your journal's preferred font (e.g., Helvetica, Times New Roman)

  • Font sizes: Adjust axis title/tick label/legend sizes to match your journal's figure guidelines

  • Color palette: Replace the default colorblind-safe palette with your group's standard colors

  • Default export path: Set to your working directory

  • Figure recipes: Add templates for your common figure types (XRD patterns, IV curves, etc.)

  • Journal presets: Add specific formatting rules for your target journals (Nature, ACS, RSC, etc.)

Pull the skill with get_skill("publication-figure") (or copy src/origin_pro_mcp/skills/publication-figure.md) into your project and edit freely — it's meant to be a starting point, not a rigid template.

Key Origin Pro 2020 COM Quirks (documented in skill)

Issue

Workaround

Bold axis titles (xb.bold) doesn't exist

Use \b(text) markup in xb.text$

legend.text$ doesn't support multiline via COM

Set column Long Names, then legend -r

legend.x/y uses data coordinates, not %

Calculate from layer.x.from/to

%C notation fails via COM

Use actual plot names from DataPlots

expGraph needs path:=/filename:=/overwrite:=replace (a full path or missing args opens a dialog)

export_graph writes the file directly via expGraph, no clipboard involved

nlr.r2 returns 0 after nlend

Read statistics BEFORE nlend

Combining multiple -flags in ONE set command corrupts the plot (color reset to black, or symbol blanked)

Send one set <ds> -flag val; call per flag, not a delay — see "LabTalk Gotchas" above

layer.x2.majorTicks/layer.y2.majorTicks wipes ALL axes' number labels

Use layer.<ax>.ticks = 0 instead

[Book]Sheet!col(n).type = ... silently ignored

Activate the sheet, then use wks.col(n).type

set <plot> fails when the graph isn't active

Run win -a <graph> before set commands

Typed LabTalk locals (int x = ...) unreadable later

Use untyped assignment to read values back via COM

A graph loaded from a .opju can report zero data plots over COM (per-curve styling/ungrouping silently no-ops)

The core per-curve/axis/frame tools (set_plot_style, ungroup_plots, remove_plot, axis range/scale/tick) now activate the page and re-acquire a fresh layer handle before each call; if the layer is still empty, the tool raises an actionable error instead of returning fake success — recreate the graph in-session if you hit it. Text/font/legend tools (set_graph_font, set_legend) still go through plain LabTalk and can silently no-op on a loaded graph — verify those visually

Dual-Y right axis looks unstylable via layer.y.*

Colour it via layer 2's y2: add_second_y_axis(..., color="r,g,b"), or layer.y2.color (line) + layer.y2.label.color (tick numbers) with the graph active + page.active=2

Heatmap/colormap stuck at ~8 discrete bands

colormap(graph, levels=32..64) (uses numMajorLevels + setLevels(1) + updateScale()); a palette recolors even when the PNG byte-size is unchanged

Hard limitations (no scriptable path on Origin 2020)

Not scriptable

Do this instead

Bar/column FILL PATTERN (hatch) — every route no-ops (set -pfp/-pfw/-pfc, indexed -pfpd/-pfpi, rp.pattern.*, layer.plotN.pattern.*), verified live

Apply hatching in PowerPoint/Illustrator, or distinguish bars by solid color

Plot TRANSPARENCY / alpha — set -paap/-paal/-paas, rr.transparency, layer.transparency, page.transparency all no-op, verified live

Use fully-opaque colors, or composite the alpha in PowerPoint (unconfirmed future candidate: originpro Python Plot.transparency())

Supported Plot Types

Type

Description

Data

scatter

Scatter plot (symbols only)

X, Y

line

Line plot (no symbols)

X, Y

line+symbol

Line with symbols (recommended for publications)

X, Y

column

Vertical bar chart

X, Y

bar

Horizontal bar chart

X, Y

area

Area plot

X, Y

pie

Pie chart

X, Y

histogram

Histogram

single Y column

box

Box chart

single Y column

contour

Filled contour map

X, Y, Z (pass z_col)

3d_scatter

3D scatter (OpenGL)

X, Y, Z (pass z_col)

Matrix plots (surface, contour, heatmap, image) come from a matrix via create_matrix_plot.

Supported Fitting Functions

Category

Functions

Linear

line

Polynomial

poly2, poly3, poly4, poly5

Exponential

exp1, exp2, expgrow1, expdecay1

Peak

gauss, lorentz, voigt

Growth/Sigmoidal

boltzmann, hill, logistic, lognormal

Other

power, sine

curve_fit returns the fitted parameter values with standard errors plus R², SSR, reduced χ², and DoF. Exceptions: power fits and draws the curve, but Origin 2020 does not expose its parameter values over COM, so only the statistics are returned; and a line fit without plot_on_graph uses the fast fitlr path, which returns intercept/slope values and R² only (no standard errors, SSR, χ², or DoF — pass plot_on_graph to get them). Use list_fitting_functions to see the parameter names for each function.

Color Palette

apply_publication_style uses a muted pastel palette (no pure primaries — easier on the eyes, survives grayscale printing, colorblind-distinguishable):

Order

Color

RGB

1st

Soft steel blue

(93, 143, 179)

2nd

Muted rose

(204, 102, 119)

3rd

Muted teal

(68, 170, 153)

4th

Soft amber

(221, 170, 102)

5th

Soft purple

(153, 136, 187)

6th

Gray cyan

(119, 170, 187)

Error bars automatically match their data series color. The fit curve drawn by curve_fit(plot_on_graph=...) uses a muted brick red (170, 68, 80).

Tip: Never use red + green as the only two colors — colorblind users cannot distinguish them.

Troubleshooting

Problem

Solution

"Could not connect to Origin via COM"

Check that Origin/OriginPro is installed and licensed; if it is, run Origin once as administrator to re-register the Automation Server

Tools timeout / "Origin has not responded"

A persistent watchdog polls for modal dialogs on your session's Origin process; by default it auto-dismisses them, and a timeout error names the dialog's exact title and whether it was closed for you. If auto-dismiss is off (ORIGIN_PRO_MCP_DIALOG_AUTODISMISS=0), switch to the Origin window and close/confirm the named dialog yourself — the operation then finishes on its own

"No editable data plots found" on set_plot_style/ungroup_plots/axis ops, or "did not take effect" on an axis-range call

The graph was loaded from a .opju project file in a state Origin freezes over COM (its layer reports zero data plots even after activating the window). This used to silently no-op; it is now a raised error instead of a fake success. Recreate the graph in-session (create_graph/plotxy) or reopen the project fresh — no manual export-and-compare-pixels needed to detect it anymore

"Export failed: ... was not created"

export_graph writes the file directly via expGraph (no clipboard); this means Origin (Windows) could not write to that path — use a Windows path (C:\...) or /mnt/<drive>/... instead of a WSL/Linux path

"... is a Linux/WSL path that Origin ... cannot access"

Any file-path argument (import/export/save/load) given as a bare POSIX path (e.g. /tmp/x.csv) is now rejected upfront with this error rather than silently resolving against the wrong drive — use /mnt/<drive>/... (auto-translated) or a native Windows path

"Window 'X' not found" errors

The error lists every open workbook/graph — use one of those names (Origin may have renamed the window if the name was taken)

Legend missing after styling

Legend uses data coordinates — verify axis range is set before positioning

Symbols appear hollow

Do NOT use set -d flag (it's for dash patterns, not fill)

License

MIT

Available Tools

56 tools
add_arrowA

Draw an arrow from (x1,y1) to (x2,y2) at data coordinates.

The arrowhead sits at the (x2,y2) end (and at the start too when double_headed). Set double_headed=False for a single-ended arrow.

Args: graph_name: Graph name x1, y1: Tail (start) point in data coordinates x2, y2: Head (end) point in data coordinates double_headed: Put an arrowhead on both ends head_size: Arrowhead size in points (default 10)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
x1Yes
y1Yes
x2Yes
y2Yes
double_headedNo
head_sizeNo

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?

No annotations provided, so the description carries full burden. It explains arrowhead placement (at (x2,y2) and start if double_headed), double_headed option, and head_size default (10). This is sufficient for basic behavioral understanding.

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

Conciseness4/5

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

Well-structured with a clear initial sentence. The Args section is slightly lengthy but necessary given no schema descriptions. Could be condensed, but no redundancy.

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?

Covers all essential information: what the tool does, parameters with explanations, and return type (success message). Given no annotations, this is adequate for a tool with 7 parameters and an output schema.

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

Parameters5/5

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

Schema has 0% description coverage (only titles/types), so the description must add meaning. It provides detailed explanations for all parameters: graph_name, x1,y1 (tail), x2,y2 (head), double_headed option, head_size default.

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 'Draw an arrow from (x1,y1) to (x2,y2) at data coordinates', specifying the verb (draw), resource (arrow), and coordinates. It differentiates from siblings like add_line (line without arrow) and add_text_annotation (text).

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?

No explicit guidance on when to use this tool vs alternatives. The description implies use for directional annotations, but does not mention cases where add_line or other annotation tools might be more appropriate.

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

add_columnsA

Append empty columns to a worksheet.

Args: book_name: Workbook name sheet_name: Sheet name count: Number of columns to add (default 1)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only mentions appending empty columns and a success message, but omits behavioral details such as column insertion position, effect on existing data, or error 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 exceptionally concise: one sentence for purpose, then a clean Args/Returns block. Every element earns its place with no redundancy.

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's simplicity and the presence of an output schema, the description covers essential parameters but lacks behavioral context (e.g., where columns are appended, count limits, error scenarios). It is functional but minimally 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?

With 0% schema description coverage, the description must compensate. It provides basic meaning for each parameter (e.g., 'count: Number of columns to add') but adds no extra constraints, format rules, or nuances beyond the parameter names.

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 verb (append), resource (empty columns), and target (worksheet). It distinguishes the tool from its sibling 'delete_columns' by specifying the opposite 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 the tool is used to add columns but provides no explicit guidance on when to use it versus alternatives (e.g., adding other elements like rows). No context on prerequisites or exclusion criteria.

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

add_layerA

Add a new layer (panel/axis) to a graph.

Args: graph_name: Graph name layer_type: right-y, top-x, inset, or independent

Returns: Success message naming the new layer index

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
layer_typeNoright-y

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It conveys that the tool adds a layer and returns a success message with the new layer index. It does not cover side effects, authentication, or error scenarios, but it adequately describes the core action and outcome.

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, well-structured docstring with a clear purpose, args list, and returns. Every sentence adds value without redundancy, and the most important information comes first.

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 tool with simple inputs and an output schema, the description covers the essential aspects. It could be more complete by specifying that the graph must exist or describing the layer-index format, but it is sufficient for most use cases.

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?

The description explains both parameters beyond the schema: layer_type lists possible values (right-y, top-x, inset, independent). Graph_name is minimally described but sufficient. Given 0% schema description coverage, the description adds essential context.

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 ('Add a new layer') and the target resource ('graph'), with examples of layer types. This immediately distinguishes it from sibling tools like add_second_y_axis, which are more specific.

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 lists valid layer types, giving agents a hint for correct usage. However, it does not explicitly state when to choose this tool over alternatives (e.g., add_second_y_axis) or mention prerequisites like graph existence.

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

add_lineA

Draw a straight line between two data points on a graph.

Useful for guides, connectors, and trend indicators. For a line with an arrowhead, use add_arrow instead.

Args: graph_name: Graph name x1, y1: Start point in data coordinates x2, y2: End point in data coordinates

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
x1Yes
y1Yes
x2Yes
y2Yes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

No annotations provided; description mentions it draws a line and returns a success message but does not disclose potential side effects, permissions, or whether the line is permanent. Adequate but not rich.

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?

Very concise with clear structure: purpose, usage, arguments, returns. Only 6 lines, front-loaded with key information.

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?

Covers purpose, usage, all 5 parameters, return type, and alternative tool. Complete for a simple drawing tool with an output schema.

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?

Description explains each parameter in the Args section, including that coordinates are in data coordinates, adding meaning beyond schema titles (0% schema description coverage).

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?

Description states 'Draw a straight line between two data points on a graph' with specific verb+resource and distinguishes from sibling add_arrow.

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

Usage Guidelines5/5

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

Explicitly says 'Useful for guides, connectors, and trend indicators' and provides alternative tool: 'For a line with an arrowhead, use add_arrow instead.'

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

add_plot_to_graphA

Add another data series to an existing graph.

Args: graph_name: Existing graph name data_book: Source workbook name data_sheet: Source sheet name x_col: X column number (1-based) y_col: Y column number (1-based) plot_type: Plot type (scatter, line, line+symbol, etc.) y_error_col: Optional Y error column (1-based, 0=none)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
data_bookYes
data_sheetYes
x_colYes
y_colYes
plot_typeNoscatter
y_error_colNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It explains parameters and returns a success message but does not disclose side effects, permission needs, or behavior on overwriting vs appending. Adequate but incomplete.

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?

Short introductory sentence followed by a clear, structured list of arguments. Every sentence is purposeful with no redundancy.

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 tool with 7 parameters and no annotations, the description covers parameters well but omits error handling details and output schema specifics (only says 'Success message'). Mostly complete.

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

Parameters5/5

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

Schema coverage is 0%, yet the description provides detailed explanations for each parameter: meaning of column numbers (1-based), optional error column (0=none), and plot_type options. This adds 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?

Description clearly states 'Add another data series to an existing graph', specifying the action and resource. It distinguishes from siblings like create_graph or add_arrow by focusing on data series addition.

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 adding data to an existing graph but does not explicitly state when not to use or mention alternatives. The context is clear enough for an agent to decide.

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

add_reference_lineA

Draw a horizontal or vertical reference line at a data value.

Args: graph_name: Graph name orientation: "horizontal" (constant Y) or "vertical" (constant X) value: Axis value where the line is drawn

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
orientationYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description fails to disclose behavioral traits such as whether the line is added cumulatively, any side effects, or permission requirements. It only mentions the parameters and a generic success message.

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 two sentences plus a bullet list for parameters, front-loading the main action with no wasted words.

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 tool with 3 parameters and an output schema, the description covers the core function and return type but misses usage guidelines and deeper behavioral 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 0%, so the description adds meaning by listing and explaining each parameter (graph_name, orientation, value) in the args section, though it lacks constraints or examples.

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?

Description clearly states the tool draws a horizontal or vertical reference line at a data value, specifying the verb 'draw' and resource 'reference line', and distinguishes from siblings like 'add_line' or 'add_arrow'.

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 for adding reference lines to graphs but does not provide explicit when-to-use or when-not-to-use guidance compared to alternatives like 'add_line' or 'add_arrow'.

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

add_second_y_axisA

Add a right-side Y axis layer and plot a second dataset on it.

Args: graph_name: Existing graph data_book, data_sheet: Source data x_col, y_col: Columns for the right-axis series (1-based) plot_type: scatter, line, line+symbol, column, bar, area

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
data_bookYes
data_sheetYes
x_colYes
y_colYes
plot_typeNoline+symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries full burden for behavioral disclosure. It explains arguments but does not mention that the tool modifies an existing graph, requires the graph to already exist, or that it adds a new axis and series. Side effects are not discussed.

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: a one-sentence summary followed by a structured bullet list of arguments and a return statement. Every sentence adds value with no redundancy.

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 has 6 parameters and an output schema (not shown), the description covers purpose and parameters well. However, it could mention prerequisites (graph must exist) and that it modifies the existing graph. Overall, it is mostly complete.

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

Parameters5/5

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

Schema description coverage is 0%, and the Description compensates fully by explaining each parameter: graph_name as 'Existing graph', data_book/sheet as source data, x_col/y_col as 1-based columns, and plot_type with allowed values (scatter, line, etc.). This adds significant meaning beyond the schema's type-only definitions.

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 'Add' and resource 'right-side Y axis layer', clearly distinguishing it from siblings like add_layer or add_plot_to_graph. It also mentions plotting a second dataset, making the purpose unmistakable.

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 does not explicitly state when to use this tool versus alternatives like add_layer or add_plot_to_graph. Context is implied by the name and description, but no exclusions or conditional guidance are provided.

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

add_text_annotationA

Add a text label to a graph at data coordinates.

Args: graph_name: Graph name text: Annotation text (no quotes, line breaks, or ';') x: X position in data coordinates y: Y position in data coordinates name: Internal object name (letters/numbers/underscore)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
textYes
xYes
yYes
nameNoanno

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?

No annotations are present; the description gives basic behavioral info (returns success message, text constraints) but omits details about side effects (e.g., overwriting existing annotations), coordinate validation, or impact on the graph state.

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 reasonably concise with clear Args/Returns formatting. It is front-loaded with the main action. Minor improvement: could be slightly more compact by integrating the parameter notes inline.

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 no annotations and a moderate number of parameters, the description covers parameter semantics well but lacks usage context and behavioral details (e.g., error handling, coordinate system). The output schema exists but is not shown; the description at least mentions the return value.

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

Parameters5/5

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

The description fully explains all 5 parameters: graph_name, text (with restriction on characters), x, y, and name (default). This adds crucial meaning beyond the input schema's minimal titles, compensating for 0% schema coverage.

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 'Add a text label to a graph at data coordinates,' specifying the action (add) and resource (graph) with the type of annotation (text label). This distinguishes it from sibling tools like add_arrow or add_line.

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 alternatives (e.g., add_arrow, add_reference_line). There is no context about prerequisites, typical scenarios, 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.

apply_color_mapA

Apply a color palette to a contour/heatmap/surface graph.

Args: graph_name: Graph name (must hold a colormapped plot) palette: Palette name. Bundled perceptually-uniform, colorblind-safe maps (recommended for quantitative data): Viridis, Cividis, Plasma, Inferno, Magma; muted/pastel variants matching a soft figure aesthetic: PastelViridis, PastelCividis. Also accepts built-in Origin .pal names, e.g. Heatmap4ColorBlind, GrayScale, RedWhiteBlue, Fire, Temperature.

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
paletteNoViridis

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It discloses that the graph must already be a colormapped plot and that the tool changes the color mapping. It does not mention whether the operation is reversible, if it overwrites existing palettes, or any side effects, which would be helpful for a mutation tool.

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, with a clear one-sentence summary followed by a parameter list. No redundant information; every sentence adds value.

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 tool's purpose, parameter details, and return value (success message). Given the tool's simplicity and the presence of an output schema (though not shown), it is nearly complete. Minor omissions like case sensitivity or error handling prevent a perfect score.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining graph_name as a graph that must hold a colormapped plot and palette with a rich list of recommended options, including bundled colorblind-safe maps and built-in Origin palettes, far exceeding the schema's minimal type hints.

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 explicitly states the tool applies a color palette to contour/heatmap/surface graphs, using a specific verb and resource. It distinguishes from siblings like set_colormap_levels, which adjusts levels, and set_plot_style, which changes line style, by focusing solely on palette application.

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 provides context for when to use by listing recommended palettes and noting the graph must already hold a colormapped plot. However, it does not explicitly exclude alternatives or state when not to use this tool, leaving room for ambiguity among sibling tools.

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

apply_publication_styleA

Apply complete publication styling to a graph in ONE call.

Sets bold Arial labels, a muted pastel color palette, 2.5 pt lines, readable tick spacing, inward ticks, closed frame, and a borderless bold legend all at once. Designed to minimize token usage — call this once instead of many separate tools.

Args: graph_name: Graph name x_label: X axis label with units, e.g. "Temperature (K)" y_label: Y axis label with units, e.g. "Absorbance (a.u.)" x_min: X axis minimum (None=auto) x_max: X axis maximum (None=auto) y_min: Y axis minimum (None=auto) y_max: Y axis maximum (None=auto) legend_entries: Comma-separated legend entries, e.g. "Sample A,Sample B" legend_position: top-left, top-right, bottom-left, bottom-right

Returns: Summary of applied styling

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
x_labelNo
y_labelNo
x_minNo
x_maxNo
y_minNo
y_maxNo
legend_entriesNo
legend_positionNotop-right

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It explains the tool applies a complete set of styles but does not explicitly state whether it overwrites existing styles, what side effects occur, or any prerequisites. The behavioral description is adequate but not fully transparent.

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 a bold summary, bullet-like styling list, and an Args section. It is front-loaded with the main purpose and each sentence adds value, though slightly verbose.

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 complexity (9 parameters, no schema descriptions or annotations, but with an output schema), the description is highly complete: it explains the tool's purpose, efficiency benefit, all parameters with guidance, and return value. The output schema covers return details, so no further explanation needed.

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

Parameters5/5

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

Schema description coverage is 0%, but the description's Args section details each parameter with examples and default behaviors (e.g., 'None=auto' for min/max, 'e.g. Sample A,Sample B' for legend_entries). This fully compensates for the missing schema descriptions.

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 applies complete publication styling to a graph in one call, listing specific styling elements (bold Arial labels, muted palette, etc.) and explicitly distinguishes from sibling tools by noting it replaces many separate calls.

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 explicitly says 'Designed to minimize token usage — call this instead of many separate tools', providing clear when-to-use guidance and implying alternatives (the individual styling tools). It does not explicitly list when not to use, but the guidance is sufficient.

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

column_statisticsC

Descriptive statistics for one worksheet column.

Returns: JSON: mean, sd, se, variance, median, min, max, sum, n

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
colYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears full burden for behavioral disclosure. It indicates the tool returns a JSON object with specific stats but does not state whether the operation is read-only, whether it modifies the worksheet, or any required permissions. No caveats about missing data or edge cases are mentioned.

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 extremely concise: one sentence stating the purpose followed by a bullet list of returned fields. No unnecessary words, and the key action (returns descriptive statistics) is front-loaded.

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

Completeness2/5

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

Although an output schema is indicated as present, it is not provided, so the description's listing of return fields compensates partially. However, the tool has three parameters with no explanatory text, and the description omits behavioral context like read-only status or data type requirements. For a tool with no annotations and minimal schema coverage, the description falls short of being fully self-contained.

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

Parameters1/5

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

With 0% schema description coverage, the description provides no additional meaning for the three required parameters (data_book, data_sheet, col). While parameter names are suggestive, the description does not clarify expected formats, units, or how the column is identified (e.g., index vs. name). This forces the agent to rely solely on the minimal 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 provides descriptive statistics for one worksheet column, listing the specific measures returned (mean, sd, se, variance, median, min, max, sum, n). This distinguishes it from sibling tools like compare_means or curve_fit, which serve different analytical purposes.

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 lacks guidance on when to use this tool versus alternatives. It does not specify prerequisites (e.g., numeric column), exclusions, or mention related tools for multi-column or grouped statistics. The user must infer usage context from the tool name alone.

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

compare_meansB

Two-sample t-test between two columns.

Returns: JSON: t, df, p_value, mean1, mean2, equal_variance

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
col1Yes
col2Yes
equal_varianceNo

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?

No annotations are provided, so the description must carry the full burden. It discloses the return fields (t, df, p_value, etc.) and mentions the 'equal_variance' parameter, hinting at Welch's t-test by default. However, it omits assumptions, side effects, or permission requirements.

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 very concise and front-loaded with the core action. However, it is too terse, especially missing parameter explanations. It could be slightly more informative without losing conciseness.

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

Completeness2/5

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

For a tool with 5 parameters and a statistical test, the description is incomplete. It lacks prerequisite information (e.g., numeric columns, data existence) and does not guide parameter usage. The output schema is described, but input context is scant.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain any parameters (data_book, data_sheet, col1, col2, equal_variance). It only describes the output, leaving parameter semantics entirely to the schema, which lacks descriptions.

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 'Two-sample t-test between two columns,' which is a specific verb and resource. It clearly distinguishes from sibling tools like 'column_statistics' or 'curve_fit' that have different statistical purposes.

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 for comparing means but does not explicitly guide when to use this tool versus alternatives like 'column_statistics' or 'curve_fit'. No exclusion criteria or prerequisites are mentioned.

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

create_graphA

Create a graph from worksheet data.

Args: graph_name: Name for the graph window data_book: Source workbook name data_sheet: Source sheet name x_col: X column number (1-based). Ignored for box/histogram. y_col: Y column number (1-based) plot_type: scatter, line, line+symbol, column, bar, area, pie, box, histogram, contour, 3d_scatter y_error_col: Optional Y error column (1-based, 0=none). XY plots only. z_col: Z column (1-based). REQUIRED for contour and 3d_scatter. title: Optional graph title

Returns: Created graph name (may differ from graph_name if it was taken)

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
data_bookYes
data_sheetYes
x_colYes
y_colYes
plot_typeNoscatter
y_error_colNo
z_colNo
titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses a key behavioral detail: the returned graph name may differ from graph_name if taken. However, it does not mention permissions, destructiveness (does it modify worksheet data?), or other side effects. The description is adequate but could be more transparent.

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

Conciseness5/5

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

The description is well-structured with a concise opening line and a clear bullet list of parameters. Every sentence provides necessary information; there is no redundancy or fluff. It is appropriately sized for the complexity of the tool.

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 complexity (9 parameters, multiple plot types) and the presence of an output schema, the description is quite complete. It covers all parameters and return value behavior. Minor omissions: it does not mention preconditions like the worksheet existing or error handling, but these are not critical for basic usage.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain parameters thoroughly. It does so admirably: each parameter has a clear explanation, including constraints (e.g., x_col is 1-based, ignored for box/histogram) and when parameters are required (e.g., z_col required for contour and 3d_scatter). This adds substantial 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 clearly states the tool's purpose: 'Create a graph from worksheet data.' This is a specific verb-resource pair (create graph) with a data source. It distinguishes well from siblings that modify existing graphs (e.g., add_arrow, add_plot_to_graph).

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 that this tool is for creating new graphs from worksheet data, which contrasts with sibling tools for modifying graphs. However, it lacks explicit guidance on when to use this tool versus alternatives like add_plot_to_graph or save_graph_template. The context is clear but not explicitly stated.

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

create_matrixA

Create a new matrix book in Origin.

Matrices back 3D surface, contour, heatmap, and image plots.

Args: book_name: Name for the new matrix book rows: Initial number of rows (default 10) cols: Initial number of columns (default 10)

Returns: Created matrix name (may differ from book_name if it was taken)

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
rowsNo
colsNo

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?

With no annotations provided, the description carries full burden for behavioral transparency. It clearly states that the operation creates a matrix book and specifies that the returned name may differ from the requested book_name if the name was taken. However, it does not mention whether the tool overwrites existing books or any permission requirements.

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 brief yet comprehensive, with a clear purpose statement, a bulleted Args section, and a Returns note. Every sentence serves a purpose and the structure is logical and front-loaded.

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?

Despite the presence of an output schema (as indicated by context signals), the description adequately covers the return value. It provides enough detail for a straightforward creation tool, though it could mention potential errors (e.g., invalid name) or side effects.

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?

Given 0% schema description coverage, the description adds meaningful value by explaining each parameter: book_name is the name, rows and cols have defaults and are initial sizes. This compensates for the schema's lack of descriptions, though it could further clarify constraints like minimum values.

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 'Create a new matrix book in Origin' and explains that matrices back 3D surface, contour, heatmap, and image plots, which differentiates this from sibling tools like create_worksheet (for worksheets) and create_matrix_plot (for plots on matrices). The verb-resource pair is specific and unambiguous.

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 does not provide any guidance on when to use this tool versus alternatives such as create_worksheet or create_matrix_plot. It only describes the tool's own function without contextual selection advice or exclusions.

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

create_matrix_plotA

Plot a matrix as a surface, contour, heatmap, or image.

Args: matrix_book: Matrix book name (see create_matrix / worksheet_to_matrix) plot_type: surface (3D), contour, heatmap, or image graph_name: Optional name for the new graph z_label: Optional Z label with units (e.g. "Intensity (a.u.)"); sets the matrix long name, which drives both the Z-axis title (3D) and the color-scale title.

Returns: Created graph name

ParametersJSON Schema
NameRequiredDescriptionDefault
matrix_bookYes
plot_typeNoheatmap
graph_nameNo
z_labelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so description carries full burden. It mentions only basic return value (created graph name) but does not disclose side effects, error conditions, or prerequisites like needing an existing matrix.

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?

Well-structured with Args and Returns sections. Slightly lengthy but clear; could be more concise by trimming redundant phrasing.

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?

Adequate for a tool with 4 parameters and no annotations, but missing usage guidelines and behavioral transparency. Return type is covered by description.

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

Parameters5/5

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

Schema has 0% description coverage, but the description explains all four parameters in detail: matrix_book with cross-reference, plot_type with allowed values, graph_name optional, and z_label effects. This adds significant 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 the tool plots a matrix as surface, contour, heatmap, or image. It distinguishes from sibling tools by focusing specifically on matrix plots, though it does not explicitly contrast with alternatives.

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 on when to use this tool versus alternatives like create_graph or add_plot_to_graph. The description lacks when-not scenarios or prerequisites.

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

create_worksheetA

Create a new workbook with a worksheet in Origin.

Args: book_name: Name for the new workbook sheet_name: Name for the sheet (default: Sheet1)

Returns: Created workbook name (may differ from book_name if it was taken)

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameNoSheet1

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description bears full burden. It discloses the return behavior (may differ from book_name if taken) but omits other details like side effects, permissions, or failure modes. Adds some context beyond schema but insufficient for full transparency.

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: one sentence for purpose, followed by Args and Returns sections. No wasted words, front-loaded with the core action. Every sentence adds value.

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 simplicity, the description adequately covers creation of a workbook with a worksheet, parameters, and return behavior. However, it lacks usage guidelines and does not discuss potential errors or constraints, leaving minor gaps for a complete understanding.

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?

The description adds meaning beyond the input schema by explaining 'book_name' (name for new workbook) and 'sheet_name' (with default 'Sheet1'). It also notes the returned name may differ, which is not in the schema. Schema coverage is 0% in structured fields, so the description compensates well.

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 'Create a new workbook with a worksheet in Origin,' specifying the action (create) and the resource (workbook + worksheet). It distinguishes itself from sibling tools like import_csv_to_worksheet or add_columns, which have different purposes.

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

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 alternatives. It does not mention exclusions, prerequisites, or context for preferred use, leaving the agent without decision-making support.

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

curve_fitA

Perform curve fitting on worksheet data.

Args: data_book: Source workbook name data_sheet: Source sheet name x_col: X column number (1-based) y_col: Y column number (1-based) function: Fitting function. Built-in options: line, poly2-5, exp1, exp2, expgrow1, expdecay1, gauss, lorentz, voigt, power, lognormal, logistic, boltzmann, hill, sine y_error_col: Y error column (1-based, 0=none) plot_on_graph: Optional name of an existing graph — the fitted curve is drawn on it as a line (paper style: data symbols + fit line). Also keeps the fit report sheets in the workbook.

Returns: JSON with fitted parameters (value + std_error) and statistics (r_squared, sum_sq_residuals, reduced_chi_sq, dof)

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes
functionNoline
y_error_colNo
plot_on_graphNo

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?

With no annotations, the description discloses key behaviors: fitted curves can be plotted on existing graphs (paper style), and report sheets are kept. It does not specify error handling or side effects, but covers main outcomes.

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?

Well-structured with Args and Returns sections. Slightly verbose but every sentence adds useful information. The lead sentence is concise.

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?

Covers all parameters, defaults, and output format. Could mention error handling for invalid inputs or missing graphs, but overall complete for a fitting tool with output schema.

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

Parameters5/5

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

Schema description coverage is 0%, but the description explains every parameter in detail, including the list of built-in functions and the effect of 'plot_on_graph'. This adds 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 clearly states the action ('Perform curve fitting') and the resource ('worksheet data'), and distinguishes it from sibling tools like 'find_peaks' or 'smooth'.

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?

No explicit guidance on when to use vs. alternatives (e.g., 'list_fitting_functions'), but the purpose is clear enough to infer usage context.

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

delete_columnsA

Delete one or more columns starting at a position.

Args: book_name: Workbook name sheet_name: Sheet name col: First column to delete (1-based) count: How many consecutive columns to delete (default 1)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
colYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose whether deletions are permanent, if undo is possible, or if any confirmation is required. This is a significant gap for a destructive action.

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 concise with a clear Args/Returns structure. No unnecessary information, though some behavioral notes could be added without bloat.

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 simple parameters and lack of output schema complexity, the description covers the core functionality but lacks behavioral context (e.g., undo, permission requirements) that would make it fully complete for a destructive tool.

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?

With 0% schema description coverage, the description compensates well by explaining each parameter: 'col' is 1-based and 'count' defaults to 1, adding meaning beyond the bare 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 ('Delete one or more columns') and the resource ('starting at a position'), with a specific verb-resource pair that distinguishes it from sibling tools like 'add_columns'.

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?

No guidance on when to use this tool versus alternatives. While the purpose is clear, there is no explicit when-not or mention of related tools like 'delete_rows' or 'clear_worksheet'.

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

differentiateC

Compute the derivative dY/dX into a new column.

Returns: Success message naming the new derivative column

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description fails to disclose side effects (e.g., whether the original columns are modified), data requirements, or error conditions; only states it returns a success message.

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 concise with two sentences and front-loaded, but it omits crucial details that could be included without verbosity.

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

Completeness1/5

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

Given four required parameters, no annotations, and no output schema details, the description is grossly incomplete; it does not explain parameter roles, return format beyond a message, or any behavioral context.

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

Parameters2/5

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

Schema coverage is 0%, and the description does not explicitly describe the four parameters (data_book, data_sheet, x_col, y_col), though it implies x and y columns by mentioning derivative of Y with respect to X.

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 derivative dY/dX and adds a new column, distinguishing it from sibling tools like integrate, interpolate, or smooth.

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 on when to use this tool versus alternatives like integrate or curve_fit; no mention of prerequisites or context.

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

export_all_graphsA

Export every graph in the project to image files (one per graph).

Uses the same clipboard-based export as export_graph, so the Windows clipboard contents are replaced during export.

Args: output_dir: Output directory (Windows or WSL style). Created if missing. format: Image format: png, jpg, tif, bmp dpi: Unused (kept for API compatibility; size determined by Origin page) width: Unused (kept for API compatibility) height: Unused (kept for API compatibility)

Returns: Per-graph list of exported files

ParametersJSON Schema
NameRequiredDescriptionDefault
output_dirYes
formatNopng
dpiNo
widthNo
heightNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description carries full burden. It discloses the clipboard replacement side effect and notes that dpi, width, and height parameters are unused (kept for API compatibility). This provides important behavioral context beyond the schema.

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 front-loaded with purpose and key behavioral note, followed by an Args section. It is clear and efficient, though the Args section format is slightly verbose. No extraneous 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?

Given the tool has 5 parameters, 1 required, no annotations, but an output schema indicating return value (per-graph list), the description covers major aspects: behavior, side effects, unused parameters, and return type. It lacks prerequisites (e.g., open project) but is largely complete for an export tool.

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 0%, so description must compensate. It explains output_dir ('Output directory (Windows or WSL style). Created if missing.') and format ('Image format: png, jpg, tif, bmp') while marking dpi, width, and height as unused. This adds significant value over the schema, though not all parameters get detailed usage syntax.

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 explicitly states 'Export every graph in the project to image files (one per graph).' This specifies the verb (export), resource (graphs), and scope (all graphs in the project), clearly distinguishing it from sibling tools like export_graph (single graph) and export_graph_sized (single graph with dimension control).

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 warns about clipboard replacement ('Windows clipboard contents are replaced during export'), providing a condition to consider before use. However, it does not explicitly state when to prefer this tool over alternatives like export_graph or export_graph_sized, though the sibling names imply the use case for bulk export.

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

export_graphA

Export a graph to an image file.

Uses Origin's CopyPage + clipboard, so the Windows clipboard contents are replaced during export. Image size is determined by the Origin page (width/height/dpi are accepted but have no effect).

Args: graph_name: Graph name to export file_path: Output path (Windows or WSL style, e.g. C:\Users\me\fig1.png or /mnt/c/Users/me/fig1.png). Missing directories are created. format: Image format: png, jpg, tif, bmp. Used as the file extension when file_path has none. width: Unused (kept for API compatibility; size determined by Origin page) height: Unused (kept for API compatibility) dpi: Unused (kept for API compatibility)

Returns: Path to exported file

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
file_pathYes
formatNopng
widthNo
heightNo
dpiNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: clipboard replacement during export, unused parameters (width/height/dpi have no effect), and file path handling (Windows/WSL paths, missing directory creation). This exceeds the minimum required.

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 efficient, with a clear opening sentence and structured Args list. While not overly long, it could be slightly more concise by omitting the unused parameter defaults, but each sentence adds value.

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 tool's complexity (6 parameters, 2 required, no schema coverage) and the presence of an output schema (though not shown), the description covers all essential aspects: purpose, parameters, behavioral notes, and return value. It is fully adequate for correct invocation.

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

Parameters5/5

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

Schema coverage is 0%, so the description must explain all parameters. It details graph_name, file_path (with path style examples), format (allowed values), and explicitly marks width, height, dpi as unused but retained for API compatibility. This fully compensates for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states 'Export a graph to an image file,' specifying the verb (export) and resource (graph to image). This distinguishes it from sibling tools like export_all_graphs, export_graph_sized, and export_worksheet.

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 mentions the clipboard side effect but does not explicitly state when to use this tool versus alternatives (e.g., export_graph_sized for size control). No when-to-use or when-not-to-use guidance is given.

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

export_graph_sizedA

Export a graph to an image at a chosen pixel size (expGraph).

Unlike export_graph (clipboard, page-size only), this controls the output pixel width/height directly.

Args: graph_name: Graph to export file_path: Output path (Windows or WSL style) width: Image width in pixels (default 1200) height: Image height in pixels (0 = keep aspect ratio) format: png, jpg, tif, or bmp

Returns: Path and pixel/byte size of the exported file

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
file_pathYes
widthNo
heightNo
formatNopng

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It explains pixel size control and special height behavior (0 = keep aspect ratio) and mentions return info. However, it doesn't disclose if existing files are overwritten or required permissions.

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

Conciseness5/5

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

The description is concise: a short purpose sentence, a comparative sentence, then a structured Args list and Returns line. No fluff, all sentences add value.

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 presence of an output schema, the description only briefly mentions return values but covers parameters well. Missing error conditions or prerequisites (e.g., graph must exist), but overall adequate for a simple export tool.

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

Parameters5/5

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

Schema coverage is 0%, so description must add meaning. It lists all 5 parameters in Args section with explanations, defaults, and the special height=0 case, fully compensating for missing schema descriptions.

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 exports a graph to an image at a chosen pixel size, and explicitly contrasts with export_graph (clipboard, page-size only), making its unique 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 Guidelines5/5

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

The description directly compares to export_graph, telling agents when to use this tool (when pixel size control is needed) and providing all arguments with defaults, aiding correct usage.

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

export_worksheetA

Export a worksheet to a CSV/text file (with column headers).

Args: book_name: Workbook name sheet_name: Sheet name file_path: Output path (Windows or WSL style) delimiter: ",", "tab", ";", "|", or " "

Returns: Path and row/column counts written

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
file_pathYes
delimiterNo,

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses that the export includes column headers and returns path and row/column counts, but does not mention file overwrite behavior, permissions, or side effects. Adequate but not comprehensive.

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 single sentence summarizing the functionality, followed by structured Args and Returns sections. No unnecessary information is present.

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 presence of an output schema, the description adequately explains the return value. It covers all parameters and provides basic usage context, but lacks guidance on prerequisites or file overwrite behavior.

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?

The input schema has 0% description coverage, but the description provides meaningful explanations for all four parameters, including a list of valid delimiters. It adds value beyond the schema, though it omits the default delimiter 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 clearly states the tool exports a worksheet to a CSV/text file with column headers. The verb 'export' and resource 'worksheet' are specific, and it distinguishes itself from sibling export tools for graphs.

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 this tool is for exporting worksheets, but does not explicitly state when to use it versus alternatives like export_graph. No exclusions or alternatives are mentioned.

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

fftB

Forward FFT of a signal; outputs a spectrum sheet.

Uses the X column spacing as the sampling interval, so the Frequency column is in real units (1 / X-unit).

Returns: JSON: spectrum sheet and the dominant (peak-amplitude) frequency

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so description must disclose behavioral traits. It mentions sampling interval derivation and return value, but does not specify if the tool creates a new sheet or modifies data, nor any prerequisites for column types or sampling regularity.

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 concise sentences with no waste, front-loading the purpose and key details.

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?

Covers core function and return value, but lacks details on side effects (new sheet?), data requirements (numeric, evenly sampled), and the exact structure of the output spectrum sheet (though output schema exists). Adequate but not fully comprehensive.

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

Parameters2/5

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

Schema coverage is 0%, so description must add parameter meaning. It explains x_col's spacing is used as sampling interval, but leaves data_book, data_sheet, and y_col undefined. Does not fully compensate for missing schema descriptions.

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?

Clearly states it performs a forward FFT on a signal and outputs a spectrum sheet, distinguishing it from sibling signal processing tools like differentiate or integrate.

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?

Does not provide explicit guidance on when to use FFT vs alternatives like differentiate or find_peaks; assumes prior knowledge.

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

find_peaksB

Find peaks in an XY curve (local-maximum method).

Args: direction: positive, negative, or both local_points: neighborhood size for the local-maximum search

Returns: JSON list of {x, y} peak positions

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes
directionNopositive
local_pointsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided. Description mentions method and return format but lacks details on edge behavior, noise handling, or performance. Partial transparency but incomplete.

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?

Description is short, front-loaded with purpose, and structured with Args/Returns. No redundant text.

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

Completeness2/5

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

Output schema exists and return format is described, but 4 required parameters are undocumented, making the description incomplete for practical use.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It explains 'direction' and 'local_points' but omits required parameters 'data_book', 'data_sheet', 'x_col', 'y_col', leaving significant gaps.

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?

Description clearly states 'Find peaks in an XY curve (local-maximum method)', specifying the resource and method, and distinguishes from sibling tools like integrate, smooth, and differentiate.

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 explicit guidance on when to use this tool versus alternatives. Sibling tools include many curve analysis operations, but the description fails to provide context for selection.

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

frequency_countB

Histogram-style frequency counts for one column.

Args: bin_min: lowest bin start bin_max: highest bin end bin_size: bin width (increment)

Returns: JSON list of {center, end, count, cumulative}

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
colYes
bin_minYes
bin_maxYes
bin_sizeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions the output structure (JSON list with center, end, count, cumulative), which is helpful, but does not indicate side effects, permissions needed, or whether the tool modifies data. This is minimally adequate for a read-only tool.

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

Conciseness3/5

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

The description is short and front-loaded with purpose, but the parameter list covers only half the params, making it inadequate. Every sentence is useful but incomplete.

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

Completeness2/5

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

Given the tool has 6 required parameters and no annotations, the description is insufficient. It fails to explain three essential parameters (data_book, data_sheet, col) and does not provide context about selecting data sources, which is crucial for correct invocation.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain all parameters. It only explains bin_min, bin_max, and bin_size, ignoring data_book, data_sheet, and col. These three are critical for specifying the data source and column, and their omission leaves the agent guessing.

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 explicitly states it produces 'Histogram-style frequency counts for one column,' which clearly defines the tool's purpose and distinguishes it from siblings that perform other statistical operations like curve_fit or column_statistics.

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 provided on when to use this tool versus alternatives such as column_statistics or compare_means. The description lacks context about prerequisites, data preparation, or scenarios where this tool is appropriate.

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

get_labtalk_variableA

Get the value of a LabTalk variable.

Gotchas: numeric variables that don't exist read as 0, and variables declared with a type (e.g. int x = 5) are script-local — they vanish when the script ends. Use untyped assignment (x = 5) in run_labtalk if you want to read the value back later.

Args: name: Variable name. Use $ suffix for strings (e.g., 'str$')

Returns: Variable value as string

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

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?

With no annotations, description carries full burden. It discloses that missing numeric variables return 0 and typed variables are script-local. It also states return type. However, it doesn't cover behavior for missing string variables or error cases.

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?

Extremely concise: one-line purpose, gotchas presented clearly, then args/returns. Every sentence adds value, no wasted words.

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

Completeness4/5

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

For a simple tool with one parameter and output schema, description covers purpose, parameter semantics, return type, and behavioral gotchas. Minor gaps: missing behavior for non-existent string variables. Still adequate.

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

Parameters5/5

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

Despite 0% schema coverage, the description adds critical details: the naming convention ($ suffix for strings) and example ('str$'). This clarifies parameter usage far beyond the raw 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 first sentence clearly states the tool retrieves the value of a LabTalk variable. It differentiates from siblings like run_labtalk which executes scripts, and set_* tools which modify variables.

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?

Gotchas provide guidance on when to use this tool: it notes that numeric non-existent variables read as 0 and typed variables vanish, advising to use untyped assignment in run_labtalk for persistence. While not explicitly stating when-not, it implies using run_labtalk for setting persistent variables.

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

get_matrix_dataA

Read a matrix back as JSON.

Args: book_name: Matrix book name

Returns: JSON object {"rows": [[...], ...]}; empty cells are null

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes

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?

The description mentions the return format and that empty cells are null, but lacks explicit statements about read-only behavior, side effects, or safety. Since no annotations are provided, the description partially covers behavioral transparency but not fully.

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 concise and front-loaded with the purpose, then structured with args and returns. It is efficient but not overly brief, earning its place without unnecessary fluff.

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 simplicity (1 param, read-only, output schema exists), the description covers the essential aspects: what it does, the input parameter, and the output structure. It lacks error handling details but is otherwise complete for typical use.

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?

The description includes an 'Args' section with 'book_name: Matrix book name', adding meaningful clarification beyond the bare input schema, which had 0% description coverage. This compensates well for the schema gap.

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 'Read a matrix back as JSON', providing a specific verb and resource, and implicitly distinguishes from sibling tools like set_matrix_data (write) and create_matrix (create).

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 does not provide any guidance on when to use this tool versus alternatives, such as get_worksheet_data or other retrieval tools, leaving the agent without context for selection.

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

get_worksheet_dataB

Read data from an Origin worksheet.

Args: book_name: Workbook name sheet_name: Sheet name

Returns: JSON object with column data

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The description indicates a read-only operation, which implies no side effects. However, without annotations, it does not disclose potential failure modes, required permissions, or behavior with empty worksheets. It is adequate but lacks detail.

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 clear sections for Args and Returns. Every sentence is necessary and the structure is front-loaded with purpose.

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 read tool with two parameters and an output schema (implied), the description is adequate. However, it lacks usage context, such as whether the workbook must be open or how column data is structured. The output schema likely covers return details, so completeness is acceptable but not exceptional.

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

Parameters2/5

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

The description merely repeats parameter names ('Workbook name', 'Sheet name') without adding meaning about format, case sensitivity, or how to specify paths. With 0% schema description coverage, the description should provide more context.

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 'Read data from an Origin worksheet,' which is a specific verb (read) and resource (Origin worksheet). This distinguishes it from sibling tools that write or modify worksheet data.

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 provided on when to use this tool versus alternatives like 'set_worksheet_data' or 'list_worksheets'. The description only lists parameters without usage context or prerequisites.

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

import_csv_to_worksheetA

Import a CSV/text file into an Origin worksheet.

Args: file_path: Path to the file (Windows or WSL style, e.g. C:\Users\data.csv or /mnt/c/Users/data.csv) book_name: Optional workbook name. Auto-generated if empty. delimiter: Column delimiter (default: comma)

Returns: Name of the created workbook

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
book_nameNo
delimiterNo,

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses return value (workbook name), file path styles, and default behavior for book_name and delimiter. It does not cover error handling or side effects like overwriting, but covers essential behavioral aspects.

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 front-loaded with the purpose. It uses a clear Args/Returns structure with no wasted words. Every sentence adds value.

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 tool's complexity (3 parameters, output schema exists), the description covers the purpose, parameters, and return value adequately. It is complete for typical usage, though error cases are not described.

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

Parameters5/5

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

Schema coverage is 0%, so description must add meaning. It fully describes each parameter: file_path with path style examples, book_name as optional with auto-generation, delimiter with default. This adds significant value beyond the bare 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 'Import a CSV/text file into an Origin worksheet.' The verb 'import' and resource 'CSV/text file into worksheet' are specific and distinguishable from sibling tools like 'import_excel'.

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 specifies the context of importing CSV/text files and provides defaults for optional parameters. However, it does not explicitly exclude alternatives (e.g., import_excel) or state when not to use this tool.

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

import_excelA

Import an Excel (.xls/.xlsx) file into a new workbook.

Args: file_path: Path to the Excel file (Windows or WSL style) book_name: Optional name for the resulting workbook

Returns: Name of the workbook the data was imported into

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
book_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose side effects, permissions, error behavior, or limits. It only states it creates a new workbook, leaving behavioral gaps.

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 concise and front-loaded with the main purpose. The args list is clear, but could be slightly more streamlined without losing 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 description covers inputs, output, and basic behavior adequately for a simple import, but lacks details on error handling, file size limits, or edge cases that would make it more complete.

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?

With 0% schema description coverage, the description adds meaning by specifying file path style and the optional nature of book_name, which compensates for the schema's lack of descriptions.

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 imports an Excel file into a new workbook, with specific verbs and resources, distinguishing it from sibling tools like import_csv_to_worksheet.

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 clarifies file path format and optional bookmark but lacks explicit guidance on when to use this tool vs. alternatives like import_csv_to_worksheet, which would help differentiate.

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

integrateB

Integrate Y over X (area under the curve).

Returns: JSON with the integrated area

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so description must carry behavioral disclosure. It only states returns JSON with area, lacking method, error handling, or edge cases.

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?

Two sentences with no filler. Front-loaded with core purpose.

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?

Output schema presence mitigates some gap, but with four required parameters and no parameter info, description is insufficient for correct invocation.

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

Parameters1/5

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

Schema coverage is 0%, and description mentions no parameters. Agent cannot infer which parameters map to X and Y or how data_book/data_sheet are referenced.

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 integrates Y over X for area under the curve, specifying verb and resource. It distinguishes from sibling tools like differentiate and curve_fit.

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 on when to use integration vs other analysis tools. Lacks context for preferred scenarios or prerequisites.

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

interpolateB

Resample an XY curve onto evenly spaced X values.

Args: num_points: number of output points across the X range method: linear, spline, bspline, or akima

Returns: JSON: output sheet plus the resampled X and Y

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes
num_pointsNo
methodNolinear

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, so the description carries full burden. It discloses that a new output sheet is created and returns resampled X and Y, but does not mention if original data is preserved, auth needs, or handling of edge cases (e.g., missing data).

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 very short and front-loaded with the core action. It includes an args/returns section, which is helpful, but the lack of detail on required parameters prevents a perfect score.

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

Completeness2/5

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

The description is incomplete given the tool's complexity (6 parameters, output schema). It explains only the optional parameters and assumes the agent knows the format of 'data_book' and 'data_sheet'. No prerequisites or data format expectations are stated.

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

Parameters2/5

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

Schema coverage is 0%, and the description only explains 'num_points' and 'method' (2 of 6 parameters). Required parameters like 'data_book', 'data_sheet', 'x_col', 'y_col' get no explanation, forcing the agent to infer their meaning from names.

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 'Resample an XY curve onto evenly spaced X values' uses a specific verb and resource, clearly distinguishing this interpolation tool from similar siblings like 'smooth' or 'integrate'.

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?

No explicit when-to-use or when-not-to-use guidance is provided. While the purpose is clear, the description does not help the agent decide between this and related tools like 'curve_fit' or 'smooth'.

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

list_fitting_functionsA

List available built-in fitting functions and their parameters.

Returns: JSON of function names grouped by category, with parameter names

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 are absent, so the description carries the full burden. It correctly indicates that the tool lists information and returns a JSON. No side effects or destructive behavior is implied, and the read-only nature is evident. The only minor gap is not explicitly stating that it requires no input, but the schema already shows zero parameters.

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 extremely concise: two sentences, no redundant information. The first sentence defines purpose, the second describes the return format. Every word is necessary.

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 zero parameters, no annotations, and an existing output schema, the description provides a high-level summary of the return value. It is sufficient for an agent to understand the tool's basic functionality, though more detailed structural info is likely in the output schema.

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?

The tool has no parameters, and the schema coverage is 100% by default. The description adds value by explaining the output structure (JSON grouped by category with parameter names). Since there are no parameters to describe, this is fully adequate.

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 'List' and the resource 'available built-in fitting functions and their parameters'. It is specific and easily distinguishable from sibling tools which are mostly about creation, modification, or export.

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 does not provide explicit guidance on when to use this tool versus alternatives. However, the context is clear for a listing tool; it serves as a reference before using curve_fit. No exclusions or when-not-to-use indications are given, which is acceptable for a simple read operation.

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

list_worksheetsA

List all open workbooks (with their sheets), graphs, and matrices.

Returns: JSON object: {"workbooks": [{"name", "sheets"}], "graphs": [names], "matrices": [names]}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations provided, so the description carries full burden. It clearly states the tool lists all open entities, implying read-only behavior, and provides the return format. Lacks mention of potential side effects or performance implications.

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?

Two sentences, no wasted words. Information is front-loaded: verb, resources, and return format.

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 listing tool with no parameters and an output schema hinted in the description, the description is adequate. It explains exactly what is returned, though it could detail properties of each sheet.

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?

No parameters; schema coverage is 100%. The description adds value by specifying the return structure, which is not present in the input 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 uses a specific verb 'List' and clearly identifies the resources: open workbooks (with their sheets), graphs, and matrices. This distinguishes it from sibling tools like get_worksheet_data or export_worksheet.

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 the tool is for exploring the current workspace structure, but it does not explicitly state when to use it vs alternatives. No guidance on when not to use it or prerequisites.

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

load_projectA

Open an Origin project file. Replaces the current project.

Args: file_path: Path to a .opj or .opju file (Windows or WSL style)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It does mention that the tool replaces the current project, but it omits critical warnings about potential data loss if unsaved changes exist. This is a significant gap for a destructive operation.

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 extremely concise: two sentences plus a parameter and return value note. Every sentence is purposeful and the main action is front-loaded.

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 that the tool replaces the current project, the description should mention saving behavior or error handling. The return value is simply 'Success message', and there is no output schema to supplement. It is minimally adequate but lacks important context.

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?

The schema only specifies a string parameter with title 'File Path' and no description. The description adds meaning by specifying the expected file extensions (.opj or .opju) and path style (Windows or WSL), which compensates for the 0% schema coverage.

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 opens an Origin project file and replaces the current project. This verb+resource combination is specific and distinguishes it from siblings like new_project and save_project.

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 when to use this tool (to load an existing project) and that it replaces the current project, but does not explicitly state when not to use it or mention alternatives like save_project before loading.

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

new_projectA

Create a new empty Origin project (closes current without saving).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

With no annotations, the description fully discloses the critical behavior of closing the current project without saving, which is essential for the agent to understand the tool's impact.

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?

Single sentence of 10 words, front-loaded with key information, no redundant or extraneous content.

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 zero parameters and the existence of an output schema, the description adequately covers the tool's purpose and primary behavioral trait (closing without saving), making it complete for effective agent usage.

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?

No parameters exist, so schema coverage is 100%. Baseline is 4, and the description adds no additional param info, but none is needed.

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?

Description clearly states the action 'create' and resource 'new empty Origin project', and distinguishes from siblings like 'load_project' or 'save_project' by noting it closes current without saving.

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 explicit guidance on when to use this tool versus alternatives like 'load_project' or 'save_project'. The description implies the use case but does not provide exclusions or recommendations.

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

run_labtalkA

Execute a LabTalk script in Origin Pro.

Use this for any Origin operation not covered by other tools. LabTalk is Origin's built-in scripting language.

Args: script: LabTalk script to execute

Returns: Success/failure message

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes

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?

No annotations are provided, so the description carries the burden. It states the tool executes a LabTalk script, which is clear. However, it does not disclose behavioral traits such as potential side effects, authentication needs, or error handling beyond a generic success/failure message.

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 one short paragraph front-loading the action. Every sentence serves a purpose: stating the action, distinguishing from siblings, and explaining the parameter. No wasted words.

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 complexity of the sibling tools and the presence of an output schema, the description is mostly complete. It covers purpose and usage well, though the return value description is minimal ('Success/failure message') but the output schema likely provides detail.

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

Parameters2/5

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

With 0% schema description coverage for the single parameter 'script', the description adds minimal value by merely restating it as 'LabTalk script to execute'. No formatting, examples, or constraints are provided beyond what the schema already shows.

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 verb 'Execute a LabTalk script' and the resource 'Origin Pro'. It also distinguishes this tool from siblings by noting it is for operations not covered by other tools, providing high clarity.

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 explicitly says when to use this tool: for any Origin operation not covered by other tools. This implies when not to use it (when a specific tool exists), but it does not elaborate on alternatives or provide explicit when-not guidance.

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

save_graph_templateA

Save a graph as a reusable Origin template (.otpu/.otp).

Args: graph_name: Graph to save as a template file_path: Output path (Windows or WSL style). The extension is forced to .otpu (or .otp when old_format=True). old_format: Save the legacy .otp format (loadable in Origin 2017 and earlier) instead of the modern .otpu

Returns: Path to the saved template

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
file_pathYes
old_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description takes on full transparency burden. It explains the forced extension behavior and the old_format option, but does not disclose whether it overwrites existing files, if the graph must exist, or any required permissions. It adds value beyond the schema but is not exhaustive.

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

Conciseness5/5

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

The description is concise with a clear structure: a one-line summary followed by Args and Returns sections. Every sentence provides necessary information without redundancy.

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 all parameters and the return value. It explains the forced extension behavior and the legacy format. However, it lacks error conditions or preconditions (e.g., graph existence). Given the output schema exists and the tool is straightforward, it is largely complete.

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?

The description explicitly lists all three parameters with explanations: graph_name, file_path (with note about Windows/WSL style and forced extension), and old_format (with version info). The schema has no descriptions, so the description fills the gap effectively.

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 saves a graph as a reusable Origin template (.otpu/.otp). The verb 'save' and resource 'graph' are specific. It distinguishes from sibling export tools by mentioning 'reusable template' and the specific file formats.

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 does not provide any guidance on when to use this tool versus alternatives like export_graph or save_project. No when-not-to-use or context-based advice is given.

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

save_projectB

Save the current Origin project.

Args: file_path: Output path for the .opju file (Windows or WSL style). ".opju" is appended when no extension is given. If empty, saves to the project's current location.

Returns: Save confirmation with path

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It reveals that '.opju' is appended when missing and that empty path saves to current location. However, it fails to disclose critical behaviors: whether saving overwrites an existing file, whether unsaved changes are preserved, or any potential destructive effects. This is insufficient for a save operation.

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 reasonably concise, with a clear purpose line, enumerated argument description, and returns note. It fits in a few lines without wasted text. The structure with Args: and Returns: is clean. Minor improvement could remove the empty line after 'Args:'.

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 tool with one parameter and an output schema (despite not showing it here), the description covers the basics: operation, path behavior, and confirmation output. However, it lacks completeness for a save operation: no mention of overwrite behavior, error cases (e.g., invalid path), or whether it preserves unsaved changes. Adequate but with notable gaps.

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?

The only parameter, file_path, is described with useful details beyond the schema: Windows/WSL style, automatic '.opju' appending, and default save location behavior. This adds significant meaning that the schema's minimal definition (type string, default empty) lacks.

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 'Save the current Origin project.' This is a specific verb+resource. While it doesn't explicitly distinguish from siblings like load_project, the sibling set is diverse enough that confusion is unlikely. 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 usage (saving a project) but provides no explicit guidance on when to use this tool versus alternatives (e.g., load_project for loading, new_project for creating). No when-not-to-use or prerequisite conditions are mentioned.

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

set_axis_labelsB

Set axis labels and title for a graph.

Args: graph_name: Graph name x_label: X axis label y_label: Y axis label title: Graph title

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
x_labelNo
y_labelNo
titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

The description does not disclose behavioral traits beyond the basic action, such as whether existing labels are overwritten, what happens if the graph does not exist, or any side effects. With no annotations, the description carries the full burden and fails to provide adequate behavioral context.

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

Conciseness4/5

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

The description is concise with a clear Args list and Returns line. It is front-loaded with the purpose. However, the Args section is somewhat redundant with the input schema.

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's simplicity (4 parameters, 1 required), the description covers the basic operation and return value. However, it lacks explicit mention that the graph must already exist, which is implied but not stated. The output schema is implicitly described as a success message.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must add meaning. However, it merely repeats parameter names and types from the schema without providing additional semantics like format constraints, valid values, or relationships. It adds minimal 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 clearly states the tool's action: 'Set axis labels and title for a graph.' This is a specific verb-resource combination that distinguishes it from sibling tools like set_axis_range or set_legend.

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 provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only lists parameters without contextual usage notes.

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

set_axis_rangeB

Set axis range for a graph.

Args: graph_name: Graph name x_min: X axis minimum (None=auto) x_max: X axis maximum (None=auto) y_min: Y axis minimum (None=auto) y_max: Y axis maximum (None=auto)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
x_minNo
x_maxNo
y_minNo
y_maxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

The description only states what the tool does (set axis range) and returns a success message. No annotations are provided, so the description carries full burden. It does not disclose any side effects, requirements, or error 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 concise and well-structured: a one-sentence purpose, followed by an Args list and a Returns line. Every sentence adds value, and the format is easy to parse.

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 aspects for a simple setter tool. The output schema exists (not shown), so a 'Success message' return is likely sufficient. However, it does not mention edge cases like non-existent graph_name or invalid ranges.

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?

With 0% schema description coverage, the description adds meaning by explaining each parameter (e.g., 'x_min: X axis minimum (None=auto)'). This clarifies that None means auto-scaling, which is not evident from the schema alone.

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 'Set axis range for a graph', which is a specific verb+resource. It lists the parameters and their meanings, distinguishing it from sibling tools like set_axis_scale. However, it does not explicitly differentiate from similar tools.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives, such as set_axis_scale or set_axis_labels. There is no context about prerequisites or typical usage scenarios.

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

set_axis_scaleA

Set an axis to linear or a logarithmic scale.

Args: graph_name: Graph name axis: "x" or "y" scale: linear, log10, ln, or log2

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
axisNoy
scaleNolog10

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It mentions setting scale but does not disclose side effects (e.g., effect on ticks), prerequisites (graph existence), or error conditions. Returns a simple success message.

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 an Args/Returns section, but it repeats parameter names and could be more concise. However, it remains clear and easy to parse.

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

Completeness2/5

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

For a tool with no annotations and low schema coverage, the description provides basic functionality but lacks prerequisites (e.g., graph must exist), error handling, and any relation to sibling tools. The presence of an output schema is noted but not detailed.

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?

The input schema has 0% description coverage, so the description adds value by specifying allowed values for axis ('x' or 'y') and scale ('linear, log10, ln, or log2'). This goes beyond the schema's type-only definitions.

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 'Set an axis to linear or a logarithmic scale' clearly states the action (set) and the resource (axis scale), distinguishing it from sibling tools like set_axis_range or set_axis_labels.

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 provides no guidance on when to use it versus alternatives, such as when a graph must already exist or when scale changes are appropriate.

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

set_colormap_levelsA

Set the Z range (color scale levels) of a colormapped graph.

Args: graph_name: Graph name (contour/heatmap/surface) z_min: Minimum Z for the color scale z_max: Maximum Z for the color scale

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
z_minYes
z_maxYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. It indicates mutation ('set') and returns success message, but lacks details on side effects, required graph type, or constraints (e.g., z_min must be less than z_max).

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 one-sentence purpose followed by structured Args and Returns sections; no extraneous text.

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?

Simple tool with 3 params and output schema; description covers parameters and return value. Lacks mention that graph must already exist and be colormapped, but overall adequate.

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 0%, but description adds meaning: graph_name is clarified as contour/heatmap/surface, and z_min/z_max are labeled as minimum/maximum Z for color scale.

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?

Clearly states it sets the Z range (color scale levels) of a colormapped graph, distinguishing it from sibling graph customization tools.

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 on when to use this tool vs alternatives like set_axis_range or set_plot_style; no exclusions or prerequisites mentioned.

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

set_column_formulaA

Fill a worksheet column from a formula of other columns.

Args: book_name: Workbook name sheet_name: Sheet name col: Target column (1-based); created if it does not exist formula: LabTalk expression, e.g. "col(1)^2", "col(2)*100/col(3)"

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
colYes
formulaYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It reveals that the column is 1-based and created if missing, and the formula is a LabTalk expression. However, it does not mention that existing data in the target column is overwritten (destructive behavior) or what happens on formula errors. This omission reduces transparency.

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 extremely concise: a one-line summary followed by clear Args and Returns sections. Every sentence adds value, no redundancy. It avoids extraneous detail while covering essential 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?

Given the tool's simplicity and the presence of an output schema (though minimal), the description covers the main aspects: purpose, parameters, and return value. It could mention potential side effects (overwriting column data) but is otherwise complete for a straightforward formula tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description provides all parameter meaning. It explains each parameter: book_name, sheet_name, col (1-based, created if not exist), and formula (LabTalk expression with examples). This adds significant value beyond the schema titles.

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 fills a worksheet column from a formula of other columns. It specifies the verb 'Fill', the resource 'worksheet column', and distinguishes it from sibling tools like set_column_properties that set column attributes rather than computing values. The examples clarify its purpose.

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 provides a concrete formula example and states that the column is created if it does not exist, giving some usage context. However, it does not explicitly state when to use this tool versus alternatives (e.g., set_worksheet_data for direct values) or when not to use it. More explicit guidance would be beneficial.

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

set_column_propertiesA

Set a column's long name, units, comment, and/or designation.

Args: book_name: Workbook name sheet_name: Sheet name col: Column (1-based) long_name: Long name (label row) units: Units (label row) comment: Comment (label row) designation: One of none, x, y, z, yerr, xerr, label (blank = leave)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
colYes
long_nameNo
unitsNo
commentNo
designationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It explains parameter defaults and that a blank designation leaves the field unchanged, but does not clarify whether empty strings clear other fields, whether changes are overwritten, error conditions, or authorization requirements. Adequate but not fully transparent.

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 well-structured docstring with clear Args and Returns sections. Every sentence adds unique information, and the format is front-loaded with the core purpose. No extraneous content.

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?

Despite lacking usage guidelines, the description sufficiently covers the input parameters and return value for a simple setter tool. The output schema exists (though not shown), reducing the need to describe return format. The description is complete enough for an agent to use the tool correctly, but could benefit from a brief note on context (e.g., that it modifies an existing column).

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 0%, so the description adds substantial value by explaining each parameter: e.g., col is 1-based, designation lists valid options. However, terms like 'label row' for long_name and units are not elaborated, and the effect of empty string defaults for non-designation parameters is implied but not explicit.

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 sets a column's long name, units, comment, and/or designation. The verb 'set' and resource 'column properties' are specific, and it distinguishes from siblings like set_column_formula and set_axis_labels.

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 alternatives. It does not mention circumstances where other tools (e.g., set_column_formula) would be more appropriate, nor does it specify any prerequisites or restrictions.

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

set_graph_fontB

Set font for graph elements.

Args: graph_name: Graph name font_name: Font family (e.g., Arial) font_size: Font size in points (default 24) target: "all", "axes", "title", "legend", "tick"

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
font_nameNoArial
font_sizeNo
targetNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral transparency. It states it 'Sets font' (a mutation) but lacks details: no mention of preconditions (graph must exist), side effects (overwrites existing font), error conditions, or whether changes are reversible. The return is vaguely described as 'Success message'.

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 extremely concise: one-line purpose, then Args section with each parameter on its own line, and Returns line. No fluff, every sentence is necessary. Front-loaded with the action.

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 a simple tool with 4 parameters and an output schema (present but not detailed), the description covers the main usage. However, it lacks contextual details: whether the graph must already exist, whether it modifies or creates, and what exactly the success message contains. Not fully complete but adequate for straightforward operation.

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 description coverage is 0%, so the description must compensate. It does: explains graph_name, font_name with example, font_size with default and unit, and target with allowed values. This adds meaningful semantics beyond the bare schema. Minor omissions: no format constraints, no range for font_size.

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 'Set font for graph elements', identifying the verb and resource. It distinguishes from sibling tools like set_axis_labels or set_legend by focusing on font properties across multiple components. However, it could be more specific about which exact elements are targetable (already covered in target param).

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?

While the description lists allowed target values (all, axes, title, legend, tick), it does not explicitly state when to use this tool over alternatives. No explicit when/not-to-use guidance or references to sibling tools. The context is implied but not articulated.

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

set_legendA

Configure graph legend.

Args: graph_name: Graph name visible: Show or hide legend position: top-left, top-right, bottom-left, bottom-right entries: Comma-separated custom legend entries

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
visibleNo
positionNotop-right
entriesNo

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?

No annotations are provided, so the description carries full burden. It states it configures legend and returns a success message, but does not disclose behavioral details such as error handling, permissions required, or side effects on existing legend settings.

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 well-structured docstring with clear Args and Returns sections. It is concise, each line adds value, and the primary purpose is front-loaded. No redundancy.

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 description covers the basic functionality but omits details about return value content (e.g., what success message looks like) and error conditions. Given no output schema shown, more completeness would help.

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 0%, so the description must add meaning. It provides example values for 'position' (top-left, etc.) and explains 'entries' as comma-separated, which goes beyond schema type string. This adds value for agent understanding.

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 'Configure graph legend' is a specific verb+resource. It clearly distinguishes from sibling tools like 'set_axis_labels' or 'add_plot_to_graph', which focus on other aspects of graph configuration.

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 does not explicitly state when to use this tool versus alternatives. While the purpose is clear, no guidance is given on when to choose this over other legend-related tools, such as setting legend properties individually.

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

set_matrix_dataB

Write a 2D numeric grid into a matrix.

Args: book_name: Matrix book name data: JSON array of equal-length rows, e.g. [[1,2,3],[4,5,6]]

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description must disclose behavioral traits. It only says 'Write' without discussing overwrite behavior, permissions, or side effects. Lacks transparency.

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 concise with essential elements: action, arguments, and returns. No redundant information. It could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Given the complexity of writing a matrix, the description lacks context on preconditions (e.g., matrix existence), behavior on overwrite, and success criteria. The output schema exists but the description does not leverage it well.

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?

The description adds meaning beyond the schema, especially for 'data' by specifying it's a JSON array of equal-length rows with an example. However, 'book_name' is only described as 'Matrix book name', which is minimal.

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 ('Write'), the target ('a 2D numeric grid into a matrix'), and provides examples. It effectively distinguishes the tool from siblings like get_matrix_data and set_worksheet_data.

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 on when to use this tool vs alternatives (e.g., create_matrix, set_worksheet_data). No prerequisites or context are given.

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

set_plot_styleA

Set line/symbol style for a data plot.

Args: graph_name: Graph name plot_index: Data series index (1-based, order the datasets were added; error-bar plots are not counted) line_width: Line width in points (default 2.5) symbol_size: Symbol size (3-20, default 8) symbol_shape: 0=auto, 1=square, 2=circle, 3=triangle-up, 4=diamond, 5=triangle-down, 6=hexagon color: Color name (black, red, blue, green, orange, purple, cyan, magenta)

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
plot_indexNo
line_widthNo
symbol_sizeNo
symbol_shapeNo
colorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only describes parameters and a generic 'Returns: Success message'. It does not state whether it modifies existing plots, needs an existing graph, or any side effects.

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

Conciseness4/5

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

The description is well-structured with an Args section and clear parameter descriptions. It is concise but slightly verbose due to listing all symbol shapes inline.

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 description covers parameter details adequately but lacks broader context about behavior, side effects, or return value beyond a success message. Given the presence of an output schema (not shown), the return description is acceptable but could be more specific.

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

Parameters5/5

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

Although schema description coverage is 0%, the description adds detailed meanings for parameters: line_width default, symbol_size range, symbol_shape numeric mapping, color list. This compensates fully for the lack of schema descriptions.

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 line/symbol style for a data plot, using a specific verb and resource. It distinguishes from sibling tools like set_axis_labels or set_graph_font by focusing on line/symbol properties.

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 provided on when to use this tool versus alternatives (e.g., set_graph_font, apply_publication_style). There is no mention of prerequisites or exclusions.

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

set_tick_styleA

Set tick mark style.

Args: graph_name: Graph name tick_direction: "in", "out", or "both" major_length: Major tick length in points (default 8) minor_count: Number of minor ticks between major ticks (default 4) show_minor: Whether to show minor ticks

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameYes
tick_directionNoin
major_lengthNo
minor_countNo
show_minorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It lists parameter defaults and allowed values for tick_direction, but does not disclose side effects, idempotency, or error conditions.

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 and Returns sections, but could be more concise (e.g., combining default info). Still, it is efficient and front-loaded.

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 simplicity, schema with types/defaults, and output schema, the description adds sufficient context. However, it lacks notes on error handling or prerequisites like graph existence.

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

Parameters5/5

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

The description provides clear semantics for all 5 parameters, including allowed values for tick_direction and defaults for major_length, minor_count, and show_minor. Schema has 0% description coverage, so the description fully compensates.

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 'Set tick mark style' with a specific verb-resource combination, and the parameters focus on tick customization, distinguishing it from sibling tools like set_axis_labels or set_plot_style.

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 on when to use this tool versus alternatives. It does not mention prerequisites (e.g., graph must exist) or compare with other set_* tools.

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

set_worksheet_dataB

Write data to an Origin worksheet.

Args: book_name: Workbook name (e.g., "Book1") sheet_name: Sheet name (e.g., "Sheet1") columns: JSON array of arrays, each inner array is a column of data. Example: [[1,2,3],[4,5,6]] for 2 columns with 3 rows column_names: Optional comma-separated column names (e.g., "X,Y,Error")

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
columnsYes
column_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It does not state whether the tool overwrites existing data, appends, or requires a specific sheet state. The return value is only 'Success message', lacking details on side effects or failure modes.

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 extremely concise and well-structured, using a standard Args/Returns format. Every sentence is necessary and provides relevant information without any redundancy or filler.

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 moderate complexity (4 parameters, no annotations, output schema exists but minimal), the description provides essential information but lacks details on error handling, sheet creation behavior, or data replacement semantics. It is sufficient for basic usage but incomplete for robust agent decision-making.

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?

With 0% schema description coverage, the description compensates well. It explains each parameter, including the format for 'columns' (JSON array of arrays) with an example, and clarifies that 'column_names' is optional comma-separated. This adds significant meaning beyond the schema's minimal type/title definitions.

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 'Write data to an Origin worksheet' with a specific verb and resource. It also explains the columns parameter format. However, it does not explicitly distinguish itself from sibling tools like import_csv_to_worksheet or set_column_properties, which could cause confusion for an AI agent.

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 alternatives. There is no mention of prerequisites, exclusions, or context such as whether the worksheet must already exist. The only implicit usage is for writing data, but no explicit differentiation is made.

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

smoothB

Smooth a curve into a new column.

Args: method: savitzky_golay (sg), adjacent (moving average), or binomial window: number of points in the smoothing window (odd, default 5)

Returns: Success message naming the new smoothed column

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes
methodNosavitzky_golay
windowNo

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?

With no annotations, the description bears full transparency burden. It states that a new column is created and lists parameters, but does not disclose side effects (e.g., whether data is modified in place), error conditions, or any destructive potential. It provides adequate but not comprehensive behavioral detail.

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 short and front-loaded with the core action. The argument list is clean and easy to scan. It earns its keep without extra verbiage, though it could add a sentence on parameter semantics without harming conciseness.

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

Completeness2/5

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

Given six parameters, various methods, and sibling tools for similar operations, the description is too sparse. It does not explain return format beyond a success message, nor does it guide method selection or window size. The output schema exists but is not referenced.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It explains method and window with defaults, but the four required parameters (data_book, data_sheet, x_col, y_col) are left entirely to the schema, which itself has no descriptions. The agent lacks meaning for over half the parameters.

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 ('Smooth') and resource ('a curve into a new column'), clearly defining the action. It lists available methods (savitzky_golay, adjacent, binomial), distinguishing it from sibling tools like differentiate or interpolate by stating exactly what it does.

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 smoothing versus alternatives like moving average or other processing tools. The description lacks context such as 'use this to reduce noise' or 'not suitable for sharp features', leaving the agent to infer usage from the name alone.

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

sort_worksheetA

Sort all rows of a worksheet by one column.

Args: book_name: Workbook name sheet_name: Sheet name col: Column to sort by (1-based) descending: Sort high-to-low when True

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
colYes
descendingNo

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?

The description explains the sorting behavior and parameters, but without annotations (which are absent) it falls short on disclosing important traits like whether the sort is in-place, destructive, or reversible. 'Returns Success message' is minimal.

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

Conciseness5/5

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

Extremely concise: a one-line summary followed by a bulleted Args list and Returns line. No unnecessary words; every sentence serves a purpose.

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 context of many sibling worksheet tools, the description should clarify if sorting is in-place or returns a new view. It does not mention stability or handling of headers. The output schema is a simple success message, so return value detail is adequate.

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?

With 0% schema description coverage, the description compensates by defining each parameter: 'col: Column to sort by (1-based)' and 'descending: Sort high-to-low when True'. This adds meaning beyond the raw schema types.

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 'Sort all rows of a worksheet by one column,' which is a specific verb and resource. It distinguishes itself from sibling tools like add_columns or set_worksheet_data by focusing on sorting.

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 on when to use this tool versus alternatives (e.g., manual sorting, other sorting tools). Lacks context on prerequisites, such as whether the worksheet must have data or if only one column can be sorted at a time.

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

transpose_worksheetA

Transpose a worksheet (rows become columns).

Args: book_name: Source workbook name sheet_name: Source sheet name output_book: Optional new workbook name for the result; if empty, the source sheet is transposed in place

Returns: Success message

ParametersJSON Schema
NameRequiredDescriptionDefault
book_nameYes
sheet_nameYes
output_bookNo

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?

With no annotations, the description carries the full burden. It discloses the in-place behavior when output_book is empty and that a success message is returned, but lacks details on side effects, error handling, or auth requirements.

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

Conciseness4/5

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

The description is concise with a clear one-line summary and structured argument list. No wasted words, but the format could be more front-loaded with key behavior.

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?

Adequate for a simple operation with three string parameters and a success message, but missing details on input validation, constraints, or return structure.

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 0%, so description must compensate. It provides brief but meaningful descriptions for all three parameters, including the conditional behavior of output_book. Could be more precise (e.g., existing workbook names).

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 transposes a worksheet, making rows become columns. This is a specific verb+resource that distinguishes it from sibling tools like sort_worksheet or set_worksheet_data.

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 on when to use transpose vs alternative operations, no prerequisites or exclusions. The description simply states what it does without context for appropriate usage.

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

worksheet_to_matrixA

Convert XYZ worksheet columns into a matrix by gridding (xyz2mat).

Enables 3D surface / contour / heatmap from scattered XYZ data.

Args: data_book: Source workbook name data_sheet: Source sheet name x_col: X column (1-based) y_col: Y column (1-based) z_col: Z column (1-based) rows: Output matrix rows (default 20) cols: Output matrix columns (default 20) matrix_book: Optional name for the output matrix book

Returns: Name of the created matrix

ParametersJSON Schema
NameRequiredDescriptionDefault
data_bookYes
data_sheetYes
x_colYes
y_colYes
z_colYes
rowsNo
colsNo
matrix_bookNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must fully disclose behavior. It describes the gridding process and return value, but omits potential side effects (e.g., whether source data is modified), prerequisites (e.g., numeric columns), or error handling. With no annotations, a score of 3 reflects adequate but incomplete disclosure.

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, a contextual sentence, then an Args/Returns list. Every sentence adds necessary information with no redundancy.

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 complexity (8 parameters, matrix creation), the description covers inputs, defaults, and return value. It does not detail output schema specifics or error conditions, but the presence of an output schema likely compensates. Slightly incomplete for a fully autonomous agent.

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 description coverage is 0%, but the description provides clear, meaningful parameter explanations (e.g., 'Source workbook name', 'X column (1-based)') and notes default values for rows and cols. This adds significant value beyond the schema's bare titles.

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 converts XYZ worksheet columns into a matrix via gridding, specifically to enable 3D surface/contour/heatmap plots. This distinguishes it from sibling tools like create_matrix (which probably creates an empty matrix) and get_matrix_data (which reads but doesn't convert).

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 scattered XYZ data to make a matrix for 3D plotting, but does not explicitly state when not to use or mention alternatives among siblings. However, the context signals provide enough differentiation.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 56 tool updatesv0.1.0
    • First observedadd_arrow
    • First observedadd_columns
    • First observedadd_layer
    • First observedadd_line
    • First observedadd_plot_to_graph
    • First observedadd_reference_line
    • First observedadd_second_y_axis
    • First observedadd_text_annotation
    • First observedapply_color_map
    • First observedapply_publication_style
    • First observedcolumn_statistics
    • First observedcompare_means
    • First observedcreate_graph
    • First observedcreate_matrix
    • First observedcreate_matrix_plot
    • First observedcreate_worksheet
    • First observedcurve_fit
    • First observeddelete_columns
    • First observeddifferentiate
    • First observedexport_all_graphs
    • First observedexport_graph
    • First observedexport_graph_sized
    • First observedexport_worksheet
    • First observedfft
    • First observedfind_peaks
    • First observedfrequency_count
    • First observedget_labtalk_variable
    • First observedget_matrix_data
    • First observedget_worksheet_data
    • First observedimport_csv_to_worksheet
    • First observedimport_excel
    • First observedintegrate
    • First observedinterpolate
    • First observedlist_fitting_functions
    • First observedlist_worksheets
    • First observedload_project
    • First observednew_project
    • First observedrun_labtalk
    • First observedsave_graph_template
    • First observedsave_project
    • First observedset_axis_labels
    • First observedset_axis_range
    • First observedset_axis_scale
    • First observedset_colormap_levels
    • First observedset_column_formula
    • First observedset_column_properties
    • First observedset_graph_font
    • First observedset_legend
    • First observedset_matrix_data
    • First observedset_plot_style
    • First observedset_tick_style
    • First observedset_worksheet_data
    • First observedsmooth
    • First observedsort_worksheet
    • First observedtranspose_worksheet
    • First observedworksheet_to_matrix

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose. Even tools like add_line and add_arrow are differentiated (arrow vs line), and export_graph variants have explicit argument differences. No overlapping functionality that would confuse an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case (e.g., add_columns, create_graph, set_axis_labels). There are no mixed conventions like camelCase, and the verbs are in present tense. Minor variations like 'frequency_count' are rare and still follow the noun_verb pattern.

Tool Count1/5

With 56 tools, the count far exceeds the recommended 3-15 range and is above the 50+ threshold for extreme mismatch. While the server covers a broad scientific domain, the sheer number of tools likely overwhelms an agent, making selection and learning difficult.

Completeness5/5

The tool set provides comprehensive coverage for data import/export, worksheet manipulation, graph creation and styling, statistical analysis, curve fitting, signal processing, and project management. There are no obvious missing operations for the intended scientific plotting and analysis domain.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to control Origin/OriginPro on Windows, including data import, worksheet editing, graphing, analysis, and figure export.
    25
    82
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to manage Microsoft Outlook emails, calendar events, contacts, and folders via COM automation.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control Origin 2025b for scientific plotting via natural language, with support for data import, 52+ chart types, curve fitting, statistics, and export.
    7
    MIT

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/youngminsw/Origin-Pro-MCP'

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