Skip to main content
Glama

origin-mcp

origin-mcp cover

PyPI version Downloads Python 3.10+ origin-mcp MCP server License: MIT

简体中文

origin-mcp is a local Model Context Protocol (MCP) server that lets AI assistants control Origin/OriginPro on Windows. An authenticated local bridge runs inside Origin so automation stays on its UI thread. The project is still in testing; real-workflow feedback and contributions are welcome.

Highlights

  • Import, edit, transform, and export worksheet, matrix, image, and connector data.

  • Create and refine 2D, 3D, contour, statistical, and specialized plots.

  • Run fitting, signal processing, statistics, Peak Analyzer, and batch workflows.

  • Manage projects, folders, Notes, templates, analysis operations, and graph layouts.

  • Build publication figures with reusable templates, palettes, and an optional Nature-style preset.

Related MCP server: OriginLab MCP Server

Quick Start

You need Windows, a licensed Origin/OriginPro installation, and Python 3.10+ for the MCP server. Origin 2026/2026b is the current target family; the bridge uses the Python bundled with Origin.

  1. Install the MCP server:

pip install origin-mcp
  1. Add the MCP server to your client (use the absolute python.exe path if python points to another environment):

{
  "mcpServers": {
    "origin": {
      "command": "python",
      "args": ["-m", "origin_mcp"]
    }
  }
}
  1. Install the Origin Start/Stop Apps, follow the short registration guide, then click Origin MCP Bridge Start once per Origin session:

origin-mcp install-origin-app --force
  1. Verify the bridge and live Origin connection:

origin-mcp status
origin-mcp doctor --ping-origin

Both diagnostic commands support --json. For manual bridge startup or troubleshooting, see the bridge guide.

To let an AI agent install and configure origin-mcp, send it this instruction: Fetch and follow https://raw.githubusercontent.com/Ge-Shun/origin-mcp/main/docs/agentic/origin-mcp-bootstrap.md end to end.

Documentation

Development

From a checkout, install with pip install -e . and run the full local gate:

python scripts/dev_check.py --tests

Security

The bridge listens only on 127.0.0.1 and authenticates local requests by default with a per-session token. Treat the token as a credential, keep its handshake file in a user-private directory, and avoid ORIGIN_MCP_BRIDGE_NO_AUTH unless every local process is trusted. Set ORIGIN_MCP_ALLOWED_ROOTS to restrict which files tools may access.

License

MIT. See LICENSE.

Available Tools

25 tools
origin_bridge_cancel_taskA

Cancel a queued Origin bridge task or mark a running task for cancellation.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoOptional Origin bridge host override. Normally omit to use configured localhost.
portNoOptional Origin bridge TCP port override. Normally omit to use the handshake value.
tokenNoOptional bridge authentication token override. Normally omit to use the handshake.
task_idYesBackground task identifier returned by origin_bridge_submit_task.
timeoutNoBridge request timeout in seconds; null uses the configured default.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 carry full behavioral disclosure. It only says 'cancel' or 'mark for cancellation' without detailing side effects, whether cancellation is immediate, or what happens to the task state. This lacks depth 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 a single sentence that is front-loaded with the action and covers both queued and running scenarios. No extraneous 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?

Given the presence of an output schema and high schema coverage, the description is adequate but minimal. It could mention prerequisites (e.g., task must exist) or error states, but the current text suffices for basic understanding.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description adds minimal value by linking task_id to origin_bridge_submit_task, but does not enhance understanding of host, port, token, or timeout 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 cancels or marks for cancellation an Origin bridge task, using specific verbs 'Cancel' and 'mark'. It distinguishes from sibling tools like origin_bridge_submit_task and origin_bridge_task_status by focusing on cancellation.

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 distinguishes between queued and running tasks, providing some context. However, it does not explicitly state when to use this tool versus alternatives (e.g., checking status first via origin_bridge_task_status) or any exclusions.

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

origin_bridge_list_tasksA

List recent Origin bridge background tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoOptional Origin bridge host override. Normally omit to use configured localhost.
portNoOptional Origin bridge TCP port override. Normally omit to use the handshake value.
limitNoMaximum number of matching or recent records to return.
tokenNoOptional bridge authentication token override. Normally omit to use the handshake.
timeoutNoBridge request timeout in seconds; null uses the configured default.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided; description only states it lists recent tasks. Does not disclose side effects, authentication requirements, or pagination behavior. Returns an output schema, but behavioral details are 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?

A single sentence that is concise and front-loaded with the action and resource. No wasted words.

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

Completeness5/5

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

For a simple list tool with full schema coverage and an output schema, the description is complete enough. It provides the necessary context for an agent to understand its purpose.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema. The tool description adds no additional meaning beyond stating the list operation.

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 lists recent Origin bridge background tasks, which is specific and distinguishes it from sibling tools like cancel, submit, and status.

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., origin_bridge_task_status for a single task, origin_bridge_submit_task to create). Lacks usage context.

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

origin_bridge_shutdownA

Ask the Origin GUI bridge to stop serving requests.

By default this releases the Origin automation connection without closing Origin itself. Set close_origin=True to force-close Origin as part of shutdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoOptional Origin bridge host override. Normally omit to use configured localhost.
portNoOptional Origin bridge TCP port override. Normally omit to use the handshake value.
tokenNoOptional bridge authentication token override. Normally omit to use the handshake.
timeoutNoBridge request timeout in seconds; null uses the configured default.
close_originNoWhether bridge shutdown should also force-close the Origin application.
release_originNoWhether bridge shutdown should release its Origin automation connection.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of disclosing behavioral traits. It accurately describes that the tool releases the automation connection by default and can force-close Origin when close_origin=True. This covers the key behavioral aspects, though it omits details about error handling or other 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.

Conciseness5/5

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

The description is extremely concise, consisting of two sentences with no superfluous information. It front-loads the main action and provides additional detail in the second sentence, making it easy to scan.

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 (all optional) and an output schema, the description adequately covers the essential behavior and the key parameter (close_origin). It does not explain return values, but the output schema likely handles that. The description is complete enough for an agent to understand the tool's core functionality.

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

Parameters3/5

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

The input schema has 100% coverage, so the baseline is 3. The description adds some context beyond the schema by explaining the default behavior for close_origin and the release action, but it does not substantially enrich the parameter meanings beyond what the schema already provides.

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: to ask the Origin GUI bridge to stop serving requests. It uses specific verbs ('stop serving') and distinguishes itself from sibling tools like origin_bridge_submit_task or origin_bridge_list_tasks, which are clearly different operations.

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

Usage Guidelines3/5

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

The description explains the default behavior and how to force-close Origin via close_origin=True, but it does not explicitly state when to use this tool instead of alternatives, nor does it provide exclusions or prerequisites. Usage guidance is implied but not comprehensive.

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

origin_bridge_submit_taskC

Submit a supported Origin bridge method as a queued background task.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoOptional Origin bridge host override. Normally omit to use configured localhost.
portNoOptional Origin bridge TCP port override. Normally omit to use the handshake value.
tokenNoOptional bridge authentication token override. Normally omit to use the handshake.
methodYesAllowlisted Origin bridge method to run as a background task.
paramsNoKeyword arguments passed to the selected allowlisted bridge method.
timeoutNoBridge request timeout in seconds; null uses the configured default.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/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 only hints at asynchronous execution ('queued background task') but does not disclose side effects, authentication requirements, error handling, or whether it is destructive. This is insufficient for a task submission tool.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It efficiently conveys the core action, though it could benefit from slightly more structure (e.g., front-loading key constraints).

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?

Despite output schema existing, the description lacks important context: valid methods, task lifecycle, error handling, and how to retrieve results. Given the complexity (6 parameters, no annotations), more complete context is needed for effective use.

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

Parameters3/5

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

Input schema has 100% coverage with adequate parameter descriptions. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('submit') and resource ('supported Origin bridge method') and indicates the result is a 'queued background task', distinguishing it from sibling tools like cancel or list tasks. However, it could be more explicit about the nature of 'Origin bridge' and the queuing behavior.

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., submitting directly). There are no prerequisites, error conditions, or mentions of other bridge task management tools among the listed siblings.

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

origin_bridge_task_statusB

Read status, result, or optional recent logs for an Origin bridge background task.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoOptional Origin bridge host override. Normally omit to use configured localhost.
portNoOptional Origin bridge TCP port override. Normally omit to use the handshake value.
tokenNoOptional bridge authentication token override. Normally omit to use the handshake.
task_idYesBackground task identifier returned by origin_bridge_submit_task.
timeoutNoBridge request timeout in seconds; null uses the configured default.
log_limitNoMaximum number of recent background-task log records to return.
include_logsNoWhether to include recent background-task log records in the response.
include_resultNoWhether to include a completed background task's result payload.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states 'Read' suggesting non-destructive behavior, but does not disclose potential behaviors like error handling, blocking nature, or prerequisites. The description is too brief to convey behavioral traits beyond the basic read action.

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, no wasted words. The key information is front-loaded. Every word 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?

With 8 parameters and an output schema, the description is minimal. It does not explain parameter interdependencies (e.g., log_limit effect when include_logs is false) or scenarios. However, the presence of an output schema reduces the need to describe return values, keeping the score at a mid level.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. The description does not add new meaning beyond what the schema already provides for each parameter. It mentions 'status, result, or optional recent logs' which aligns with include_result and include_logs, but the schema covers those details.

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 the specific verb 'Read' and clearly identifies the resource as 'status, result, or optional recent logs for an Origin bridge background task'. It effectively distinguishes from sibling tools like origin_bridge_cancel_task and origin_bridge_list_tasks.

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. It does not mention prerequisites (e.g., after submitting a task) or when not to use it. The description implies checking task status but lacks comparative context.

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

origin_browse_knowledgeA

List knowledge collections or browse one collection by slash-delimited path.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoSlash-delimited entry path within the collection, for example analysis/workflow. Omit to list the collection's immediate children.
versionNoOptional Origin documentation version filter, such as 2026b.
collectionNoKnowledge collection. Omit to list collections; allowed names are in the schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates read-only behavior ('List' and 'browse') but does not disclose edge cases (e.g., invalid path) or failure modes. Acceptable for a listing tool but lacks depth.

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 single 10-word sentence that immediately conveys the purpose without wasted words. It is front-loaded with the primary action and succinctly covers both listing and browsing modes.

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 high schema coverage and the presence of an output schema, the description sufficiently explains the tool's core functionality. It could mention result format or pagination, but the output schema likely covers that. Minor omission but not critical.

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

Parameters3/5

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

The schema description coverage is 100%, with each parameter having a descriptive comment. The tool description adds context about slash-delimited paths, but the schema already explains the 'topic' parameter similarly. Baseline 3 is appropriate as the description adds marginal value over 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 lists knowledge collections or browses a collection by slash-delimited path. It uses a specific verb ('List' and 'browse') and resource ('knowledge collections'), and implicitly distinguishes from sibling tools like origin_query_knowledge which queries content.

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: omit collection to list collections, provide collection to browse. However, it does not explicitly state when not to use the tool or mention alternatives among siblings, leaving some ambiguity for complex scenarios.

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

origin_capabilitiesB

Report runtime capabilities; set show only to change Origin visibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
showNoWhether Origin should be visible after connecting or querying capabilities.
refreshNoWhether to bypass cached capability data and query Origin again.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must bear the full burden of behavioral disclosure. It discloses that setting 'show' changes Origin visibility, implying a side effect beyond reporting. However, it omits details about read-only nature, output format, or other potential impacts, leaving significant gaps.

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 single, front-loaded sentence of 12 words. Every word contributes meaning, with no redundancy or fluff. It efficiently conveys the primary purpose and a key behavioral note.

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 presence of an output schema (not shown), return values are covered. The description covers the core purpose and one parameter effect, but lacks context about typical usage, relationship to siblings, and what 'runtime capabilities' entails. It is minimally adequate but not complete.

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

Parameters3/5

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

Schema coverage is 100% (both parameters described in schema), so baseline is 3. The description adds value for 'show' by explaining its effect on Origin visibility, but provides no extra context for 'refresh'. Overall, the addition is marginal but positive.

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

Purpose4/5

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

The description clearly states the tool reports runtime capabilities, with a specific verb ('report') and resource ('runtime capabilities'). It also notes a secondary effect of the 'show' parameter. While it doesn't explicitly differentiate from sibling tools, the unique purpose is implied by the name and context.

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 vs. alternatives. There is no mention of prerequisites, typical use cases, or conditions under which this tool is preferred over sibling tools like 'origin_ping' or 'origin_query_knowledge'.

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

origin_diagnose_worksheetA

Check worksheet data quality before plotting or analysis.

Reports per-column dtype, missing count/fraction, and unique count, plus structured issues: empty_worksheet and all_null_column (error), high_missing and duplicate_columns (warning), non_numeric_column and constant_column (info). high_missing_threshold is the missing fraction (0-1) that triggers a high_missing warning. "passed" is false when any error-severity issue is found.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNoColumn names or zero-based column indexes selected for this operation.
book_nameNoOrigin workbook name. Omit to use the active workbook or the tool default.
sheet_nameNoOrigin worksheet name. Omit to use the active sheet or the tool default.
high_missing_thresholdNoMissing-value fraction from 0 through 1 that triggers a high_missing warning.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully discloses expected outputs: column stats, issue list with severities, and 'passed' flag. It details threshold behavior and issue triggers, though it could mention read-only nature explicitly.

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 front-loaded purpose statement. Every sentence adds information—no redundant or filler 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?

Given the output schema exists, the description adequately covers behavior and expected results. It could mention that the tool is read-only, but overall it is complete for a diagnostic 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 100%, so baseline 3. The description adds value by explaining high_missing_threshold range and the meaning of 'passed' false, going beyond the schema's basic parameter 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 checks worksheet data quality before plotting or analysis, listing specific reports (dtype, missing, unique) and issue types. This distinguishes it from sibling tools like origin_read_worksheet and origin_plot.

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?

Explicitly says to use 'before plotting or analysis', providing clear context. However, it does not mention when not to use or list alternatives, though no sibling tool has similar purpose.

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

origin_doctorA

Diagnose Origin bridge configuration, status file, and connectivity.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoOptional Origin bridge host override. Normally omit to use configured localhost.
portNoOptional Origin bridge TCP port override. Normally omit to use the handshake value.
tokenNoOptional bridge authentication token override. Normally omit to use the handshake.
timeoutNoBridge request timeout in seconds; null uses the configured default.
ping_originNoWhether diagnostics should also make a live request to Origin.
status_pathNoOptional bridge status-file path override used by diagnostics.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 disclosure. It mentions diagnosing connectivity but does not specify whether the tool makes live requests (though ping_origin parameter hints at this), requires authentication, or is read-only. The behavioral traits are under-specified.

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 single, direct sentence of 8 words, front-loading the purpose with no extraneous detail. Every word earns its place.

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

Completeness3/5

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

Given 6 optional parameters and an output schema, the description is quite minimal. It does not explain the output format or the optional behavior like ping_origin. While output schema reduces burden, the tool's overall diagnostic flow is not fully conveyed, leaving gaps for a complex tool.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter having a description. The tool description adds no additional meaning beyond listing the areas (configuration, status file, connectivity), which maps to parameters. Baseline 3 is appropriate as schema does the heavy lifting.

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 the specific verb 'Diagnose' and clearly identifies the resource as 'Origin bridge configuration, status file, and connectivity'. This distinguishes it from sibling tools like origin_ping (simple ping) and origin_bridge_* (task management), providing a clear scope.

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 diagnostic use through the name 'doctor' and the listed areas, but it does not explicitly state when to use this tool versus alternatives like origin_ping or other bridge tools. No guidance on prerequisites or exclusions is provided.

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

origin_execute_figure_specB

Execute a declarative FigureSpec.

The current executor supports worksheet-backed single-panel and grid multi-panel figures with common plot types. Unsupported features are reported in the plan instead of being guessed.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYesDeclarative FigureSpec describing data, layout, plots, style, export, and QA.
dry_runNoValidate and plan the operation without changing the Origin project.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 the full burden. It mentions supported features and that unsupported ones are reported in the plan, but lacks details on side effects (e.g., project modification), blocking behavior, or error handling. For a complex tool, this is insufficient.

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 three sentences, front-loaded with purpose, and avoids redundancy. It earns its place, though 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 the input schema (nested objects, many options), the description is too sparse. It does not explain the tool's lifecycle, return values (though output schema exists), or how it integrates with other tools like origin_plan_figure_spec. More guidance would significantly improve usability.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already describes both parameters adequately (spec as 'Declarative FigureSpec...', dry_run as validation without changes). The description adds minimal semantic value beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it executes a declarative FigureSpec, distinguishing it from planning tools like origin_plan_figure_spec. The verb 'execute' combined with the resource 'FigureSpec' 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 Guidelines3/5

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

The description implies use cases for generating figures from specs, but does not explicitly state when to use this tool over siblings like origin_plan_figure_spec or origin_export_graph. No when-not or alternative guidance is provided.

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

origin_export_graphB

Export the active or named Origin graph to an image/PDF file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFilesystem path consumed or produced by this tool; see the tool description.
widthNoExport width in pixels; zero preserves Origin's default export width.
overwriteNoWhether an existing output file may be replaced.
graph_nameNoOrigin graph page name. Omit to use the active graph or create a new page.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It does not disclose behavioral details such as what happens if the file exists (handled by overwrite parameter but not described), how file format is determined, or the effect on the Origin graph. The mention of 'create a new page' for graph_name is in the schema but not in the description.

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?

Single sentence, front-loaded with key information. Very concise, though it could incorporate more usage guidance or behavioral context without losing brevity. 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?

Output schema exists, so return values are covered. The description lacks context on the export process, file format handling, and interaction with the active graph. Adequate for a simple tool but leaves some gaps.

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

Parameters3/5

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

Schema coverage is 100% with each parameter having a description. The description does not add additional meaning beyond the schema; it merely restates the overall purpose. Baseline of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action (Export), resource (Origin graph), and output format (image/PDF). It distinguishes from siblings like origin_view_graph (viewing) and origin_format_graph (formatting). The verb and resource are 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 implies usage for exporting graphs to files but provides no explicit guidance on when to use this tool vs alternatives (e.g., origin_format_graph for in-memory formatting) or when not to use it. 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.

origin_format_graphB

Set graph long name, axis labels, legend visibility, and optional rescale.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional graph page long name.
rescaleNoWhether to rescale graph axes after formatting.
x_labelNoOptional X axis title.
y_labelNoOptional Y axis title.
graph_nameNoOptional graph page name.
show_legendNoSet legend visibility when provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits, but it only lists what can be set. It doesn't explain side effects (e.g., rescale behavior), whether it modifies in-place, or if the graph must be active. Minimal 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?

Single sentence, no wasted words. Could be slightly more structured but appropriately concise.

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?

Complexity is moderate (6 params, output schema present), but description is minimal. No mention of return value, no guidance on when rescale is needed, and no explanation of formatting effects.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds a summary grouping of parameters but no new constraints or interdependencies beyond what schema provides.

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 graph long name, axis labels, legend visibility, and optional rescale. It distinguishes from sibling tools like origin_export_graph or origin_plot by focusing on formatting an existing graph.

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. No mention of prerequisites (e.g., graph must exist) or context like 'use after plotting'.

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

origin_get_graph_infoB

Inspect a graph page, its layers, axes, and plots.

ParametersJSON Schema
NameRequiredDescriptionDefault
graph_nameNoOrigin graph page name. Omit to use the active graph or create a new page.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries full burden. It only states 'Inspect', implying read-only, but does not disclose potential creation of a new page when graph_name is omitted (as hinted in the parameter description). 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 a single sentence, directly stating the purpose without any extraneous words. It is optimally concise and 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 the tool's simplicity (one optional parameter, output schema present), the description is adequate but misses contextual details like default behavior (active graph vs. new page) and what the output contains. The parameter description fills some gaps, but the tool description alone is not fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The tool description adds no further meaning beyond what the schema already provides for the parameter.

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 ('Inspect') and identifies the resource ('graph page, its layers, axes, and plots'), clearly distinguishing it from siblings like origin_view_graph (view) and origin_export_graph (export).

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., origin_view_graph for rendering, origin_browse_knowledge for knowledge queries). The description lacks context for selection.

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

origin_import_tableB

Import a CSV, TSV, TXT, DAT, XLS, or XLSX file into a new Origin worksheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to a CSV, TSV, TXT, DAT, XLS, or XLSX file.
nrowsNoMaximum number of data rows to read.
headerNoZero-based row number to use as column names.
encodingNoOptional text file encoding.
skiprowsNoRows to skip while reading.
book_nameNoOptional Origin workbook name.
delimiterNoDelimiter for text files. If omitted, CSV/TSV defaults or auto-detection are used.
na_valuesNoAdditional missing value markers.
sheet_nameNoOptional Origin worksheet name.
excel_sheetNoExcel sheet name or zero-based index. Ignored for text files.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/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 states the tool imports into a 'new' worksheet, yet parameters like book_name and sheet_name suggest existing workbooks/worksheets can be specified, creating ambiguity. No mention of side effects, file existence requirements, error handling, 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?

The description is a single concise sentence that front-loads the core action and object, with no extraneous words. It efficiently communicates the essential purpose.

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's complexity (10 parameters, no annotations, but with an output schema), the description is insufficiently complete. It omits any mention of return values, error conditions, behavior when files or sheets don't exist, or the relationship between parameters like book_name and the 'new' worksheet claim.

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

Parameters3/5

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

The input schema covers all 10 parameters with descriptions (100% schema coverage), so the description adds no extra parameter-level meaning. Baseline 3 is appropriate; the description lists file types which partially reinforces the path parameter but does not deepen understanding of other parameters like encoding or na_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 the tool's function: importing specific file formats (CSV, TSV, etc.) into a new Origin worksheet. It uses a specific verb ('Import') and resource ('Origin worksheet'), effectively distinguishing it from sibling tools like origin_read_worksheet or origin_write_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 usage for importing external data files into a new worksheet but provides no explicit guidance on when to use this tool versus alternatives, such as origin_read_worksheet for reading existing data or origin_write_worksheet for writing data. No when-not or alternative references are given.

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

origin_pingA

Connect to Origin/OriginPro and report basic status.

ParametersJSON Schema
NameRequiredDescriptionDefault
showNoWhether Origin should be visible after connecting or querying capabilities.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description must cover behaviors. It mentions connecting and reporting status, but does not specify what status includes or side effects (e.g., making Origin visible via 'show' parameter). Adequate but not detailed.

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?

One efficient sentence with no wasted words, but could be slightly more informative without becoming verbose.

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

Completeness4/5

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

Given the simple tool, full schema coverage, and existence of an output schema, the description is largely complete. Only missing details about the status report format.

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

Parameters3/5

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

Schema description coverage is 100%, and the tool description does not add extra meaning beyond the schema's parameter description. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool connects to Origin/OriginPro and reports basic status, which is a distinct purpose from sibling tools that perform specific operations like task management or plotting.

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 versus alternatives, but the purpose is straightforward and implies use for connectivity checks before other operations.

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

origin_plan_figure_specC

Validate a declarative FigureSpec and return the planned Origin operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYesDeclarative FigureSpec describing data, layout, plots, style, export, and QA.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, and the description fails to disclose important behavioral traits: side effects (none, but not stated), resource requirements, or error handling. The word 'validate' implies read-only, but this is not explicit.

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

Conciseness3/5

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

The description is a single sentence, which is concise but may be too brief for a tool with a complex input schema. It earns its place but lacks structured detail like bullet points or sections.

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 the FigureSpec and the absence of annotations, the description is incomplete. It does not explain the return format (planned operations), validation behavior, or potential errors. An output schema exists but its content is not leveraged.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds only generic phrasing ('Declarative FigureSpec describing data, layout, plots, style, export, and QA'), which adds minimal insight beyond the schema field descriptions.

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

Purpose4/5

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

The description clearly states the tool validates a FigureSpec and returns planned Origin operations, distinguishing it from execution-oriented siblings like origin_execute_figure_spec. The verb 'validate' and noun 'FigureSpec' are specific.

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., execute vs plan), no prerequisites or conditions for use. The description provides no when-to-use or when-not-to-use information.

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

origin_plotA

Create a table-based plot selected by kind.

A single parameterized entry point for common table plots and the Plot Type ID routes that each also have a dedicated origin_plot_* tool. For the common line/scatter/line_symbol/column routes, selected_cols uses the first column as X and the remaining columns as Y. A one-column selection is treated as Y-only. Matrix-range plots still use origin_plot_matrix_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesTable plot kind. The schema lists every compact-route kind supported by this tool.
pathYesFilesystem path consumed or produced by this tool; see the tool description.
titleNoOptional Origin page long name or graph title.
graph_nameNoOrigin graph page name. Omit to use the active graph or create a new page.
style_modeNoGraph styling policy: origin_default preserves the Origin template; nature applies the origin-mcp scientific preset.origin_default
export_pathNoOptional output path for exporting the created graph.
selected_colsNoColumn names or zero-based indexes to include in the plot.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/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 discloses how selected_cols maps columns (first as X, rest as Y, one-column as Y-only), but does not address potential side effects like overwriting existing graphs, permissions, or rate limits. Moderate 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 with six sentences, front-loading the core purpose, and each sentence provides necessary context 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?

Given the complexity (7 params, 2 required, many kinds) and presence of output schema, the description covers key usage aspects and behavioral details. Minor gap: no mention of whether plots are created on new or existing graphs (addressed partially in graph_name param).

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds significant value beyond schema by explaining how selected_cols interprets column order (X vs Y), which is not detailed in the parameter 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 creates a table-based plot selected by kind, uses specific verb 'Create' and resource 'table-based plot', and distinguishes itself from sibling tools like dedicated origin_plot_* tools and matrix plot routes.

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 explicitly explains when to use this tool vs dedicated origin_plot_* tools (single parameterized entry point) and mentions that matrix-range plots still use origin_plot_matrix_id, providing clear alternatives.

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

origin_plot_autoA

Inspect table columns, select a suitable chart route, and create the plot.

Provide intent when the desired comparison or relationship is known. Otherwise the router uses column types, cardinality, and selected X/Y/Z or error columns. Use origin_recommend_chart first when no graph should be created yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to a CSV, TSV, TXT, DAT, XLS, or XLSX file.
nrowsNoMaximum number of data rows to read.
titleNoOptional graph page long name.
x_colNoColumn name or zero-based index to use as X. Defaults to the first column.
z_colNoOptional Z column for contour/XYZ plots.
headerNoZero-based row number to use as column names.
intentNoOptional natural-language chart intent used to guide automatic routing.
y_colsNoColumn names or zero-based indexes to plot as Y. Defaults to all non-X columns.
x_labelNoOptional X axis title.
y_labelNoOptional Y axis title.
encodingNoOptional text file encoding.
skiprowsNoRows to skip while reading.
book_nameNoOptional Origin workbook name.
delimiterNoDelimiter for text files. If omitted, CSV/TSV defaults or auto-detection are used.
na_valuesNoAdditional missing value markers.
graph_nameNoOptional Origin graph page name.
sheet_nameNoOptional Origin worksheet name.
style_modeNoGraph styling policy. origin_default/template/theme/none preserve Origin template defaults; nature applies origin-mcp styling after plotting.origin_default
excel_sheetNoExcel sheet name or zero-based index. Ignored for text files.
export_pathNoOptional graph export path.
x_error_colNoOptional X error column.
y_error_colNoOptional Y error column.
palette_nameNoOptional registered color palette name used by the selected style mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 discloses that the tool inspects columns, selects chart route, creates plot, and uses intent or column properties. However, it does not mention potential side effects (e.g., modifying workbook), permissions, or failure cases. Adequate but not detailed.

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?

Four sentences, front-loaded with purpose, then usage guidance. No unnecessary words. Efficient and well-structured.

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 complex tool with 23 parameters and output schema present, the description covers core behavior and usage. It lacks details on error handling or return values, but output schema likely covers that. Good overall completeness.

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

Parameters3/5

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

Schema description coverage is 100%. The description adds marginal value: explains intent role and default for y_cols. Baseline 3 is appropriate since schema already documents parameters 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?

Description clearly states 'Inspect table columns, select a suitable chart route, and create the plot.' It names specific verb+resource (inspect, select, create) and distinguishes sibling tool origin_recommend_chart by advising to use it first when no graph should be created.

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?

Explicit guidance: 'Use origin_recommend_chart first when no graph should be created yet.' Also explains when to provide intent parameter and how the router works. Provides clear context for using this tool vs. alternatives.

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

origin_query_knowledgeC

Search the local Origin knowledge base by keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of matching or recent records to return.
queryYesKeyword query matched against local knowledge titles, summaries, and bodies.
versionNoOptional Origin documentation version filter, such as 2026b.
collectionNoOptional knowledge collection filter; allowed names are in the schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description carries full burden for behavioral disclosure. It does not mention that results may include recent records if no match, order, pagination, or whether the search is case-sensitive. Critical behavioral details from schema (like default limit) are omitted.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that conveys the core purpose concisely. It is appropriately sized for a simple tool but could benefit from additional detail without losing brevity.

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 presence of 4 parameters and an output schema, the description is too minimal. It does not explain search semantics, result ordering, or filtering behavior, which are important for effective use.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already well-documented. The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.

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?

Description states 'Search the local Origin knowledge base by keyword,' which clearly identifies the action (search), resource (local knowledge base), and method (by keyword). However, it does not differentiate this tool from the sibling 'origin_browse_knowledge', which likely serves a similar purpose.

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 'origin_browse_knowledge' or other search tools. The description lacks context on prerequisites, use cases, 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.

origin_read_worksheetB

Read a window of Origin worksheet data as structured rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNoColumn names or zero-based column indexes selected for this operation.
max_rowsNoMaximum number of worksheet rows to return.
book_nameNoOrigin workbook name. Omit to use the active workbook or the tool default.
start_rowNoZero-based worksheet row at which reading begins.
sheet_nameNoOrigin worksheet name. Omit to use the active sheet or the tool default.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It mentions 'read' but does not clarify idempotency, side effects, or access requirements. The description is too brief for a tool with no annotations.

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

Conciseness4/5

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

Single sentence, no fluff, front-loaded. Could be slightly more descriptive about the return format, but efficiency is good.

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?

With 5 parameters and an output schema, the description is too minimal. It does not explain 'structured rows', row limits, or behavior when parameters are omitted. More context needed for a data-reading tool.

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

Parameters3/5

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

Schema description coverage is 100% with full parameter descriptions. The description adds no additional meaning beyond schema; baseline is 3.

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

Purpose5/5

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

The description uses a specific verb ('Read') and resource ('Origin worksheet data as structured rows'), clearly distinguishing it from siblings like origin_write_worksheet and origin_diagnose_worksheet.

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; lacks context for when not to use or prerequisites. The description is purely functional.

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

origin_recommend_chartB

Recommend chart types from table shape, column semantics, and optional intent.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to a CSV, TSV, TXT, DAT, XLS, or XLSX file.
nrowsNoMaximum number of data rows to read.
x_colNoColumn name or zero-based index to use as X. Defaults to the first column.
z_colNoOptional Z column for contour/XYZ plots.
headerNoZero-based row number to use as column names.
intentNoOptional natural-language chart intent used to guide automatic routing.
y_colsNoColumn names or zero-based indexes to plot as Y. Defaults to all non-X columns.
encodingNoOptional text file encoding.
skiprowsNoRows to skip while reading.
delimiterNoDelimiter for text files. If omitted, CSV/TSV defaults or auto-detection are used.
na_valuesNoAdditional missing value markers.
excel_sheetNoExcel sheet name or zero-based index. Ignored for text files.
x_error_colNoOptional X error column.
y_error_colNoOptional Y error column.
max_recommendationsNoMaximum number of ranked chart recommendations to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/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 but does not disclose behavioral traits like what happens when data cannot be read, how recommendations are ranked, or error handling. It only gives a high-level overview.

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

Conciseness4/5

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

The description is a single, focused sentence that front-loads the core action. It could be slightly more informative without sacrificing 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 tool has 15 parameters, no annotations, and an output schema, the description is too minimal. It does not explain the recommendation logic, output format, or how to interpret results, leaving the agent under-informed.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description hints at some parameters (table shape, column semantics, intent) but adds little beyond the schema's parameter names and 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 the tool recommends chart types based on table shape, column semantics, and optional intent. It uses a specific verb ('recommend') and resource ('chart types'), differentiating from sibling tools like origin_plot which actually plot 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?

The description provides no guidance on when to use this tool versus alternatives such as origin_plot_auto or origin_plan_figure_spec. It does not mention prerequisites, exclusions, or typical use cases.

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

origin_run_analysisA

Run a supported Origin analysis and return structured metrics or output rows.

Use include_output=True with output_sheet for analyses that create a worksheet. The analysis schema lists canonical names; aliases remain accepted for backward compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
x_colNoOptional X column.
y_colNoOptional Y column.
optionsNoAnalysis-specific options. Examples: polynomial_fit uses order; smooth uses method and points; peak_find uses direction, threshold, and smooth_points; t-tests use tail and alpha; fft/ifft use window and sampling_interval. Set recalculate to none/0, auto/1, or manual/2 to create a recalculating Origin operation.
analysisYesCanonical analysis name. Supported values are listed in the schema; common choices include linear_fit, polynomial_fit, smooth, peak_find, fft, and correlation.
worksheetNoWorksheet range or book/sheet reference.
output_sheetNoOptional output sheet/name hint.
include_outputNoRead output worksheet rows back into the response when possible.
output_max_rowsNoMaximum rows to read from an output worksheet.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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 that include_output=True is for analyses creating worksheets and mentions backward compatibility for aliases. However, it does not explain key behaviors such as synchronous vs asynchronous execution, data mutation, permissions, or error handling, which are important for agent decision-making.

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 three sentences, front-loaded with the core purpose, then a key usage note, then clarification about schema naming. Every sentence serves a purpose without redundancy or 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 complexity of 8 parameters, an output schema, and the existence of sibling tools, the description covers the main purpose and key usage pattern. It could be more complete by explaining the return format or prerequisites, but the output schema likely fills some gaps. Overall, it is adequate for a tool with good schema coverage.

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 100% coverage with each parameter described. The description adds significant value by providing concrete examples for the options parameter (e.g., polynomial_fit uses order, smooth uses method and points) and explaining the recalculate sub-option. This extra context helps the agent understand how to set analysis-specific 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 clearly states the tool runs a supported Origin analysis and returns structured metrics or output rows. It provides specific details about using include_output with output_sheet for worksheet-creating analyses, and distinguishes this tool from siblings by focusing on analysis execution versus other operations like plotting or reading worksheets.

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 gives guidance on when to use include_output=True with output_sheet, and mentions that aliases are accepted for backward compatibility. However, it does not explicitly state when not to use this tool or provide alternatives from the sibling list, leaving some ambiguity about best practices.

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

origin_run_labtalkB

Execute LabTalk script text inside Origin and optionally return captured output.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYesLabTalk script text to execute inside the connected Origin application.
capture_logNoWhether to capture and return LabTalk output produced by the script.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/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 such as side effects, requirements, or limitations, but it only states the basic function and optional output capture.

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, well-structured sentence that is front-loaded with the key action and resource, containing no extraneous 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?

While the output schema exists to explain return values, the description lacks context on prerequisites, error handling, or when to prefer this over sibling tools.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters; the tool description adds no additional meaning 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 explicitly states it executes LabTalk script text and optionally returns output, clearly distinguishing it from siblings like origin_run_analysis which runs analysis routines.

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 usage guidelines provided; does not state when to use this tool versus alternatives like origin_run_analysis or origin_plot.

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

origin_view_graphA

Render an Origin graph and return it as an image the model can see.

Unlike origin_export_graph this leaves no file behind: the graph is rendered to a temporary PNG, returned as an image content block alongside a small text summary, and the temp file is deleted. Use it to visually verify a plot and iterate on it. max_width bounds the rendered pixel width to keep the returned image (and its token cost) small. Requires a vision-capable client to be useful.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_widthNoMaximum rendered image width in pixels.
graph_nameNoOrigin graph page name. Omit to use the active graph or create a new page.

TDQS

A4.4/5.0
Behavior4/5

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

Describes rendering to temp PNG, returning as image content block with text summary, and deleting temp file. Mentions max_width bounds token cost. No annotations provided, so description carries the burden well. Could explicitly state read-only behavior, but overall 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?

Two sentences with no fluff. Front-loaded with purpose. Student if additional details needed, but highly 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?

No output schema, but description explains return format (image + text summary). Covers parameters, behavior, and distinction from sibling. Minor missing details about summary content but adequate for selection.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds meaningful context: max_width limits pixel width for token cost, graph_name usage (active graph or new page). Exceeds baseline.

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 'Render an Origin graph and return it as an image the model can see.' It uses a specific verb-resource pair and distinguishes itself from sibling origin_export_graph by noting no file is left behind.

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?

Explicitly says 'Use it to visually verify a plot and iterate on it.' Contrasts with export_graph to guide selection. Mentions vision-capable client requirement. Doesn't list all alternatives, but provides clear context.

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

origin_write_worksheetB

Write structured rows into a new or existing Origin worksheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYesRows to write, as objects keyed by column name or arrays matching columns.
createNoWhether to create the target Origin object when it does not already exist.
columnsNoColumn names for object rows. For array rows, these names define the array order.
book_nameNoOrigin workbook name. Omit to use the active workbook or the tool default.
start_colNoColumn name or zero-based column index at which writing begins.
sheet_nameNoOrigin worksheet name. Omit to use the active sheet or the tool default.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits. It only states the basic operation, omitting key details like whether data is appended or overwritten, error handling, required permissions, or what happens when the worksheet doesn't exist (though a 'create' parameter exists, its behavior is not explained in the description). This is insufficient 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 a single, well-formed sentence with no extraneous words. It is concise and front-loaded with the 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?

Given the presence of an output schema, return values need not be explained. However, the description lacks behavioral context (e.g., overwrite vs. append) and does not mention the tool's interaction with active sheets/workbooks, leaving the agent uncertain about side effects. It is minimally adequate but incomplete for safe autonomous use.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema; it merely restates 'structured rows' without clarifying the interplay between 'rows', 'columns', and 'start_col' or the implications of 'create'.

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 structured rows') and the resource ('into a new or existing Origin worksheet'), using a specific verb+resource pattern that distinguishes it from sibling tools like origin_read_worksheet or origin_diagnose_worksheet.

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, nor any exclusions or prerequisites. Sibling tools like origin_read_worksheet or origin_diagnose_worksheet appear in the list, but no differentiation is offered.

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. 25 tool updatesv0.1.3
    • Changedorigin_bridge_cancel_task5 fields changed
      • addedInput schema / properties / host / description
        Added value: +"Optional Origin bridge host override. Normally omit to use configured localhost."
      • addedInput schema / properties / port / description
        Added value: +"Optional Origin bridge TCP port override. Normally omit to use the handshake value."
      • addedInput schema / properties / task_id / description
        Added value: +"Background task identifier returned by origin_bridge_submit_task."
      • addedInput schema / properties / timeout / description
        Added value: +"Bridge request timeout in seconds; null uses the configured default."
      • addedInput schema / properties / token / description
        Added value: +"Optional bridge authentication token override. Normally omit to use the handshake."
    • Changedorigin_bridge_list_tasks5 fields changed
      • addedInput schema / properties / host / description
        Added value: +"Optional Origin bridge host override. Normally omit to use configured localhost."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of matching or recent records to return."
      • addedInput schema / properties / port / description
        Added value: +"Optional Origin bridge TCP port override. Normally omit to use the handshake value."
      • addedInput schema / properties / timeout / description
        Added value: +"Bridge request timeout in seconds; null uses the configured default."
      • addedInput schema / properties / token / description
        Added value: +"Optional bridge authentication token override. Normally omit to use the handshake."
    • Changedorigin_bridge_shutdown6 fields changed
      • addedInput schema / properties / close_origin / description
        Added value: +"Whether bridge shutdown should also force-close the Origin application."
      • addedInput schema / properties / host / description
        Added value: +"Optional Origin bridge host override. Normally omit to use configured localhost."
      • addedInput schema / properties / port / description
        Added value: +"Optional Origin bridge TCP port override. Normally omit to use the handshake value."
      • addedInput schema / properties / release_origin / description
        Added value: +"Whether bridge shutdown should release its Origin automation connection."
      • addedInput schema / properties / timeout / description
        Added value: +"Bridge request timeout in seconds; null uses the configured default."
      • addedInput schema / properties / token / description
        Added value: +"Optional bridge authentication token override. Normally omit to use the handshake."
    • Changedorigin_bridge_submit_task6 fields changed
      • addedInput schema / properties / host / description
        Added value: +"Optional Origin bridge host override. Normally omit to use configured localhost."
      • addedInput schema / properties / method / description
        Added value: +"Allowlisted Origin bridge method to run as a background task."
      • addedInput schema / properties / params / description
        Added value: +"Keyword arguments passed to the selected allowlisted bridge method."
      • addedInput schema / properties / port / description
        Added value: +"Optional Origin bridge TCP port override. Normally omit to use the handshake value."
      • addedInput schema / properties / timeout / description
        Added value: +"Bridge request timeout in seconds; null uses the configured default."
      • addedInput schema / properties / token / description
        Added value: +"Optional bridge authentication token override. Normally omit to use the handshake."
    • Changedorigin_bridge_task_status8 fields changed
      • addedInput schema / properties / host / description
        Added value: +"Optional Origin bridge host override. Normally omit to use configured localhost."
      • addedInput schema / properties / include_logs / description
        Added value: +"Whether to include recent background-task log records in the response."
      • addedInput schema / properties / include_result / description
        Added value: +"Whether to include a completed background task's result payload."
      • addedInput schema / properties / log_limit / description
        Added value: +"Maximum number of recent background-task log records to return."
      • addedInput schema / properties / port / description
        Added value: +"Optional Origin bridge TCP port override. Normally omit to use the handshake value."
      • addedInput schema / properties / task_id / description
        Added value: +"Background task identifier returned by origin_bridge_submit_task."
      • addedInput schema / properties / timeout / description
        Added value: +"Bridge request timeout in seconds; null uses the configured default."
      • addedInput schema / properties / token / description
        Added value: +"Optional bridge authentication token override. Normally omit to use the handshake."
    • Changedorigin_browse_knowledge4 fields changed
      • addedInput schema / properties / collection / description
        Added value: +"Knowledge collection. Omit to list collections; allowed names are in the schema."
      • addedInput schema / properties / collection / enum
        Added value: +[
        +  "labtalk",
        +  "mcp_tools",
        +  "official_docs",
        +  "python_api",
        +  "reference"
        +]
      • addedInput schema / properties / topic / description
        Added value: +"Slash-delimited entry path within the collection, for example analysis/workflow. Omit to list the collection's immediate children."
      • addedInput schema / properties / version / description
        Added value: +"Optional Origin documentation version filter, such as 2026b."
    • Changedorigin_capabilities2 fields changed
      • addedInput schema / properties / refresh / description
        Added value: +"Whether to bypass cached capability data and query Origin again."
      • addedInput schema / properties / show / description
        Added value: +"Whether Origin should be visible after connecting or querying capabilities."
    • Changedorigin_diagnose_worksheet6 fields changed
      • addedInput schema / properties / book_name / description
        Added value: +"Origin workbook name. Omit to use the active workbook or the tool default."
      • addedInput schema / properties / columns / description
        Added value: +"Column names or zero-based column indexes selected for this operation."
      • addedInput schema / properties / high_missing_threshold / description
        Added value: +"Missing-value fraction from 0 through 1 that triggers a high_missing warning."
      • addedInput schema / properties / high_missing_threshold / maximum
        Added value: +1
      • addedInput schema / properties / high_missing_threshold / minimum
        Added value: +0
      • addedInput schema / properties / sheet_name / description
        Added value: +"Origin worksheet name. Omit to use the active sheet or the tool default."
    • Changedorigin_doctor6 fields changed
      • addedInput schema / properties / host / description
        Added value: +"Optional Origin bridge host override. Normally omit to use configured localhost."
      • addedInput schema / properties / ping_origin / description
        Added value: +"Whether diagnostics should also make a live request to Origin."
      • addedInput schema / properties / port / description
        Added value: +"Optional Origin bridge TCP port override. Normally omit to use the handshake value."
      • addedInput schema / properties / status_path / description
        Added value: +"Optional bridge status-file path override used by diagnostics."
      • addedInput schema / properties / timeout / description
        Added value: +"Bridge request timeout in seconds; null uses the configured default."
      • addedInput schema / properties / token / description
        Added value: +"Optional bridge authentication token override. Normally omit to use the handshake."
    • Changedorigin_execute_figure_spec7 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "FigureAnnotationSpec": {
        +    "properties": {
        +      "frame": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Frame"
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "layer": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Layer"
        +      },
        +      "location": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Location"
        +      },
        +      "orientation": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Orientation"
        +      },
        +      "style": {
        +        "additionalProperties": true,
        +        "title": "Style",
        +        "type": "object"
        +      },
        +      "text": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Text"
        +      },
        +      "type": {
        +        "title": "Type",
        +        "type": "string"
        +      },
        +      "value": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Value"
        +      }
        +    },
        +    "required": [
        +      "type"
        +    ],
        +    "title": "FigureAnnotationSpec",
        +    "type": "object"
        +  },
        +  "FigureAxisBreakSpec": {
        +    "properties": {
        +      "enabled": {
        +        "default": true,
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "end": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Value immediately after the break.",
        +        "title": "End"
        +      },
        +      "position": {
        +        "anyOf": [
        +          {
        +            "maximum": 100,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Break position as an axis percentage.",
        +        "title": "Position"
        +      },
        +      "post_break_increment": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Major tick increment after the break.",
        +        "title": "Post Break Increment"
        +      },
        +      "start": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Value immediately before the break.",
        +        "title": "Start"
        +      }
        +    },
        +    "title": "FigureAxisBreakSpec",
        +    "type": "object"
        +  },
        +  "FigureAxisSpec": {
        +    "properties": {
        +      "breaks": {
        +        "description": "Optional axis break. The current executor supports one break per axis.",
        +        "items": {
        +          "$ref": "#/$defs/FigureAxisBreakSpec"
        +        },
        +        "maxItems": 1,
        +        "title": "Breaks",
        +        "type": "array"
        +      },
        +      "limits": {
        +        "anyOf": [
        +          {
        +            "const": "auto",
        +            "type": "string"
        +          },
        +          {
        +            "items": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": "auto",
        +        "title": "Limits"
        +      },
        +      "scale": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Scale"
        +      },
        +      "step": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Step"
        +      },
        +      "title": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Title"
        +      }
        +    },
        +    "title": "FigureAxisSpec",
        +    "type": "object"
        +  },
        +  "FigureDataSpec": {
        +    "properties": {
        +      "delimiter": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Delimiter"
        +      },
        +      "encoding": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Encoding"
        +      },
        +      "excel_sheet": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": 0,
        +        "title": "Excel Sheet"
        +      },
        +      "format": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "csv/tsv/txt/dat/xlsx/xls/xlsm.",
        +        "title": "Format"
        +      },
        +      "header": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": 0,
        +        "title": "Header"
        +      },
        +      "id": {
        +        "description": "Dataset id referenced by layers and plots.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "na_values": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Na Values"
        +      },
        +      "nrows": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Nrows"
        +      },
        +      "object": {
        +        "default": "worksheet",
        +        "enum": [
        +          "worksheet",
        +          "matrix",
        +          "xyz"
        +        ],
        +        "title": "Object",
        +        "type": "string"
        +      },
        +      "roles": {
        +        "additionalProperties": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "items": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "integer"
        +                  }
        +                ]
        +              },
        +              "type": "array"
        +            }
        +          ]
        +        },
        +        "description": "Semantic column roles such as x, y, z, group, error, err_low, err_high.",
        +        "title": "Roles",
        +        "type": "object"
        +      },
        +      "skiprows": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Skiprows"
        +      },
        +      "source": {
        +        "description": "Source data file path.",
        +        "format": "path",
        +        "title": "Source",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "source"
        +    ],
        +    "title": "FigureDataSpec",
        +    "type": "object"
        +  },
        +  "FigureExportFormatSpec": {
        +    "properties": {
        +      "enabled": {
        +        "default": false,
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "path": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Path"
        +      },
        +      "width_px": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Width Px"
        +      }
        +    },
        +    "title": "FigureExportFormatSpec",
        +    "type": "object"
        +  },
        +  "FigureExportSpec": {
        +    "properties": {
        +      "dir_figures": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Dir Figures"
        +      },
        +      "dir_opju": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Dir Opju"
        +      },
        +      "pdf": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Pdf"
        +      },
        +      "png": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Png"
        +      },
        +      "qa": {
        +        "additionalProperties": true,
        +        "title": "Qa",
        +        "type": "object"
        +      },
        +      "save_clean_data": {
        +        "default": false,
        +        "title": "Save Clean Data",
        +        "type": "boolean"
        +      },
        +      "svg": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Svg"
        +      },
        +      "tiff": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Tiff"
        +      }
        +    },
        +    "title": "FigureExportSpec",
        +    "type": "object"
        +  },
        +  "FigureLayerSpec": {
        +    "properties": {
        +      "data_ref": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Data Ref"
        +      },
        +      "frame": {
        +        "additionalProperties": {
        +          "type": "boolean"
        +        },
        +        "title": "Frame",
        +        "type": "object"
        +      },
        +      "grid_cell": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Grid Cell"
        +      },
        +      "grid_span": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Grid Span"
        +      },
        +      "id": {
        +        "description": "Layer/panel id.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "page": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Page"
        +      },
        +      "panel_tag": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Panel Tag"
        +      },
        +      "position": {
        +        "additionalProperties": {
        +          "type": "number"
        +        },
        +        "description": "Absolute layer geometry for position_mode='absolute': left, top, width, height as page percentages.",
        +        "title": "Position",
        +        "type": "object"
        +      },
        +      "position_mode": {
        +        "default": "grid",
        +        "enum": [
        +          "grid",
        +          "absolute"
        +        ],
        +        "title": "Position Mode",
        +        "type": "string"
        +      },
        +      "title": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Title"
        +      },
        +      "x": {
        +        "$ref": "#/$defs/FigureAxisSpec"
        +      },
        +      "y": {
        +        "$ref": "#/$defs/FigureAxisSpec"
        +      },
        +      "z": {
        +        "$ref": "#/$defs/FigureAxisSpec"
        +      }
        +    },
        +    "required": [
        +      "id"
        +    ],
        +    "title": "FigureLayerSpec",
        +    "type": "object"
        +  },
        +  "FigureMeta": {
        +    "properties": {
        +      "id": {
        +        "description": "Stable figure identifier.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "title": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Optional figure title/long name.",
        +        "title": "Title"
        +      }
        +    },
        +    "required": [
        +      "id"
        +    ],
        +    "title": "FigureMeta",
        +    "type": "object"
        +  },
        +  "FigurePageSpec": {
        +    "properties": {
        +      "id": {
        +        "default": "page_main",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "layout": {
        +        "default": "single",
        +        "enum": [
        +          "single",
        +          "grid",
        +          "custom",
        +          "inset",
        +          "dual_y"
        +        ],
        +        "title": "Layout",
        +        "type": "string"
        +      },
        +      "margins_mm": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Margins Mm"
        +      },
        +      "panel_spacing_mm": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Panel Spacing Mm"
        +      },
        +      "size_mm": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Size Mm"
        +      }
        +    },
        +    "title": "FigurePageSpec",
        +    "type": "object"
        +  },
        +  "FigurePlotSpec": {
        +    "properties": {
        +      "data_ref": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Data Ref"
        +      },
        +      "group_style": {
        +        "additionalProperties": true,
        +        "title": "Group Style",
        +        "type": "object"
        +      },
        +      "id": {
        +        "description": "Plot primitive id.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "layer": {
        +        "title": "Layer",
        +        "type": "string"
        +      },
        +      "map": {
        +        "additionalProperties": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "items": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "integer"
        +                  }
        +                ]
        +              },
        +              "type": "array"
        +            }
        +          ]
        +        },
        +        "description": "Visual channel mapping such as x, y, z, group, error.",
        +        "title": "Map",
        +        "type": "object"
        +      },
        +      "style": {
        +        "additionalProperties": true,
        +        "title": "Style",
        +        "type": "object"
        +      },
        +      "type": {
        +        "description": "line/scatter/line_symbol/column/histogram/box/contour/heatmap.",
        +        "title": "Type",
        +        "type": "string"
        +      },
        +      "uncertainty": {
        +        "additionalProperties": true,
        +        "title": "Uncertainty",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "layer",
        +      "type"
        +    ],
        +    "title": "FigurePlotSpec",
        +    "type": "object"
        +  },
        +  "FigureRuntimeSpec": {
        +    "properties": {
        +      "new_project": {
        +        "default": false,
        +        "description": "Start a fresh Origin project first.",
        +        "title": "New Project",
        +        "type": "boolean"
        +      },
        +      "project_path": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Optional OPJU/OPJ save path.",
        +        "title": "Project Path"
        +      },
        +      "save_project": {
        +        "default": false,
        +        "description": "Save the Origin project after export.",
        +        "title": "Save Project",
        +        "type": "boolean"
        +      },
        +      "show_origin": {
        +        "default": true,
        +        "description": "Whether Origin should be visible.",
        +        "title": "Show Origin",
        +        "type": "boolean"
        +      }
        +    },
        +    "title": "FigureRuntimeSpec",
        +    "type": "object"
        +  },
        +  "FigureSpec": {
        +    "properties": {
        +      "annotations": {
        +        "items": {
        +          "$ref": "#/$defs/FigureAnnotationSpec"
        +        },
        +        "title": "Annotations",
        +        "type": "array"
        +      },
        +      "data": {
        +        "items": {
        +          "$ref": "#/$defs/FigureDataSpec"
        +        },
        +        "title": "Data",
        +        "type": "array"
        +      },
        +      "export": {
        +        "$ref": "#/$defs/FigureExportSpec"
        +      },
        +      "figure": {
        +        "$ref": "#/$defs/FigureMeta"
        +      },
        +      "layers": {
        +        "items": {
        +          "$ref": "#/$defs/FigureLayerSpec"
        +        },
        +        "title": "Layers",
        +        "type": "array"
        +      },
        +      "page": {
        +        "$ref": "#/$defs/FigurePageSpec"
        +      },
        +      "plots": {
        +        "items": {
        +          "$ref": "#/$defs/FigurePlotSpec"
        +        },
        +        "title": "Plots",
        +        "type": "array"
        +      },
        +      "runtime": {
        +        "$ref": "#/$defs/FigureRuntimeSpec"
        +      },
        +      "style": {
        +        "$ref": "#/$defs/FigureStyleSpec"
        +      }
        +    },
        +    "required": [
        +      "figure"
        +    ],
        +    "title": "FigureSpec",
        +    "type": "object"
        +  },
        +  "FigureStyleSpec": {
        +    "properties": {
        +      "annotation_font_size": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Annotation Font Size"
        +      },
        +      "font_family": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Font Family"
        +      },
        +      "palette_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Palette Name"
        +      },
        +      "palette_role": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Palette Role"
        +      },
        +      "template": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Template"
        +      },
        +      "theme": {
        +        "default": "origin_default",
        +        "enum": [
        +          "origin_default",
        +          "template",
        +          "theme",
        +          "none",
        +          "nature"
        +        ],
        +        "title": "Theme",
        +        "type": "string"
        +      }
        +    },
        +    "title": "FigureStyleSpec",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / dry_run / description
        Added value: +"Validate and plan the operation without changing the Origin project."
      • addedInput schema / properties / spec / $ref
        Added value: +"#/$defs/FigureSpec"
      • removedInput schema / properties / spec / additionalProperties
        Removed value: -true
      • addedInput schema / properties / spec / description
        Added value: +"Declarative FigureSpec describing data, layout, plots, style, export, and QA."
      • removedInput schema / properties / spec / title
        Removed value: -"Spec"
      • removedInput schema / properties / spec / type
        Removed value: -"object"
    • Changedorigin_export_graph4 fields changed
      • addedInput schema / properties / graph_name / description
        Added value: +"Origin graph page name. Omit to use the active graph or create a new page."
      • addedInput schema / properties / overwrite / description
        Added value: +"Whether an existing output file may be replaced."
      • addedInput schema / properties / path / description
        Added value: +"Filesystem path consumed or produced by this tool; see the tool description."
      • addedInput schema / properties / width / description
        Added value: +"Export width in pixels; zero preserves Origin's default export width."
    • Changedorigin_format_graph6 fields changed
      • addedInput schema / properties / graph_name / description
        Added value: +"Optional graph page name."
      • addedInput schema / properties / rescale / description
        Added value: +"Whether to rescale graph axes after formatting."
      • addedInput schema / properties / show_legend / description
        Added value: +"Set legend visibility when provided."
      • addedInput schema / properties / title / description
        Added value: +"Optional graph page long name."
      • addedInput schema / properties / x_label / description
        Added value: +"Optional X axis title."
      • addedInput schema / properties / y_label / description
        Added value: +"Optional Y axis title."
    • Changedorigin_get_graph_info1 field changed
      • addedInput schema / properties / graph_name / description
        Added value: +"Origin graph page name. Omit to use the active graph or create a new page."
    • Changedorigin_import_table12 fields changed
      • addedInput schema / properties / book_name / description
        Added value: +"Optional Origin workbook name."
      • addedInput schema / properties / delimiter / description
        Added value: +"Delimiter for text files. If omitted, CSV/TSV defaults or auto-detection are used."
      • addedInput schema / properties / encoding / description
        Added value: +"Optional text file encoding."
      • addedInput schema / properties / excel_sheet / description
        Added value: +"Excel sheet name or zero-based index. Ignored for text files."
      • changedInput schema / properties / header / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / header / description
        Added value: +"Zero-based row number to use as column names."
      • addedInput schema / properties / na_values / description
        Added value: +"Additional missing value markers."
      • changedInput schema / properties / nrows / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / nrows / description
        Added value: +"Maximum number of data rows to read."
      • addedInput schema / properties / path / description
        Added value: +"Absolute path to a CSV, TSV, TXT, DAT, XLS, or XLSX file."
      • addedInput schema / properties / sheet_name / description
        Added value: +"Optional Origin worksheet name."
      • addedInput schema / properties / skiprows / description
        Added value: +"Rows to skip while reading."
    • Changedorigin_ping1 field changed
      • addedInput schema / properties / show / description
        Added value: +"Whether Origin should be visible after connecting or querying capabilities."
    • Changedorigin_plan_figure_spec6 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "FigureAnnotationSpec": {
        +    "properties": {
        +      "frame": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Frame"
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "layer": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Layer"
        +      },
        +      "location": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Location"
        +      },
        +      "orientation": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Orientation"
        +      },
        +      "style": {
        +        "additionalProperties": true,
        +        "title": "Style",
        +        "type": "object"
        +      },
        +      "text": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Text"
        +      },
        +      "type": {
        +        "title": "Type",
        +        "type": "string"
        +      },
        +      "value": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Value"
        +      }
        +    },
        +    "required": [
        +      "type"
        +    ],
        +    "title": "FigureAnnotationSpec",
        +    "type": "object"
        +  },
        +  "FigureAxisBreakSpec": {
        +    "properties": {
        +      "enabled": {
        +        "default": true,
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "end": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Value immediately after the break.",
        +        "title": "End"
        +      },
        +      "position": {
        +        "anyOf": [
        +          {
        +            "maximum": 100,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Break position as an axis percentage.",
        +        "title": "Position"
        +      },
        +      "post_break_increment": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Major tick increment after the break.",
        +        "title": "Post Break Increment"
        +      },
        +      "start": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Value immediately before the break.",
        +        "title": "Start"
        +      }
        +    },
        +    "title": "FigureAxisBreakSpec",
        +    "type": "object"
        +  },
        +  "FigureAxisSpec": {
        +    "properties": {
        +      "breaks": {
        +        "description": "Optional axis break. The current executor supports one break per axis.",
        +        "items": {
        +          "$ref": "#/$defs/FigureAxisBreakSpec"
        +        },
        +        "maxItems": 1,
        +        "title": "Breaks",
        +        "type": "array"
        +      },
        +      "limits": {
        +        "anyOf": [
        +          {
        +            "const": "auto",
        +            "type": "string"
        +          },
        +          {
        +            "items": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": "auto",
        +        "title": "Limits"
        +      },
        +      "scale": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Scale"
        +      },
        +      "step": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Step"
        +      },
        +      "title": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Title"
        +      }
        +    },
        +    "title": "FigureAxisSpec",
        +    "type": "object"
        +  },
        +  "FigureDataSpec": {
        +    "properties": {
        +      "delimiter": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Delimiter"
        +      },
        +      "encoding": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Encoding"
        +      },
        +      "excel_sheet": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": 0,
        +        "title": "Excel Sheet"
        +      },
        +      "format": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "csv/tsv/txt/dat/xlsx/xls/xlsm.",
        +        "title": "Format"
        +      },
        +      "header": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": 0,
        +        "title": "Header"
        +      },
        +      "id": {
        +        "description": "Dataset id referenced by layers and plots.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "na_values": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Na Values"
        +      },
        +      "nrows": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Nrows"
        +      },
        +      "object": {
        +        "default": "worksheet",
        +        "enum": [
        +          "worksheet",
        +          "matrix",
        +          "xyz"
        +        ],
        +        "title": "Object",
        +        "type": "string"
        +      },
        +      "roles": {
        +        "additionalProperties": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "items": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "integer"
        +                  }
        +                ]
        +              },
        +              "type": "array"
        +            }
        +          ]
        +        },
        +        "description": "Semantic column roles such as x, y, z, group, error, err_low, err_high.",
        +        "title": "Roles",
        +        "type": "object"
        +      },
        +      "skiprows": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Skiprows"
        +      },
        +      "source": {
        +        "description": "Source data file path.",
        +        "format": "path",
        +        "title": "Source",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "source"
        +    ],
        +    "title": "FigureDataSpec",
        +    "type": "object"
        +  },
        +  "FigureExportFormatSpec": {
        +    "properties": {
        +      "enabled": {
        +        "default": false,
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "path": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Path"
        +      },
        +      "width_px": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Width Px"
        +      }
        +    },
        +    "title": "FigureExportFormatSpec",
        +    "type": "object"
        +  },
        +  "FigureExportSpec": {
        +    "properties": {
        +      "dir_figures": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Dir Figures"
        +      },
        +      "dir_opju": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Dir Opju"
        +      },
        +      "pdf": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Pdf"
        +      },
        +      "png": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Png"
        +      },
        +      "qa": {
        +        "additionalProperties": true,
        +        "title": "Qa",
        +        "type": "object"
        +      },
        +      "save_clean_data": {
        +        "default": false,
        +        "title": "Save Clean Data",
        +        "type": "boolean"
        +      },
        +      "svg": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Svg"
        +      },
        +      "tiff": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/FigureExportFormatSpec"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Tiff"
        +      }
        +    },
        +    "title": "FigureExportSpec",
        +    "type": "object"
        +  },
        +  "FigureLayerSpec": {
        +    "properties": {
        +      "data_ref": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Data Ref"
        +      },
        +      "frame": {
        +        "additionalProperties": {
        +          "type": "boolean"
        +        },
        +        "title": "Frame",
        +        "type": "object"
        +      },
        +      "grid_cell": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Grid Cell"
        +      },
        +      "grid_span": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Grid Span"
        +      },
        +      "id": {
        +        "description": "Layer/panel id.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "page": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Page"
        +      },
        +      "panel_tag": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Panel Tag"
        +      },
        +      "position": {
        +        "additionalProperties": {
        +          "type": "number"
        +        },
        +        "description": "Absolute layer geometry for position_mode='absolute': left, top, width, height as page percentages.",
        +        "title": "Position",
        +        "type": "object"
        +      },
        +      "position_mode": {
        +        "default": "grid",
        +        "enum": [
        +          "grid",
        +          "absolute"
        +        ],
        +        "title": "Position Mode",
        +        "type": "string"
        +      },
        +      "title": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Title"
        +      },
        +      "x": {
        +        "$ref": "#/$defs/FigureAxisSpec"
        +      },
        +      "y": {
        +        "$ref": "#/$defs/FigureAxisSpec"
        +      },
        +      "z": {
        +        "$ref": "#/$defs/FigureAxisSpec"
        +      }
        +    },
        +    "required": [
        +      "id"
        +    ],
        +    "title": "FigureLayerSpec",
        +    "type": "object"
        +  },
        +  "FigureMeta": {
        +    "properties": {
        +      "id": {
        +        "description": "Stable figure identifier.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "title": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Optional figure title/long name.",
        +        "title": "Title"
        +      }
        +    },
        +    "required": [
        +      "id"
        +    ],
        +    "title": "FigureMeta",
        +    "type": "object"
        +  },
        +  "FigurePageSpec": {
        +    "properties": {
        +      "id": {
        +        "default": "page_main",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "layout": {
        +        "default": "single",
        +        "enum": [
        +          "single",
        +          "grid",
        +          "custom",
        +          "inset",
        +          "dual_y"
        +        ],
        +        "title": "Layout",
        +        "type": "string"
        +      },
        +      "margins_mm": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Margins Mm"
        +      },
        +      "panel_spacing_mm": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Panel Spacing Mm"
        +      },
        +      "size_mm": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Size Mm"
        +      }
        +    },
        +    "title": "FigurePageSpec",
        +    "type": "object"
        +  },
        +  "FigurePlotSpec": {
        +    "properties": {
        +      "data_ref": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Data Ref"
        +      },
        +      "group_style": {
        +        "additionalProperties": true,
        +        "title": "Group Style",
        +        "type": "object"
        +      },
        +      "id": {
        +        "description": "Plot primitive id.",
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "layer": {
        +        "title": "Layer",
        +        "type": "string"
        +      },
        +      "map": {
        +        "additionalProperties": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "items": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "integer"
        +                  }
        +                ]
        +              },
        +              "type": "array"
        +            }
        +          ]
        +        },
        +        "description": "Visual channel mapping such as x, y, z, group, error.",
        +        "title": "Map",
        +        "type": "object"
        +      },
        +      "style": {
        +        "additionalProperties": true,
        +        "title": "Style",
        +        "type": "object"
        +      },
        +      "type": {
        +        "description": "line/scatter/line_symbol/column/histogram/box/contour/heatmap.",
        +        "title": "Type",
        +        "type": "string"
        +      },
        +      "uncertainty": {
        +        "additionalProperties": true,
        +        "title": "Uncertainty",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "layer",
        +      "type"
        +    ],
        +    "title": "FigurePlotSpec",
        +    "type": "object"
        +  },
        +  "FigureRuntimeSpec": {
        +    "properties": {
        +      "new_project": {
        +        "default": false,
        +        "description": "Start a fresh Origin project first.",
        +        "title": "New Project",
        +        "type": "boolean"
        +      },
        +      "project_path": {
        +        "anyOf": [
        +          {
        +            "format": "path",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Optional OPJU/OPJ save path.",
        +        "title": "Project Path"
        +      },
        +      "save_project": {
        +        "default": false,
        +        "description": "Save the Origin project after export.",
        +        "title": "Save Project",
        +        "type": "boolean"
        +      },
        +      "show_origin": {
        +        "default": true,
        +        "description": "Whether Origin should be visible.",
        +        "title": "Show Origin",
        +        "type": "boolean"
        +      }
        +    },
        +    "title": "FigureRuntimeSpec",
        +    "type": "object"
        +  },
        +  "FigureSpec": {
        +    "properties": {
        +      "annotations": {
        +        "items": {
        +          "$ref": "#/$defs/FigureAnnotationSpec"
        +        },
        +        "title": "Annotations",
        +        "type": "array"
        +      },
        +      "data": {
        +        "items": {
        +          "$ref": "#/$defs/FigureDataSpec"
        +        },
        +        "title": "Data",
        +        "type": "array"
        +      },
        +      "export": {
        +        "$ref": "#/$defs/FigureExportSpec"
        +      },
        +      "figure": {
        +        "$ref": "#/$defs/FigureMeta"
        +      },
        +      "layers": {
        +        "items": {
        +          "$ref": "#/$defs/FigureLayerSpec"
        +        },
        +        "title": "Layers",
        +        "type": "array"
        +      },
        +      "page": {
        +        "$ref": "#/$defs/FigurePageSpec"
        +      },
        +      "plots": {
        +        "items": {
        +          "$ref": "#/$defs/FigurePlotSpec"
        +        },
        +        "title": "Plots",
        +        "type": "array"
        +      },
        +      "runtime": {
        +        "$ref": "#/$defs/FigureRuntimeSpec"
        +      },
        +      "style": {
        +        "$ref": "#/$defs/FigureStyleSpec"
        +      }
        +    },
        +    "required": [
        +      "figure"
        +    ],
        +    "title": "FigureSpec",
        +    "type": "object"
        +  },
        +  "FigureStyleSpec": {
        +    "properties": {
        +      "annotation_font_size": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Annotation Font Size"
        +      },
        +      "font_family": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Font Family"
        +      },
        +      "palette_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Palette Name"
        +      },
        +      "palette_role": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Palette Role"
        +      },
        +      "template": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Template"
        +      },
        +      "theme": {
        +        "default": "origin_default",
        +        "enum": [
        +          "origin_default",
        +          "template",
        +          "theme",
        +          "none",
        +          "nature"
        +        ],
        +        "title": "Theme",
        +        "type": "string"
        +      }
        +    },
        +    "title": "FigureStyleSpec",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / spec / $ref
        Added value: +"#/$defs/FigureSpec"
      • removedInput schema / properties / spec / additionalProperties
        Removed value: -true
      • addedInput schema / properties / spec / description
        Added value: +"Declarative FigureSpec describing data, layout, plots, style, export, and QA."
      • removedInput schema / properties / spec / title
        Removed value: -"Spec"
      • removedInput schema / properties / spec / type
        Removed value: -"object"
    • Changedorigin_plot9 fields changed
      • addedInput schema / properties / export_path / description
        Added value: +"Optional output path for exporting the created graph."
      • addedInput schema / properties / graph_name / description
        Added value: +"Origin graph page name. Omit to use the active graph or create a new page."
      • addedInput schema / properties / kind / description
        Added value: +"Table plot kind. The schema lists every compact-route kind supported by this tool."
      • addedInput schema / properties / kind / enum
        Added value: +[
        +  "area",
        +  "bar",
        +  "bars_3d",
        +  "box",
        +  "bubble",
        +  "bubble_color_mapped",
        +  "candlestick",
        +  "color_mapped",
        +  "column",
        +  "column_stack",
        +  "dendrogram",
        +  "errorbar_3d",
        +  "fill_area",
        +  "floating_bar",
        +  "high_low_close",
        +  "histogram",
        +  "line",
        +  "line_symbol",
        +  "pie",
        +  "polar_xr_ytheta",
        +  "ribbon_3d",
        +  "scatter",
        +  "smith",
        +  "stack_area",
        +  "stack_bar",
        +  "ternary",
        +  "ternary_contour",
        +  "vector_3d",
        +  "vector_xyam",
        +  "vector_xyxy",
        +  "waterfall"
        +]
      • addedInput schema / properties / path / description
        Added value: +"Filesystem path consumed or produced by this tool; see the tool description."
      • addedInput schema / properties / selected_cols / description
        Added value: +"Column names or zero-based indexes to include in the plot."
      • addedInput schema / properties / style_mode / description
        Added value: +"Graph styling policy: origin_default preserves the Origin template; nature applies the origin-mcp scientific preset."
      • addedInput schema / properties / style_mode / enum
        Added value: +[
        +  "origin_default",
        +  "template",
        +  "theme",
        +  "none",
        +  "nature"
        +]
      • addedInput schema / properties / title / description
        Added value: +"Optional Origin page long name or graph title."
    • Changedorigin_plot_auto26 fields changed
      • addedInput schema / properties / book_name / description
        Added value: +"Optional Origin workbook name."
      • addedInput schema / properties / delimiter / description
        Added value: +"Delimiter for text files. If omitted, CSV/TSV defaults or auto-detection are used."
      • addedInput schema / properties / encoding / description
        Added value: +"Optional text file encoding."
      • addedInput schema / properties / excel_sheet / description
        Added value: +"Excel sheet name or zero-based index. Ignored for text files."
      • addedInput schema / properties / export_path / description
        Added value: +"Optional graph export path."
      • addedInput schema / properties / graph_name / description
        Added value: +"Optional Origin graph page name."
      • changedInput schema / properties / header / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / header / description
        Added value: +"Zero-based row number to use as column names."
      • addedInput schema / properties / intent / description
        Added value: +"Optional natural-language chart intent used to guide automatic routing."
      • addedInput schema / properties / na_values / description
        Added value: +"Additional missing value markers."
      • changedInput schema / properties / nrows / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / nrows / description
        Added value: +"Maximum number of data rows to read."
      • addedInput schema / properties / palette_name / description
        Added value: +"Optional registered color palette name used by the selected style mode."
      • addedInput schema / properties / path / description
        Added value: +"Absolute path to a CSV, TSV, TXT, DAT, XLS, or XLSX file."
      • addedInput schema / properties / sheet_name / description
        Added value: +"Optional Origin worksheet name."
      • addedInput schema / properties / skiprows / description
        Added value: +"Rows to skip while reading."
      • addedInput schema / properties / style_mode / description
        Added value: +"Graph styling policy. origin_default/template/theme/none preserve Origin template defaults; nature applies origin-mcp styling after plotting."
      • addedInput schema / properties / style_mode / enum
        Added value: +[
        +  "origin_default",
        +  "template",
        +  "theme",
        +  "none",
        +  "nature"
        +]
      • addedInput schema / properties / title / description
        Added value: +"Optional graph page long name."
      • addedInput schema / properties / x_col / description
        Added value: +"Column name or zero-based index to use as X. Defaults to the first column."
      • addedInput schema / properties / x_error_col / description
        Added value: +"Optional X error column."
      • addedInput schema / properties / x_label / description
        Added value: +"Optional X axis title."
      • addedInput schema / properties / y_cols / description
        Added value: +"Column names or zero-based indexes to plot as Y. Defaults to all non-X columns."
      • addedInput schema / properties / y_error_col / description
        Added value: +"Optional Y error column."
      • addedInput schema / properties / y_label / description
        Added value: +"Optional Y axis title."
      • addedInput schema / properties / z_col / description
        Added value: +"Optional Z column for contour/XYZ plots."
    • Changedorigin_query_knowledge7 fields changed
      • addedInput schema / properties / collection / description
        Added value: +"Optional knowledge collection filter; allowed names are in the schema."
      • addedInput schema / properties / collection / enum
        Added value: +[
        +  "labtalk",
        +  "mcp_tools",
        +  "official_docs",
        +  "python_api",
        +  "reference"
        +]
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of matching or recent records to return."
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / query / description
        Added value: +"Keyword query matched against local knowledge titles, summaries, and bodies."
      • addedInput schema / properties / version / description
        Added value: +"Optional Origin documentation version filter, such as 2026b."
    • Changedorigin_read_worksheet5 fields changed
      • addedInput schema / properties / book_name / description
        Added value: +"Origin workbook name. Omit to use the active workbook or the tool default."
      • addedInput schema / properties / columns / description
        Added value: +"Column names or zero-based column indexes selected for this operation."
      • addedInput schema / properties / max_rows / description
        Added value: +"Maximum number of worksheet rows to return."
      • addedInput schema / properties / sheet_name / description
        Added value: +"Origin worksheet name. Omit to use the active sheet or the tool default."
      • addedInput schema / properties / start_row / description
        Added value: +"Zero-based worksheet row at which reading begins."
    • Changedorigin_recommend_chart19 fields changed
      • addedInput schema / properties / delimiter / description
        Added value: +"Delimiter for text files. If omitted, CSV/TSV defaults or auto-detection are used."
      • addedInput schema / properties / encoding / description
        Added value: +"Optional text file encoding."
      • addedInput schema / properties / excel_sheet / description
        Added value: +"Excel sheet name or zero-based index. Ignored for text files."
      • changedInput schema / properties / header / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / header / description
        Added value: +"Zero-based row number to use as column names."
      • addedInput schema / properties / intent / description
        Added value: +"Optional natural-language chart intent used to guide automatic routing."
      • addedInput schema / properties / max_recommendations / description
        Added value: +"Maximum number of ranked chart recommendations to return."
      • addedInput schema / properties / max_recommendations / maximum
        Added value: +20
      • addedInput schema / properties / max_recommendations / minimum
        Added value: +1
      • addedInput schema / properties / na_values / description
        Added value: +"Additional missing value markers."
      • changedInput schema / properties / nrows / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / nrows / description
        Added value: +"Maximum number of data rows to read."
      • addedInput schema / properties / path / description
        Added value: +"Absolute path to a CSV, TSV, TXT, DAT, XLS, or XLSX file."
      • addedInput schema / properties / skiprows / description
        Added value: +"Rows to skip while reading."
      • addedInput schema / properties / x_col / description
        Added value: +"Column name or zero-based index to use as X. Defaults to the first column."
      • addedInput schema / properties / x_error_col / description
        Added value: +"Optional X error column."
      • addedInput schema / properties / y_cols / description
        Added value: +"Column names or zero-based indexes to plot as Y. Defaults to all non-X columns."
      • addedInput schema / properties / y_error_col / description
        Added value: +"Optional Y error column."
      • addedInput schema / properties / z_col / description
        Added value: +"Optional Z column for contour/XYZ plots."
    • Changedorigin_run_analysis11 fields changed
      • addedInput schema / properties / analysis / description
        Added value: +"Canonical analysis name. Supported values are listed in the schema; common choices include linear_fit, polynomial_fit, smooth, peak_find, fft, and correlation."
      • addedInput schema / properties / analysis / enum
        Added value: +[
        +  "correlation",
        +  "descriptive_stats",
        +  "differentiate",
        +  "fft",
        +  "ifft",
        +  "integrate",
        +  "interpolate",
        +  "linear_fit",
        +  "nonlinear_fit",
        +  "normalize",
        +  "peak_find",
        +  "polynomial_fit",
        +  "smooth",
        +  "ttest_one_sample",
        +  "ttest_paired",
        +  "ttest_two_sample"
        +]
      • addedInput schema / properties / include_output / description
        Added value: +"Read output worksheet rows back into the response when possible."
      • addedInput schema / properties / options / description
        Added value: +"Analysis-specific options. Examples: polynomial_fit uses order; smooth uses method and points; peak_find uses direction, threshold, and smooth_points; t-tests use tail and alpha; fft/ifft use window and sampling_interval. Set recalculate to none/0, auto/1, or manual/2 to create a recalculating Origin operation."
      • addedInput schema / properties / output_max_rows / description
        Added value: +"Maximum rows to read from an output worksheet."
      • addedInput schema / properties / output_max_rows / maximum
        Added value: +10000
      • addedInput schema / properties / output_max_rows / minimum
        Added value: +1
      • addedInput schema / properties / output_sheet / description
        Added value: +"Optional output sheet/name hint."
      • addedInput schema / properties / worksheet / description
        Added value: +"Worksheet range or book/sheet reference."
      • addedInput schema / properties / x_col / description
        Added value: +"Optional X column."
      • addedInput schema / properties / y_col / description
        Added value: +"Optional Y column."
    • Changedorigin_run_labtalk2 fields changed
      • addedInput schema / properties / capture_log / description
        Added value: +"Whether to capture and return LabTalk output produced by the script."
      • addedInput schema / properties / script / description
        Added value: +"LabTalk script text to execute inside the connected Origin application."
    • Changedorigin_view_graph2 fields changed
      • addedInput schema / properties / graph_name / description
        Added value: +"Origin graph page name. Omit to use the active graph or create a new page."
      • addedInput schema / properties / max_width / description
        Added value: +"Maximum rendered image width in pixels."
    • Changedorigin_write_worksheet6 fields changed
      • addedInput schema / properties / book_name / description
        Added value: +"Origin workbook name. Omit to use the active workbook or the tool default."
      • addedInput schema / properties / columns / description
        Added value: +"Column names for object rows. For array rows, these names define the array order."
      • addedInput schema / properties / create / description
        Added value: +"Whether to create the target Origin object when it does not already exist."
      • addedInput schema / properties / rows / description
        Added value: +"Rows to write, as objects keyed by column name or arrays matching columns."
      • addedInput schema / properties / sheet_name / description
        Added value: +"Origin worksheet name. Omit to use the active sheet or the tool default."
      • addedInput schema / properties / start_col / description
        Added value: +"Column name or zero-based column index at which writing begins."
  2. 23 tool updatesv0.1.2
    • Removedorigin_add_plot_to_graph
    • Changedorigin_bridge_shutdown1 field changed
      • addedInput schema / properties / close_origin
        Added value: +{
        +  "default": false,
        +  "title": "Close Origin",
        +  "type": "boolean"
        +}
    • Changedorigin_bridge_task_status3 fields changed
      • addedInput schema / properties / include_logs
        Added value: +{
        +  "default": false,
        +  "title": "Include Logs",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_result
        Added value: +{
        +  "default": true,
        +  "title": "Include Result",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / log_limit
        Added value: +{
        +  "default": 20,
        +  "title": "Log Limit",
        +  "type": "integer"
        +}
    • Changedorigin_capabilities3 fields changed
      • addedInput schema / properties / show / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / show / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / show / type
        Removed value: -"boolean"
    • Addedorigin_diagnose_worksheet
    • Addedorigin_execute_figure_spec
    • Changedorigin_export_graph1 field changed
      • addedInput schema / properties / width
        Added value: +{
        +  "default": 0,
        +  "title": "Width",
        +  "type": "integer"
        +}
    • Removedorigin_get_layer_info
    • Addedorigin_plan_figure_spec
    • Addedorigin_plot
    • Changedorigin_plot_auto1 field changed
      • addedInput schema / properties / palette_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Palette Name"
        +}
    • Removedorigin_plot_box
    • Removedorigin_plot_chart_atlas
    • Removedorigin_plot_column
    • Removedorigin_plot_from_range
    • Removedorigin_plot_histogram
    • Removedorigin_plot_line
    • Removedorigin_plot_line_symbol
    • Removedorigin_plot_scatter
    • Removedorigin_plot_table_id
    • Removedorigin_set_axis
    • Removedorigin_set_plot_style
    • Addedorigin_view_graph
  3. 104 tool updates
    • Removedorigin_add_calculated_column
    • Removedorigin_add_graph_label
    • Removedorigin_add_reference_line
    • Removedorigin_append_table
    • Removedorigin_apply_image_panel_style
    • Removedorigin_apply_nature_style
    • Removedorigin_apply_publication_style
    • Removedorigin_arrange_layers
    • Removedorigin_batch_plot_from_template
    • Addedorigin_bridge_cancel_task
    • Addedorigin_bridge_list_tasks
    • Addedorigin_bridge_shutdown
    • Addedorigin_bridge_submit_task
    • Addedorigin_bridge_task_status
    • Addedorigin_browse_knowledge
    • Removedorigin_change_plot_data
    • Removedorigin_change_plot_type
    • Removedorigin_chart_atlas_route
    • Removedorigin_clear_worksheet
    • Removedorigin_delete_columns
    • Removedorigin_delete_object
    • Removedorigin_descriptive_stats
    • Removedorigin_detach
    • Removedorigin_diagnose_graph
    • Removedorigin_differentiate
    • Addedorigin_doctor
    • Removedorigin_export_all_graphs
    • Removedorigin_export_preview
    • Removedorigin_export_worksheet_csv
    • Removedorigin_force_quit
    • Removedorigin_format_legend
    • Removedorigin_get_cell_value
    • Removedorigin_get_default_plot_config
    • Removedorigin_get_worksheet_info
    • Removedorigin_import_csv
    • Removedorigin_import_excel
    • Removedorigin_import_file
    • Removedorigin_inspect_export
    • Removedorigin_integrate
    • Removedorigin_linear_fit
    • Removedorigin_list_fit_functions
    • Removedorigin_list_graph_templates
    • Removedorigin_list_project
    • Removedorigin_new_project
    • Removedorigin_nonlinear_fit
    • Removedorigin_nonlinear_fit_structured
    • Removedorigin_open_project
    • Removedorigin_peak_find
    • Removedorigin_plot_3d_bars
    • Removedorigin_plot_3d_errorbar
    • Removedorigin_plot_3d_ribbon
    • Removedorigin_plot_3d_scatter
    • Removedorigin_plot_3d_surface
    • Removedorigin_plot_3d_vector
    • Removedorigin_plot_area
    • Addedorigin_plot_auto
    • Removedorigin_plot_bar
    • Removedorigin_plot_bubble
    • Removedorigin_plot_bubble_color_mapped
    • Removedorigin_plot_candlestick
    • Changedorigin_plot_chart_atlas1 field changed
      • changedInput schema / properties / style_mode / default
        Previous value: -"nature"New value: +"origin_default"
    • Removedorigin_plot_color_mapped
    • Removedorigin_plot_column_stack
    • Removedorigin_plot_contour
    • Removedorigin_plot_dendrogram
    • Removedorigin_plot_errorbar
    • Removedorigin_plot_fill_area
    • Removedorigin_plot_floating_bar
    • Removedorigin_plot_heatmap
    • Removedorigin_plot_high_low_close
    • Removedorigin_plot_image
    • Removedorigin_plot_matrix_3d_scatter
    • Removedorigin_plot_matrix_3d_surface
    • Removedorigin_plot_matrix_contour
    • Removedorigin_plot_matrix_heatmap
    • Removedorigin_plot_matrix_id
    • Removedorigin_plot_pie
    • Removedorigin_plot_polar
    • Removedorigin_plot_polar_xr_ytheta
    • Removedorigin_plot_smith
    • Removedorigin_plot_stack_area
    • Removedorigin_plot_stack_bar
    • Removedorigin_plot_ternary
    • Removedorigin_plot_ternary_contour
    • Removedorigin_plot_type_coverage
    • Removedorigin_plot_vector_xyam
    • Removedorigin_plot_vector_xyxy
    • Removedorigin_plot_waterfall
    • Removedorigin_polynomial_fit
    • Addedorigin_query_knowledge
    • Removedorigin_quit
    • Addedorigin_recommend_chart
    • Removedorigin_release
    • Removedorigin_remove_plot_from_graph
    • Removedorigin_rename_object
    • Changedorigin_run_labtalk1 field changed
      • addedInput schema / properties / capture_log
        Added value: +{
        +  "default": true,
        +  "title": "Capture Log",
        +  "type": "boolean"
        +}
    • Removedorigin_run_plot_matrix
    • Removedorigin_save_project
    • Removedorigin_set_cell_value
    • Removedorigin_set_column_designations
    • Removedorigin_set_column_labels
    • Removedorigin_set_graph_page
    • Removedorigin_smooth
    • Removedorigin_sort_worksheet
  4. 115 tool updatesv0.1.0
    • First observedorigin_add_calculated_column
    • First observedorigin_add_graph_label
    • First observedorigin_add_plot_to_graph
    • First observedorigin_add_reference_line
    • First observedorigin_append_table
    • First observedorigin_apply_image_panel_style
    • First observedorigin_apply_nature_style
    • First observedorigin_apply_publication_style
    • First observedorigin_arrange_layers
    • First observedorigin_batch_plot_from_template
    • First observedorigin_capabilities
    • First observedorigin_change_plot_data
    • First observedorigin_change_plot_type
    • First observedorigin_chart_atlas_route
    • First observedorigin_clear_worksheet
    • First observedorigin_delete_columns
    • First observedorigin_delete_object
    • First observedorigin_descriptive_stats
    • First observedorigin_detach
    • First observedorigin_diagnose_graph
    • First observedorigin_differentiate
    • First observedorigin_export_all_graphs
    • First observedorigin_export_graph
    • First observedorigin_export_preview
    • First observedorigin_export_worksheet_csv
    • First observedorigin_force_quit
    • First observedorigin_format_graph
    • First observedorigin_format_legend
    • First observedorigin_get_cell_value
    • First observedorigin_get_default_plot_config
    • First observedorigin_get_graph_info
    • First observedorigin_get_layer_info
    • First observedorigin_get_worksheet_info
    • First observedorigin_import_csv
    • First observedorigin_import_excel
    • First observedorigin_import_file
    • First observedorigin_import_table
    • First observedorigin_inspect_export
    • First observedorigin_integrate
    • First observedorigin_linear_fit
    • First observedorigin_list_fit_functions
    • First observedorigin_list_graph_templates
    • First observedorigin_list_project
    • First observedorigin_new_project
    • First observedorigin_nonlinear_fit
    • First observedorigin_nonlinear_fit_structured
    • First observedorigin_open_project
    • First observedorigin_peak_find
    • First observedorigin_ping
    • First observedorigin_plot_3d_bars
    • First observedorigin_plot_3d_errorbar
    • First observedorigin_plot_3d_ribbon
    • First observedorigin_plot_3d_scatter
    • First observedorigin_plot_3d_surface
    • First observedorigin_plot_3d_vector
    • First observedorigin_plot_area
    • First observedorigin_plot_bar
    • First observedorigin_plot_box
    • First observedorigin_plot_bubble
    • First observedorigin_plot_bubble_color_mapped
    • First observedorigin_plot_candlestick
    • First observedorigin_plot_chart_atlas
    • First observedorigin_plot_color_mapped
    • First observedorigin_plot_column
    • First observedorigin_plot_column_stack
    • First observedorigin_plot_contour
    • First observedorigin_plot_dendrogram
    • First observedorigin_plot_errorbar
    • First observedorigin_plot_fill_area
    • First observedorigin_plot_floating_bar
    • First observedorigin_plot_from_range
    • First observedorigin_plot_heatmap
    • First observedorigin_plot_high_low_close
    • First observedorigin_plot_histogram
    • First observedorigin_plot_image
    • First observedorigin_plot_line
    • First observedorigin_plot_line_symbol
    • First observedorigin_plot_matrix_3d_scatter
    • First observedorigin_plot_matrix_3d_surface
    • First observedorigin_plot_matrix_contour
    • First observedorigin_plot_matrix_heatmap
    • First observedorigin_plot_matrix_id
    • First observedorigin_plot_pie
    • First observedorigin_plot_polar
    • First observedorigin_plot_polar_xr_ytheta
    • First observedorigin_plot_scatter
    • First observedorigin_plot_smith
    • First observedorigin_plot_stack_area
    • First observedorigin_plot_stack_bar
    • First observedorigin_plot_table_id
    • First observedorigin_plot_ternary
    • First observedorigin_plot_ternary_contour
    • First observedorigin_plot_type_coverage
    • First observedorigin_plot_vector_xyam
    • First observedorigin_plot_vector_xyxy
    • First observedorigin_plot_waterfall
    • First observedorigin_polynomial_fit
    • First observedorigin_quit
    • First observedorigin_read_worksheet
    • First observedorigin_release
    • First observedorigin_remove_plot_from_graph
    • First observedorigin_rename_object
    • First observedorigin_run_analysis
    • First observedorigin_run_labtalk
    • First observedorigin_run_plot_matrix
    • First observedorigin_save_project
    • First observedorigin_set_axis
    • First observedorigin_set_cell_value
    • First observedorigin_set_column_designations
    • First observedorigin_set_column_labels
    • First observedorigin_set_graph_page
    • First observedorigin_set_plot_style
    • First observedorigin_smooth
    • First observedorigin_sort_worksheet
    • First observedorigin_write_worksheet

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, with names and descriptions that prevent ambiguity. Even closely related tools like origin_plot and origin_plot_auto have well-delineated roles.

Naming Consistency5/5

All tools follow the consistent pattern 'origin_verb_noun' in snake_case, making the naming predictable and easy to understand.

Tool Count4/5

25 tools is on the higher side, but the scope of the Origin server (graphing, analysis, bridge tasks, knowledge) justifies the count. Some consolidation of plotting tools could be considered, but each serves a distinct function.

Completeness4/5

The tool surface covers major domains (import, worksheet read/write, plotting, analysis, knowledge, bridge tasks) but lacks some lifecycle operations (e.g., update/delete for worksheets) and analysis is only via a single generic tool.

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
    D
    maintenance
    Enables AI assistants to perform comprehensive Microsoft Excel operations including data analysis, cell editing, advanced formatting, and VBA execution on Windows systems. It provides a structured workflow for managing workbooks and worksheets through a dedicated Model Context Protocol interface.
    5
    181
    4
    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/Ge-Shun/origin-mcp'

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