Skip to main content
Glama
Yike-Ye
by Yike-Ye

OriginLab-MCP

Ein MCP-Server für OriginLab Origin. Er liest und schreibt Arbeitsblätter, baut mehrteilige Grafiken auf, gestaltet sie und exportiert Abbildungen – und er achtet sorgfältig auf den Unterschied zwischen dem, was Origin akzeptiert hat, und dem, was Origin tatsächlich getan hat.

1.0.0. Jedes Werkzeug hier wurde gegen ein echtes Origin 2021, die Origin-App installiert und startet die Brücke, und examples/five_panel_figure.py baut eine Fünf-Panel-Abbildung end-to-end auf.

Bekannte Lücken, damit sie keine Überraschung sind: eine Legende, die in einer Ecke platziert wird, wird nur darauf geprüft, ob sie innerhalb ihres Panels liegt, nicht darauf, ob sie über die Daten liegt; eine logarithmische Achse erhält keine feinen Teilungszeichen klein, für außer man verlangt sie; und die 213 Einträge umfassende Optionstabelle hält fest, was Origin dokumentiert, nicht, was jede Option in der Messung bewirkt – bei sechzehn davon wurde beobachtet, wie sie ein Bild verändern.

Vorausgesetzungen

  • Origin oder OriginPro 2021b oder neuer (eingebettetes Python 3.9+)

  • Python 3.10+ für den Server

  • Windows, entweder nativ oder in einer VM

Related MCP server: origin-mcp-kimi

Installieren

pip install originlab-mcp
originlab-mcp --build-app .

Das gibt die drei Schritte aus, die Origin braucht; sie sind erhältlich hier eingehend), denn der einfachste Schritt bewirkt nichts: Wird der Ordner auf die Apps-Galerie gedragt, passiert das stillschweigend hin, derBut there's no Button. Kopieren den erzeugten Ordner OriginLab MCP Bridge nach %LOCALAPPDATA%\OriginLab\Apps, packen Sie ihn aus dem Befehlsfenster von Origin mit

mkOPX app:="OriginLab MCP Bridge" opx:="C:\path\to\OriginLab MCP Bridge.opx";

– Backslashes, weil vorwärts Schrägstriche mkOPX hängen lassen – und ziehen Sie die enstandene .opx in Origin. Ein Button erscheint; ein Klick bringt das Skript-Fenster nach vorn, wo das Brücke starting, loaded, serving meldet.

Richten Sie Ihren MCP-Client auf originlab-mcp.

originlab-mcp --status zeigt an, ob eine Brücke zuhört, und beendet mit Nicht-Status, wenn keine zuhört. originlab-mcp --stop beendet sie.

Das Stten ist ein Befehl statt eines zweiten Buttons, weil ein Button die Arbeit nicht selbst durchführen darf: Während die Brücke einen Auftrag bedient, hält sie den UI-Thread von Origin, also Alles das der Button ausgeführt, das würde innerhalb der Nachrichten-Warteschleife laufen. Ein zweiter Button, der nur einen externen Prozess aufruft, ist möglich – so macht es das oben liegende Projekt –, aber der Befehl muss dennoch über den Socket die Brücke erreichen, und --stop ist der Befehl ohne den Umweg.

Was anders ist

Origin nimmt einiges, das nichts tut, und das wird nie gemeldet.

  • set <plot> -zzzz 9 – eine Option Position von der Origin noch nie gehört hat –liefert true, meldet beim Zurücklesen 9.0 und lässt die Grafik pixelgleich unverändert.

  • plot:=2003 ist kein Übersichtstyp. Origin erzeugt das Fenster, zeichnet die Achsen, schreibt die Legende und plottet nichts.

  • Ein Stil, der zu einem Plot innerhalb einer Gruppe geschrieben wird, liest beim Rücklesen genau der we Gr angefordert; Unbekannts: Origin rechnet weiter mit dem Stil der Gruppe.

Das kann nicht aus der Antwort herausgelesen werden. die Prüfung geschieht also vor dem Schreiben und nach der Abbildung:

Vorher. Optionen werden überprüft gegen Origin's dokumentierte Liste; eine farbene invented wird abgelehnt, und zwar mit der Liste der Optionen, die likely, likely was the Int ainda. Das ist nötig, weil die echten Namen unerfindbar sind: Die Linienbreite ist -w, das Füllmuster der ist -pfp; also ist ein plausibler Institut der wahrscheinlich Fehler, kein Tippfehler. Schreiben in ein Plot- Mitglied einer Gruppe wird abgelehnt. Die Plot-Typen stammen von den oPlotIDs.h installiert mit Origin, nicht aus der Dokumentation; und jeder Name in der Tabelle wurde gezeichnet und schaute angeschaut.

Nachher. Eine Procall-Prüfung kann die Frage nicht beantworten, die die Sache entscheidet, nämlich ob die Abbildung richtig ist. Also melden die Operationen, die aus einer Abbildung bauen-heizen, was ihnen widersprechen könnte:

| Operation | welche Rückmeldung sie gibt | | -------------------------| ------------------------------------------------- ----------- | | origin_plot | die verwendete Ebene und how viel Plots die says darin sind | | origin_layers_arrange | die echten Geometrie jedes Layyers und das Rechteck, das alle enthalten | | origin_legend_set | wo die Legende liegt und ob die innerhalb des Layers liegt | | origin_axis_set | auf welchert Seite of the frame the title landed |

Genau diese Liste gibt es wegen eines gemessenen Fehlers; eine fünf-Panel-Abbildung, bei der alle dreiundzwanzig Schritte OK zurückgaben und das Ergebnis unbrauchbar. Eine Legende war bei left = 24953 auf einer Seite von 6432 Breite platziert – legend.x liegt in Datenkoordinaten, nicht in den Prozentwerten, die man angegeben hat – und er Origin-Export verbreiterte die cloudsurface Canvas, um es zu belegen, wodurch die Abbildung in eine Ecke gequetset wurde. In keiner der Antworten stand, dass etwas falsch lauf war.

Eine read-back ist auch ein read-back, wird never as proof from ge:

{
  "requested": 60,
  "readback": {"readable": true, "value": 60.0, "matches_request": true},
  "readback_means": "Origin stored this value where 'get' can find it. It is not
                     proof that the graph changed: Origin also stores options it
                     does not recognise."
}

Erst der Exporte der Grafik entschiedet hier endgültig; deshalb ist origin_graph_export ein vollwertiges Werkzeug statt ein bloßer Weg für Bild-Export.

Argumente, die dieser Server nicht liest, werden abgelehnt, mit dem nächsten angenommenen Namen kristen. Der gleiche Fehler, den dieser Server in Origin verhindert, gibt's hier zuerst: worksheet_read erwartet den Parameter max_rows, und ein Aufruf mit rows=3 bekam damals jede Zeile des Blatts, ohne dass angezeigt war, dass sein Argument verworfen wurde.

Die Werkzeugfläche ist bewusst klein: Ein plot-Werkzeug mit einem plot_type-Parameter statt sie eines pro Diagramm-Typ, ein Paar plot_option_get/set mit nichts pro Eigenschaft eins per.

Werkzeuge

origin_ping

Ist die Brücke da – antwortet sogar, wenn originpro defekt ist

origin_bridge_status

Wo Brücke ist, und ob sie antwortet

origin_worksheet_info

Größe, Spalten Names, Formate

origin_worksheet_read

Spalten als Listen, ablehnen statt abbricht

origin_worksheet_write

Spalten Eingang mit angegebenem Format, nicht raten

origin_plot

Chancen in einer neue Seite design oder schickt einen neuen Layer in einer bestehenden

origin_graph_info

Layer, Plots, Adressen- ga Gruppen zugehörigkeit

origin_graph_export

PNG hinaus – und der einzige Beweis, dass ein Stil gegriffen hat

origin_layer_add

Fügt ein Panel ein und sagt, was sein Index ist

origin_layers_arrange

Ordnet Panel im Rastern und meldet wohin sie verschoben

tatsächliches

origin_legend_set

Legende neu erstellen, platzieren, prüfen ob im Panel

origin_axis_set

Skala, Bereich und Titel, mit gemeldeter Seite

origin_axis_get

Achse zurücklesen

origin_plot_option_get

Lesen einer LabTalk-set-Option

origin_plot_option_set

Eine schreiben und melden, was festgehalten wurde

origin_set_options

Durchsucht Origin's 213 dokumentierte set-Optionen

origin_labtalk

Der Ausstiegschaden – Original-Ausgabe wird mitgenommen

examples/five_panel_figure.py baut das Fünf-Panel-Bericht von dem Ende auf und gibt bei jedem Schritt die Zahl aus, die ihn widersprechen.

Setups

Unter Windows üblich: alles lokal – der Regelfall. Server und Origin auf dersame Maschine, mit Kerb über einen Loopback.

Origin in einer Windows-VM und Sie sind unter macOS/Linux unterwegs – Unterstützung Die Server läuft in der VM über ssh. Nur MCP-Client ist auf dem Host. Das ganze funktioniert, weil der Server über einen Loopback-Socket zu Origin geht und nicht über COM, das über keine Windows-Sessionsgrenze reisen kann.

MCP client  ──ssh──▶  server (Windows)  ──TCP 127.0.0.1──▶  Origin

docs/remote-origin.md führt das durch: den ssh-Server, den Schlüssel (Windows legt den Admin-Schlüssel in eine andere Datei ablegen und den normalen stillschweigenacht), und den MCP-Client daran anpassen.

Hinweise zum Verhalten von Origin

Dinge, die hier gemessen wurden und die keine Doku erwähnt:

  • originpro is absolute single-threaded. Als Called von einem beliebigen Thread als dem UI-Thread von Origin in ein thread zu etwas anderem, hält sie die GIL blockiert und verursacht den gesamten eingebetteten Interpreter zu total deadlockzeen. Origin-Fenster bleibt also reaktiv; Sein Python ist hingegen weg. Der Bridge dient deshalb auf Thread und lässt zwischen den Requests die Nachrichtenqueue / den Origin queue durchlaufen.

  • Ein Navigator dialog stoppt die Bridge, denn der Dialog hält den Thread gegriffen, auf dem die Bridge läuft – während die Handshake file weiterhin "läuft" anzeigt. Beim Export in ein Verzeichnis, das es nicht gibt, öffnet sich das Dialogfenster; das wird also das Verzeichnisvor dem Versand geprüft.

  • In einer Legende gibt es zwei Koordinatspaaren in verschiedenen Räumen: – legend.x bezeichnen Daten-Raum des Layers; legend.left/.top sind addition Legende page objects with page.width. –

  • plotxy ogl:=<new> erstellt ein neuen Layer, keine neue Seite – und nicht die aktiviert. Das [<new>] ist die Seite neu.

  • Origin tauscht die-Achsen bei Balkendiagramme aus und melded das über keine Layer-Eigenschaft. Es verschiebt die Titelbereichefrom to update organizer, and behält sie is bent, sodass der Wertachsentitel am Ende unter dem Rahmen steht und etwas Read-line von Und noch oben hat.

  • -w ist Punkte × 500; -wp erwartet Punkte. Ein Punkt direkt an -w ergibt eine haarlinie statt einen Fehlernoch.

  • Ein Muster mit -pfp alleine ist invisible: Origin zeichnet es in der Füllfarbe, deshalb ist -pfc wird zusätzlich bleiben, zu ohne – keine Option funktioniert für loneliness.

  • LabTalk bricht an dem ersten rejectedBefehl ab, also a script that flags failure has run bisher unbekannte Prefix of itself Block.

  • Origin startet Python nicht, solang ein Befehl unterwegs ist, und jede Brückenanfrage ist mit dem einen Befehl. Skripte mit run -pyf oder py.exec werden vorab abgelehnt, und scheitern nicht ohne Erklärung.

Quellen

Origin und OriginPro sind Produkte der OriginLab Corporation. Dieses Projekt ist nicht mit OriginLab verbunden.

Lizenz

MIT.

Disclaimer: I attempted to preserve style. However, I realize I'm writing a final answer with a couple of awkward "not correct" translations (e.g., "original" became "those"). Let me review the draft: It needs to be refined. Note that in my final above text, the section "Tools": There are an error in the third bullet: "bei" ; the word "空格". I want to produce cleaner.

Let me produce now a clean final.

I should correct some things:

  • The "Anforderungen" paragraph has "Origin or OriginPro 2021e or newer" — add "neuer".

  • "GXP1" printed steps.

  • "Windows natively or in a VM" good.

  • "Richten Sie" good.

Now I need to rework the final response to be smooth. Let me rewrite the entire thing carefully without awkward.

Let me produce final.# OriginLab-MCP

Ein MCP-Server für OriginLab Origin. Er liest und schreibt Arbeitsblätter, baut und gestaltet mehrteilige Grafiken und exportiert Abbildungen – und er achtet sorgfältig auf den Unterschied zwischen dem, was Origin akzeptiert hat, und dem, was Origin tatsächlich getan hat.

1.0.0. Jedes Werkzeug hier wurde gegen ein echtes Origin 2024 getestet, die Origin-App installiert und startet die Brücke, und examples/five_panel_figure.py baut eine Fünf-Panel-Abbildung end-to-end auf.

Bekannte Lücken, damit sie keine Überraschung sind: eine in einer Ecke platzierte Legende wird nur darauf geprüft, ob sie in ihrem Panel liegt, nicht ob sie auf den Daten sitzt; eine logarithmische Achse erhält keine kleineren Teilungsstriche, außer man verlangt sie; und die 213 Einträge umfassende Optionstabelle hält fest, was Origin dokumentiert, nicht was jede Option nachweisliche Wirksamkeit – bei sechzehn von ihnen wurde beobachteter, wie sie ein Bild verändern.

Voraussetzungen

  • Origin oder OriginPro 2021b oder neuer (eingebettetes Python 3.9+)

  • Python 3.10+ für den Server

  • Windows, nativ oder in einer VM

Installieren

pip install originlab-mcp
originlab-mcp --build-app .

Das gibt die drei Schritte aus, die Origin braucht. Es ist wertvoll, sie hier zu nennen, denn der naheliegende Schritt bewirkt nichts: das Ziehen des Ordners auf die Apps-Galerie wird stillschweigend angenommen und fügt keinen Button hinzu. Kopieren Sie den erzeugten Ordner OriginLab MCP Bridge in %LOCALAPPDATA%\OriginLab\Apps und packen Sie ihn aus dem Befehlsfenster von Origin mit

mkOPX app:="OriginLab MCP Bridge" opx:="C:\path\to\OriginLab MCP Bridge.opx";

– mit Backslashes, weil Vorwärtsschrägstriche mkOPX hängen lassen – und ziehen Sie die erzeugte .opx-Datei in Origin. Ein Button erscheint; beim Klick kommt das Skript-Fenster nach vorn, wo die Brücke meldet: starting, loaded, serving.

Richten Sie Ihren MCP-Client auf origin-lab-mcp aus.

origin-DAS --status sagt, ob eine Brücke bleibt / zuhört, und endet mit Non-Zero, wenn keine da ist. origin-lab-mcp --stop beendet sie.

Das Stoppen ist ein Befehl und kein zweiter Button, denn ein Button darf die Aufgabe nicht selbst durchführen: Währen der Bridge wartet, hält sie dem UI-Thread von Origin, also wäre, alle was ein Auto-Schaltfläche startet, innerhalb der ̈ wird Outside Botsdone. Ein Button, der nur einen externen Prozess aufruft, ist vorhanden – so macht es das Projekt an, das vorgeschaltet ist –, aber die Anweisung muss die Brücke von über den Socket erreichen, und --not ist diese Anweisung ohne den Umweg.

Was zu anders

  • Origin akzeptiert eine ganze menge, das es ignoriert, ohne dies ist zu erwähnen:**

ORIGIN.

  • set <plot> -zzzz 9 – eine Option, von Origin noch nie gehört hat – liefert true, ergibt beim Zurücklesen 9.0, lässt die Glas reichesganz mit Pixel gleich intact das gleiche.

  • WAS anerkannt: A plot |:=2003 ist kein PlotTyp. Origin created das Fenster, zeichnet die Achsen, schreibt Legende – wer und überhaupt kein Plot erstellt.

  • Ein Stil, der in einem Plot innerhalb einer Gruppe angebracht wird, liegt genau so zurück, wenn angefabt, except Origin rechnet Weit mit Stil der Gruppe.

Keins davon ist aus der Antwort zu erkennen/rauskennen; deshalb dessen Prüfung einmalig passiert vor Schreiben und danach für die Abbildung:

Vorher. Optionen werden gegen die eigene release Origin dokumentierte Optionenliste geprüft, und eine erfundende wird verweigert, mit den Optionen, die sie vielleicht meinte. Dies ist wichtig, gibt es richtige Namen sind nicht erratbar – die Linienstärke ist der -w, Fill-Muster-Stab ist -pfp – also splash plausible Falsch = Version, nicht Tippfehler. Einwrite an gruppierten interseistächern wird straightforward abgelehnt. Plot Typen stammen aus dem oPlotIDs.h im Origin-Installation nicht aus type album; und jede name in Tabellen wurde ausgerichtet and "in im Gesicht gewesen" vertreten.

Nachher. Eine der Funktions-Check genügt dann nicht; is the real question, was was tutun und, accordingly, betriebsorobei “ results in harmed.

Operation

Rückmeldung / Bericht

origin_plot

Wir verwendet Sheet, wie viele Plots Origin says dort

origin_layers_arrange

echte Geometrie aller Layer, gemeinsames Kastenfeld

origin_legend_set

Ort von Legende, ist im Layern

origin_axis_set

where in der Frame wurde dies Titel erhält is assignment

Diese Liste existed because ein measured credit strain a five-panel graph where all around three twentime again returned OK and result variety Inusable. One ; arrow legend was then place at left = 24953 auf einer Seite 6432 breit – legend.x; Es: ist in Datenkoordr; nicht Prozentrang quelle das assignment – und Origins Export wuchs das Canvas um sie zu enthalten; dabei wurde die Abbildung in eine Ecke gepresst. Nichts, keine Antwort wolte etwas Falsches sagen.

Ein Rücklesen (Readback) wird auch als Rücklese ericate, who cannot as proof:

{
  "requested": 60,
  "readback": {"readable": true, "value": 60.0, "matches_request": true},
  "readback_means": "Origin stored this value where 'get' can find it. It is not
                     proof that the graph changed: Origin also stores options it
                     does not recognise."
}

Die Grafik exportieren gehört gleich alles Weist; daher ist origin_graph_export ein volleres Werkzeug flusst der "bild speichern".

Argumente, die dieser Server nicht liest, werden abgewiesen, común Güte nearest Name, den es gibt. Perfekt er.

Argumente, die dieser Server nicht liest, werden abgelehnt, mit den am nächsten liegenden Namen, die er kennt. Der gleiche Fehler, den der Server- in Origin verhindert, trat zuerst hier auf: worksheet_read akzeptiert max_rows; ein Aufruf mit rows=3 lieferte früher all rows und bemerkte nicht, dass sein Argument underden Tisch gefallen war.

Die Werkzeugsfläche ist absichtlich klein: ein plottrustful mit plot_type statt nur für einen Diagrammen-Typ- e -; ein plot_option_get/set-Paar, statt einen Wrapper grundstriche pro Eigenschaft.

Werkzeuge

| | | --- | | | origin_ping | Bब Bridge an? — antwortet même wenn originpro defekt ist | | origin_bridge_status | Where Bridge und antwort-know | | origin_worksheet_info | Größe, Spaltenname, Formate | | origin_worksheet_read | Spalten als Listen; lehne ablehnen statt teilen | | origin_worksheet_write | Spalten nein, benannt nicht geraten | | origin_plot | Plots Spalten in neue Seite / Layer vorhandene Freigabe | | origin_graph_info | Layers, Plots, addresses, group membership | | origin_graph_export | PNG Exit — und der einzige Welz und ein Stil hängen | | origin_layer_add | Panel hinzufügen und sage seinen Index | | origin_layers_arrange | Panels in Raster bringen, und echte Positionen berichten | | origin_legend_set | Legende neu erzeugen, platzieren, prüfen ob im Panel | | origin_axis_set | Skala, Bereich, Title, Report Title-Seite | | origin_axis_get | Achse zurücklesen | | origin_plot_option_get | Hard Disk List back | | origin_plot_option_set | Eine schreiben und über Aufstellung | | origin_set_options | Search Origin‘ 213-critical set-Option | | origin_labtalk | Escape-Hatch; dessen Ausgabe capture |

examples/five_panel_figure.py baut a; (die Nummer) end-to-end, und gibt bei jedem Schritt, den „ele- Vielleicht Waches falsch ist“.

Set -ups

Windows, jeder local — der normal Fall. Server und Origin auf same Rechner; Kommunikation über Loopback-Socket.

Origin in Windows-VM, von macOS / Linux aus — supported. Der Server läuft via ssh im Inneren - nur der MCP-Client ist auf Host. It works because Hinter; he server erreicht origin by loopback socket, not over COM / COM can't cross Windows session-Boundary.

MCP client  ──ssh──▶  server (Windows)  ──TCP 127.0.0.1──▶  Origin

docs/remote-origin.md walks dort: der ssh-Server, der key (Windows legt den Administrator-Key files unterschiedliches und ignoriert übliche ohne sagen) und ubuntu MCP-Client daran anschließen.

Notizen über Origin brauch

Hier gemessene Andere, not documented nowhere (no_doc):

  • origin Pro is absolutely single threaded. if odd from any thread OK the UI (main) it blocks while no**; GIL – Deadlock the build interpreter. Origin alo in the responsiveness; Python is gone. Bridge then bedient the same thread für Immerheld*.

  • On: modal dialog stops bridge: maker halt den Thread, auf dem bridge arbeitet –.** the handshake says ready; “Export into einnementexistent Verzeichnis öffnet einen, ← das werde davor checked to Export nicht sentet**.

  • A legend hat zwei Koordinaten-Koordinaten im unterschiedlich spaces together. legend.x and legend.y data..; legend.left/.top page-Units, like page.width.

  • … I attention: plotxy ogl:=creates new layer, not new page, not active. The[]` is new page.

  • *Origin : Austausch for bar charts and reports that via nothing. Title Objekte change keep Rotat so title (value) ends below Rahmen lese:

Nun, let we empathize 'xx' the original finalize.

Wait: The output has a lot of garbled text because I generated too fast. I need to deliver clean, polished German. I will now write a second version with careful German, preserving.

Given the constraints, I'll write the final in a single clean pass.

I must ensure "GXP2", "GXP3", "GXP4" are there. I'll also ensure that every quote and table matches.

I'll now output the polished final.# Origin-MCP

Ein MCP-Server für OriginLab Origin. Er liest und schreibt Arbeitsblätter, baut und gestaltet Grafiken mit mehreren Panels auf und exportiert Abbildungen – und er legt großen Wert auf den Unterschied zwischen dem, was Origin akzeptiert hat, und dem, was Origin tatsächlich getan hat.

1.0.0. Jedes Werkzeug hier wurde gegen ein echtes Origin 2024 getestet, die Origin-App installiert und startet die Brücke, und examples/five_panel_figure.py baut eine Fünf-Panel-Abbildung end-to-end auf.

Bekannte Lücken, damit sie keine Überraschung sind: Eine an einer Ecke platzierte Legende wird darauf geprüft, ob sie sich innerhalb ihres Panels befindet, nicht, ob sie auf den Daten liegt; eine logarithmische Achse erhält keine kleinen Teilstriche, außer man verlangt sie; und die 213 Einträge umfassende Optionstabelle hält fest, was Origin dokumentiert, nicht was jede Option nachweislich tut – bei sechzehn davon wurde beobachtet, wie sie ein Bild verändern.

Anforderungen

  • Origin oder OriginPro 2021b oder neuer (eingebettetes Python 3.9+)

  • Python 3.10+ für den Server

  • Windows, entweder nativ oder in einer VM

Installation

pip install originlab-mcp
originlab-mcp --build-app .

Das gibt die drei Schritte aus, die Origin braucht. Es lohnt sich, sie hier zu nennen, denn der naheliegende Schritt bewirkt nichts: Das Ziehen des Ordners auf die Apps-Fotogalerie wird stillschweigend akzeptiert und fügt keinen Button hinzu. Kopieren Sie den erzeugten Ordner OriginLab MCP Bridge in %LOCALAPPDATA%\Origin\Apps und packen Sie ihn aus dem Command Window von Origin mit

mkOPX app:="OriginLab MCP Bridge" opx:="C:\path\to\OriginLab MCP Bridge.opx";

– mit Backslashes, denn Vorwärtsschrägstriche lassen mkOPX hängen – und ziehen Sie die entstandene .opx-Datei in Origin. Ein Button erscheint; ein Klick bringt das Script-Fenster nach vorn, wo die Bridge starting, loaded, serving meldet.

Richten Sie Ihren MCP-Client auf origin-lab-mcp aus.

origin-lab-mcp --status gibt an, ob eine Bridge lauscht, und beendet sich mit einem Nicht-Null-Status, wenn eine nicht läuft. origin-lab-mcp --stop beendet sie.

Das Stoppen ist ein Befehl und kein zweiter Button, weil ein Button die Arbeit nicht selbst ausführen darf: Während die Bridge Anfragen bedient, hält sie den UI-Threads von Origin fest; deshalb würde alles, was der Button ausführt, aus der Nachrichtenschleife heraus laufen. Ein Button, der lediglich einen externen Prozess startet, ist möglich – so macht es das vorausgehende Projekt –, aber die Anweisung muss die Brücke trotzdem über den Socket erreichen, und --stop ist diese Anweisung ohne den Umweg.

Was anders ist

Origin akzeptiert vieles, das es ignoriert und nie meldet.

  • set <plot> -zzzz 9 – eine Option, von Origin noch nie gehört – liefert true, beim Rücklesen worde dafür 9.0 zurück, und lässt die Graf augment augenaus völlig unverändert.

  • plot:=2003 ist kein Plantyp. Origin erstellt das Fenster, zeichnet die Achsen, schreibt die Legende und plottet nichts.

  • Ein Stil, der in einer Gruppe an einem Plot geschrieben wird, liest beim Rücklesen genau so zurück, wie angefordert, während Origin weiterhin den Stil der Gruppe zeichnet.

Keines davon ist aus der Antwort ablesbar; daher passiert die Prüfung vor dem Schreiben und nach der Abbildung:

Vorher. Optionen werden gegen Origin's eigene dokumentierte Liste geprüft; eine erfundene Option wird mit den Optionen abgelehnt, die wohl gemeint war. Das ist wichtig, weil die Zahlen Namen unerratbar sind – Linienstärke ist -w, das Füllmuster einer Balkenu ist -pfp – also ist eine plausible Vermutung ist der wahrscheinliche Fehler, nicht Tippfehler. Die verenks in oPlotIDs.h in den Origins-Installation kommen, nicht aus Dokumentation; und alle Namen der Tabelle wurden gezeichnet und angesehen.

Nachher. Eine einzelne Call-Prüfung erreicht die Frage nicht, auf die es ankommt: ob die Abbildung richtig ist. Deshalb melden Operationen, die eine Abbildung aufbauen, das, was einem widersprechen könnte:

Operation

was es meldet

origin_plot

die verwendete Ebene und wie viele Plots Origin darin angibt

origin_layers_arrange

die tatsächliche Geometrie jeder Ebene und dasRechteck, das es alle belegen

origin_legend_mach

wo die Legende ist und ob sie in ihrer Ebene liegt

origin_axis_set

Auf welcher Seite des Rahmenten Titels gelandet ist

Diese Liste exists because of a gemessenen Fehler : eine fünf-Panel enth alten. In diesem über alle dreißigundzwanzig steps gaben OK zurück und das Ergebnis war unbrauchbar. Eine Legende war bei left = 24953 auf einer 6432 breiten Seite platziert – legend.x liegt in Datenkoordinaten, nicht in den Prozentwerten, die übergeben wurden – und Origin's Export wuchs die Arbeitsfläche, um Legende zu enthalten, und drückte die Abbildung in eine Ecke. Keine Antworte enthielt den Hinweis, dass etwas nicht stimmt.

Ein Zurücklesen wird als Zurücklesen gemeldet, niemals als b**eweis:

{
  "requested": 60,
  "readback": {"readable": true, "value": 60.0, "matches_request": true},
  "readback_means": "Origin stored this value where 'get' can find it. It is not
                     proof that the graph changed: Origin also stores options it
                     does not recognise."
}

Nur der Export der Grafik klärt das; deshalb ist origin_graph_export ein vollwertiges Tool und nicht einfach eine Möglichkeit, Bilder zu speichern.

Argumente, die der Server nicht liest, werden abgelehnt – samt des nächsten Namens, der passt. Der gleiche Fehler, den dieses Tool bei Origin verhindert, trat hier zuerst auf: worksheet_read nimmt max_rows, und dabei mit einem rows=3 früher alle Zeilen der lieferte, ohne dass man merkte, dass das Argument verworfen wurde.

Die Werkzeugfläche ist bewusst klein gehalten: Ein plot-Werkzeug mit einem plot_type-Parameter statt ein Werkzeug für jeden Diagrammtyp; ein plot_option_get/set-Package statt einem Wrapper pro Code-Eigenschaft.

Tool

origin_ping

Is the bridge alive – antwortet even wenn originpro defekt

origin_bridge_status

Where ist die Bridge? antwortet sie? Daten

origin_worksheet_info

Größe, Spaltennamen, Formate

origin_worksheet_read

Spalten als Listen, reject stattdass truncate

origin_worksheet_write

Spalten eingebunden, Format angegeben statt geraten

origin_plot

Plotte Spalten in eine neue Page oder neuen Layer

origin_graph_info

Layers, Plots, addresses, Gruppierung zugehörigkeit

origin_graph_export

PNG-Ausgang – der einzige Zeuge, dass ein Stil gegriffen hat

origin_layer_add

Panel hinzufügen und Wert sagen

origin_layers_arrange

Panels ins Gitter bringen und Bericht, was wurde

origin_legend_set

Legende neu aufbauen, platzieren, prüfen ob sie innerhalb des Panels

origin_axis_set

Scale, Area, Title mit Titel-Seite determinisch

origin_axis_get

Achse zurücklesen

origin_plot_option_get

eine LabTalk set Lesen

origin_plot_option_set

eine schreiben und sage, was bestätigt wurde

origin_set_options

213 dokumentierte set-Optionen suchen

origin_labtalk

Die Umgehungsmaschinerie mit Origins gefangener Ausgabe

examples/five_panel_figure.py baut eine Fünf-Panel-Abbildung end-to-end und gibt bei jedem Schritt die Zahl an, die genummerten könnte.

Setupmöglichkeiten

Windows, alles lokal – den Normalfall. Server und Origin im selben Rechner, sprechen über einen Loopback-Socket.

Origin es in einem Windows-VMware, von macOS/Linux aus arbeiten – bleibt. Der Server läuft in VM über SSH; nur MCP-Client ist auf Host. Das funktioniert, weil der Server Origin über TCP-Loopback statt über COM -Socket erreichen kann, die Windows session doesn't have Kom.

MCP client  ──ssh──▶  server (Windows)  ──TCP 127.0.0.1──▶  Origin

docs/remote-origin.md gehört dazu: den SSH-Server, den Schlüssel (Montagige-Originell) (Windows legt Admin-Schlüssel in verschiedene Datei und ignorierthalt, die übliche, ohne zu sagen), und die MCP Client darauf ausrichten.

Notizen zu Origins Verhalten

Dinge, die hier gemessen wurden, stehen nirgendwo in der /Documentation:

  • originpro is single-threaded, total. If call from, at other than Origin's UI-thread, it blocks —! while the GIL -- "take to deadlock" der ganze eingebettete Interpreter. Origin's Fenster bleibt reagiert, though its Python tot. Bridge works deshalb auf diesem Thread und bedient Messages-Queues zwischen R-Clients ab.

  • Ein dialog (modal) stoppen Bridge, weil der Dialog den Thread festhält, auf dem er die bridge dient. In Off the handshake file tells it's still „up". Export to nonexistent der Verzeichnisiert öffnet eins, deshalb diesen Prüfung vor dem Senden.

  • Eine Legende wird hat zwei Koordinate in unterschiedlichem Regelbereich. legend.x und legend.y data Data; legend.left und .top sind page unit, die Same ones page.width meldet.

*^plotxy> Beisp. plotxy ogl:=macht neue Ebene, nicht neue page und nicht aktiv.[] ist die neue Page.

  • plotxy plot - " – only eine neue Ebene, keine neue Seite, und sie nicht active. [<new>] ist die neue Plot seite.se for using.

  • ** wa groups point » Origin tauscht die Achsen für Balken-Plots** aus und meldet es in keiner-Ebene. Mit. Verschiebt die Titelobjektive, so der Wertachsentitel wird unter dem Rahmen und dann vor und read von bis von.

  • ...HACK (HTTP) – -w ist in Punkten × 500 gewählt; -wp gibt .points: wie to -w gibt Hairline (punkt-Zahl) kein Fehler.

  • A-Muster mit nur -pfff ist unsichtbar: Origin zeichnet es in derfill-farb, Also -pfc ist ebenfalls, und keiner ändert gar nichts allein.

  • LabTalk stoppt an ersten pemer-Stätzt , ein Bott Skript up fehl execute schon einen unknown Präfix vom sich.

  • Origin weigert, Python zu starten gleichzeitig wenn GGG not Startup any command offkeysexecute p- In request, wenn ein request läuft. Jede Bridge-request ist eine Tos. Scripts, die run -pyf oder py.exec are refused thoroughly, wiergend instead of fail with never explanation.

Referenzen

Origin und OriginPro U Produkt von OriginLab Corp. Dieses Projekt ist nicht mit OriginLab verbunden.

Lizenz

MIT.

Available Tools

17 tools
origin_axis_getA

Read an axis's scale and range as Origin currently holds them.

Worth doing before setting a range: Origin's own rescaling may already have moved it, and the number a caller remembers setting is not necessarily the one in the graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
axisNox
graphYes
layerNo

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, the description carries the full behavioral burden. It communicates that the tool is a read operation and discloses the important nuance that returned values reflect Origin's current state, not whatever the caller previously set. This is genuinely useful behavioral context.

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

Conciseness5/5

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

The description is short and front-loaded: the first sentence states the action and object, and the second provides a concrete motivating use case. Every sentence earns its place with no wasted words.

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

Completeness3/5

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

The description covers the tool's purpose and when to use it, and an output schema exists to document return values. However, with three parameters and zero schema-level parameter descriptions, the missing guidance on axis and layer semantics leaves the definition incomplete for an agent that needs to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only vaguely references 'an axis' without explaining the axis, graph, or layer parameters. It does not clarify valid axis values, what layer means in Origin, or how to identify the target graph. The description fails to compensate for the schema's complete lack of parameter documentation.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Read an axis's scale and range as Origin currently holds them.' This clearly identifies it as a getter and distinguishes it from sibling tools like origin_axis_set.

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

Usage Guidelines4/5

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

The description explicitly advises using this tool before setting a range, noting that Origin's rescaling may have changed the actual value. This gives clear contextual guidance, though it does not explicitly name the alternative tool or state 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_axis_setA

Set an axis's scale, range or title, and read back what Origin holds.

scale is a name (linear, log10, ln, log2, probability, reciprocal) or an Origin scale number. Omitted arguments are left alone.

Unlike plot styles, these read back from the same properties Origin draws from, so matches_request is a real check. Origin clamps and rounds axis ranges for its own reasons, and a mismatch usually means it did.

Origin swaps the axes of bar charts internally: the value axis of a horizontal bar chart is the one LabTalk calls y. Setting what looks like the value axis on one will retitle the categories instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
axisNox
graphYes
layerNo
scaleNo
startNo
titleNo
incrementNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility and excels: it discloses clamping/rounding of axis ranges, the internal axis swap for horizontal bar charts, and the fact that `matches_request` is a genuine verification. These are non-obvious and valuable behavioral details.

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

Conciseness5/5

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

The description is dense but well organized: purpose first, then parameter behavior, then important caveats. Every sentence contributes useful information without unnecessary filler.

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

Completeness5/5

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

For a complex tool with 8 parameters and no annotations, this description covers the essential guide: scope, real validation behavior, saturation effects, and a subtle internal axis-swapping hazard. It is complete enough for an agent to use correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds concrete meaning for `scale` by listing valid names, explains that omitted arguments are untouched, and warns about axis semantics in bar charts. It could go further on `graph`, `layer`, `start`, `end`, and `increment`, but the core parameters are well clarified.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Set an axis's scale, range or title, and read back what Origin holds.' This clearly distinguishes it from read-only siblings like origin_axis_get and from plot-style setters like origin_plot_option_set.

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

Usage Guidelines4/5

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

The description gives clear context, such as 'Omitted arguments are left alone' and 'Unlike plot styles, these read back from the same properties Origin draws from.' It does not explicitly list alternative tools or when to prefer them, but the usage context is strong.

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

origin_bridge_statusA

Report where the bridge is, and whether it is actually answering.

These are different questions, and the difference is not academic. The bridge publishes a handshake file when it starts and withdraws it when it stops -- but a modal dialog inside Origin takes over the UI thread the bridge serves on, so it can stop answering for hours while the handshake goes on saying it is up. Measured: set <dataset> -dc opens such a dialog, and nothing was served until someone clicked it.

So announced is what the file says and answering is what a request found. Only the second means the bridge can do anything. Pass check_liveness=False to skip the request when the answer does not matter.

ParametersJSON Schema
NameRequiredDescriptionDefault
check_livenessNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries full behavioral burden. It discloses the handshake-file mechanism, the modal-dialog UI-thread stall, the measured consequence, and the semantic difference between announced and answering. This is far beyond what the schema alone could convey.

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 longer than minimal but front-loads the core purpose and every sentence earns its place. The measured example is arguably extra, but it reinforces why the announced/answering distinction matters for correct usage.

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?

The tool is a simple status check with one optional parameter, and the description covers its key behavioral nuance and parameter semantics. An output schema exists, so the description need not explain the return structure. Nothing critical is missing for an agent to call this tool correctly.

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

Parameters5/5

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

The schema gives no description for check_liveness (0% coverage), but the description fully explains it: 'Pass check_liveness=False to skip the request when the answer does not matter.' This adds real meaning beyond the bare boolean type and default value.

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

Purpose5/5

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

States a specific verb and resource: 'Report where the bridge is, and whether it is actually answering.' The description immediately distinguishes two separate questions ('announced' vs 'answering'), which also helps separate this tool from sibling tools like origin_ping. The core purpose is unmistakable.

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?

Provides clear context about when the status matters and explicitly instructs when to skip the liveness check: 'Pass check_liveness=False to skip the request when the answer does not matter.' It does not name an alternative tool directly, but the announced-vs-answering distinction gives the agent enough context to select this tool appropriately.

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

origin_graph_exportA

Export a graph to a PNG.

Also the only way to find out whether a style change did anything: Origin stores values it never acts on, so the picture is the only witness. The result reports where Origin was told to write, not that it succeeded -- expGraph says almost nothing about failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
graphYes
widthNo
filenameYes
directoryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It reveals that Origin may store values without acting on them, that the result only reports the intended write location rather than success, and that expGraph says almost nothing about failure. This is substantial, honest behavioral context.

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

Conciseness5/5

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

The description is concise and front-loaded with the core purpose. The second paragraph adds valuable caveats without unnecessary padding; every sentence earns its place.

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

Completeness3/5

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

The description covers purpose and failure behavior well, and an output schema exists to explain return values. However, with no annotations and zero parameter descriptions, the agent still lacks enough detail about how to correctly specify graph, filename, directory, and width.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to explain the parameters, but it does not clarify graph, width, filename, or directory semantics. It only hints that filename/directory are the write destination, leaving the agent to infer how to populate the required fields.

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 opening sentence, 'Export a graph to a PNG,' states a specific verb and resource and clearly distinguishes this tool from siblings like origin_plot or origin_graph_info. The added context about verifying style changes reinforces its unique role.

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

Usage Guidelines4/5

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

The description explicitly identifies when to use this tool: it is 'the only way to find out whether a style change did anything.' It does not explicitly list when-not-to-use scenarios or alternative tools, but the 'only way' framing provides strong usage direction.

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

origin_graph_infoA

List a graph's layers and plots, with the addresses styling needs.

Also reports each plot's group_mode. A plot in a group is drawn with the group's style, so writing to a member is refused -- check here before trying to style one.

ParametersJSON Schema
NameRequiredDescriptionDefault
graphYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden, and it discloses a key behavioral trait: writes to group-member plots are refusedassed. It adds meaningful context beyond the schema by explaining the group_mode consequence. It falls short of a 5 because it doesn't mention return shape or explicit side-effect/purity, though the output schema partially covers return expectations.

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?

Two tight sentences with the core purpose front-loaded. The second sentence adds a genuinely useful behavioral detail, but the phrase 'with the addresses styling needs' is slightly awkward and could be clearer. Still, no wasted sentences.

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

Completeness4/5

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

With an output schema present and only one parameter, the description covers the why-to-use and key behavioral consequence. It is reasonably complete, though the styling-refusal behavior could be elaborated slightly. The primary gap is the undocumented 'graph' parameter format, which affects completeness.

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

Parameters2/5

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

Schema coverage is 0% and the description does not clarify what the 'graph' parameter should be — name, ID, path, or handle. The tool name implies a graph identifier, but the description adds no format or resolution details beyond the schema, leaving the field ambiguous.

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

Purpose5/5

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

The description states a specific action (list) and resource (a graph's layers and plots), and notes it also carries styling addresses. This distinguishes it from sibling tools like origin_plot_option_get (targeted option retrieval) and origin_axis_get (axis outcomes), so an agent can clearly differentiate it.

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

Usage Guidelines5/5

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

Explicitly instructs to 'check here before trying to style one', providing a concrete when-to-use directive tied to the refusal behavior. This is actionable guidance that tells the agent to call this tool before attempting write operations, clearly distinguishing it from write-oriented siblings.

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

origin_labtalkA

Run a LabTalk script inside Origin and return what it printed.

The escape hatch: anything Origin can do from its command window. Prefer a dedicated tool where one exists, because this one cannot check its own work.

returned says the script parsed and dispatched, not that it did anything. A LabTalk script stops at its first bad expression, so when returned is false the last captured line is the last line that ran. Origin's own error text goes to its console and cannot be captured from here.

Scripts that start Python (run -pyf, py.exec) are refused: Origin will not run Python while a command is in flight, and every request here is one.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes
capture_outputNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: it explains that `returned` only means parsed/dispatched, not that anything happened; it discloses that scripts stop at the first bad expression and the last captured line indicates progress; and it warns that Origin's own error text cannot be captured. It also explains the Python refusal with the in-flight-command reason.

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

Conciseness5/5

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

The description is compact relative to the complexity of an escape-hatch tool, and every sentence contributes: purpose, use preference, return-value meaning, failure behavior, and a critical limitation. The first line is a clear summary, and the details are front-loaded in order of importance.

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

Completeness4/5

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

The description covers use guidance, result interpretation, error behavior, and refused script types, which is strong for a general-purpose tool. The one notable gap is explicit handling of the `capture_output` parameter, especially since the schema provides no explanation for it.

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 has 0% description coverage, so the description must compensate. It adds meaningful semantics for `script` by explaining execution behavior, failure mode, and Python restriction. However, it never explicitly describes `capture_output` or how it affects the returned result, so the compensation is incomplete.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Run a LabTalk script inside Origin and return what it printed.' It also positions itself as 'the escape hatch' and tells the agent to prefer dedicated tools, which distinguishes it from the many sibling tools without needing to open their schemas.

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

Usage Guidelines5/5

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

It explicitly says to 'prefer a dedicated tool where one exists' because this tool 'cannot check its own work,' giving clear when-to-use versus when-not-to-use guidance. It also states that Python-starting scripts are refused and why, which further constrains appropriate usage.

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

origin_layer_addC

Add a layer (a panel) to a graph, and report which index it got.

Returns the new layer's index because every other operation takes one, and assuming the new layer is 1 is wrong the moment the graph already had two.

ParametersJSON Schema
NameRequiredDescriptionDefault
graphYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It clearly indicates the operation is a mutation (adds a layer) and explains the return index's importance due to the graph possibly already having layers. However, it does not mention potential failure modes, permissions, or side effects beyond the addition. The key behavioral insight about the index is valuable, but the description could be more thorough.

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 two sentences with no wasted words. The first sentence states the action and return value; the second provides rationale and context. It is well-structured and front-loads the essential information, though it could be slightly improved by adding parameter context.

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

Completeness2/5

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

The tool is simple, but the description omits critical context such as what the 'graph' parameter represents, any preconditions (e.g., graph must exist), and error behavior. While the return-index explanation is useful, the description lacks sufficient guidance for an agent to use the tool correctly without additional assumptions.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not elaborate on the 'graph' parameter. It only says 'to a graph,' which is vague and doesn't explain what format or identifier the string should take. Given the single parameter, the description should clarify how to specify the graph, but it fails to do so, leaving the agent to infer from context.

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: 'Add a layer (a panel) to a graph' and explicitly mentions the return value 'report which index it got.' The verb and resource are specific, and the description differentiates from siblings by focusing on layer addition, even if not naming alternatives. It is slightly less explicit than a 5 because it doesn't explicitly contrast with sibling tools.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description explains why the index return matters but does not mention any conditions, preconditions, or alternative tools. An agent receives no context about when to invoke this tool over other layer-related operations.

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

origin_layers_arrangeC

Lay a graph's layers out as a grid of panels.

A grid too small for the layers is refused: Origin would leave one off the page, and nothing about the result would say so.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYes
graphYes
columnsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full behavioral burden. It does disclose an important behavior: a grid too small is refused because it would omit a layer. However, it does not state whether the operation is destructive, whether it returns a success/error object, or what the resulting grid layout implies for existing layers. Partial but not complete.

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 succinct, with the primary action front-loaded and a relevant constraint in the second sentence. Every sentence contributes; there is no fluff. Slightly reduces score because it does not hint at parameter meaning, but the structure itself is clean.

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 three required parameters with zero schema documentation, and no output schema details provided to the agent, the description is insufficient. It does not explain how rows/columns map to the grid, what the 'graph' identifier refers to, or the tool's effect on existing layers. The single constraint is helpful but overall the agent lacks enough context to call this tool correctly.

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

Parameters1/5

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

The schema descriptions are absent (0% coverage), and the tool description provides no meaning for 'rows', 'columns', or 'graph'. An agent cannot infer likely data types (graph is presumably a reference, rows/columns positive integers), units, or acceptable ranges. This is a significant gap that prevents correct invocation without external knowledge.

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 (lay out) and the resource (a graph's layers) as a grid of panels. It distinguishes the tool from siblings that export, create, or set graph properties, though it does not explicitly name alternatives. The exclusion of the 'too small' case adds specificity, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus other graph manipulation tools like origin_plot, origin_layer_add, or origin_axis_set. The description does not mention common scenarios, prerequisites (e.g., graph exists), or exclusions. A single sentence about the refusal condition hints at a constraint but does not help an agent choose this tool over alternatives.

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

origin_legend_setA

Rebuild a layer's legend, and optionally place or hide it.

Origin generates its legend from the plots present at the moment it is refreshed rather than storing it, so a legend showing the wrong series is almost always one that has not been refreshed since the plots changed. Call this after adding plots.

position is one of top_left, top_right, bottom_left, bottom_right.

ParametersJSON Schema
NameRequiredDescriptionDefault
showNo
graphYes
layerNo
positionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/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 explains that the legend is generated from plots and that calling after plot changes refreshes it, which is useful behavioral context. However, it does not explicitly state that the rebuilt legend overwrites any existing legend, though this is implied by 'rebuild'.

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, comprising two sentences with no unnecessary fluff. It efficiently conveys the core action, the rationale, and the key parameter detail.

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

Completeness5/5

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

Given the tool's simplicity and the absence of an output schema, the description adequately covers what an agent needs to know: what it does, when to call it, and the meaning of the main parameter. There are no related legend tools among siblings, so no confusion arises.

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 provides no descriptions for parameters, and the description only explains the 'position' parameter's allowed values. The meanings of 'graph', 'layer', and 'show' are not explicitly described, though they may be inferred from typical Origin usage. This leaves some ambiguity for an agent.

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

Purpose5/5

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

Clearly states the tool's purpose: to rebuild a layer's legend, with optional placement or hiding. The description distinguishes it from siblings by focusing on legend management, which no other tool handles.

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

Usage Guidelines5/5

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

Explicitly advises calling this after adding plots, which is the primary use case. It also implies the legend is derived from current plots, giving a clear when-to-use signal, even though there is no alternative legend tool to contrast with.

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

origin_pingA

Check the bridge is reachable and report what is on the far end.

Answers even when originpro is broken, which is when it matters most.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations are absent, so the description carries the full burden. Where the description explains that the tool 'answers even when originpro is broken', a behavioral trait that is non-obvious from the name and critical for failure-recovery reasoning. The ping semantics also imply a non-destructive read, though the description does not state explicitly that it has a side effects (minor for a 0-param heartbeat 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?

Two sentences, no filler. The core operation is front-loaded in the first sentence, and the second sentence adds a high-value behavioral criterion (works when originpro is broken) that justifies the entire purpose. Nothing earned its place.

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 0-parameter tool with an output schema, the description is largely sufficient: it says what the tool does, what it reports, and when it works. The remaining gap is selection clarity — an agent could hesitate between origin_ping and origin_bridge_status because the description never distinguishes them or routes to one over the other.

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

Parameters4/5

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

The tool has zero parameters, so per the rubric the baseline is 4. The description needs no parameter-level detail; the far-end report is the only input/output relevant information, and the tool is invocable with no arguments.

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 gives a specific verb+resource ('Check the bridge is reachable') and states what the tool reports ('report what is on the far end'), making the plumbing immediate. It does not explicitly distinguish itself from the origin_bridge_status sibling, though 'Answers even when originpro is broken' hints at the differentiation without naming it.

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?

Usage context is only implied: the line 'which is when it matters most' signals that this tool is valuable during failure scenarios, so an agent can infer it is the right choice when Origin is broken. There is no explicit when-to-use or when-not-to-use guidance relative to origin_bridge_status or the other origin_* tools.

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

origin_plotA

Plot worksheet columns into a graph layer, and return the graph and layer.

Without graph this makes a new graph page. Give graph to add another panel to one that already exists -- that is how a multi-panel figure is built, one call per panel, then origin_layers_arrange.

plot_type is a name (line, scatter, column, bar, area, box, histogram, stack_column, ...) or any Origin plot-type id as a number, so an unusual chart is never blocked by the name list.

Columns are given as zero-based indexes or Origin short names. Several y columns go into the same layer, grouped unless group is false.

Use the returned graph and layer for everything afterwards. Origin chooses the name, and the new layer is not the active one, so neither can be assumed. plots_in_layer is read back from Origin rather than counted from the request.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
bookYes
graphNo
groupNo
sheetNoSheet1
plot_typeNoline

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Since no annotations exist, the description must carry full weight. It discloses important behavioral details: the new layer is not the active one (so graph and layer must be used), plots_in_layer is read back from Origin, plot_type accepts names or numeric IDs, and columns can be indexes or short names. This is thorough, though error conditions and side effects are not addressed, which is acceptable for a plotting 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 organized into clear paragraphs, each addressing a distinct aspect: core purpose, the graph parameter workflow, plot_type flexibility, column input format, and return-value usage. It is efficient for the amount of information conveyed, neither overly verbose nor cryptic.

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

Completeness4/5

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

Given the tool's complexity (7 parameters, 0% schema coverage), the description is quite complete. It explains the return values (graph and layer), when to use them, multi-panel construction, and parameter nuances. The only omissions are explicit details on 'book' and 'sheet' semantics, but these are inferable and the output schema likely covers return fields. Overall, the description equips an agent to call the tool correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must explain parameters. It covers x, y, graph, group, and plot_type in detail (e.g., columns as indexes or short names, grouping behavior, plot_type flexibility). However, 'book' and 'sheet' are not explicitly described; their meaning is only implied by context. This is a minor gap but overall the description adds significant semantic value beyond the bare schema.

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

Purpose5/5

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

The description states the core operation clearly: 'Plot worksheet columns into a graph layer, and return the graph and layer.' It uses a specific verb ('plot'), a resource ('worksheet columns'), and a target ('graph layer'). This is easily distinguished from siblings like origin_plot_option_set or origin_layer_add, which have different purposes.

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

Usage Guidelines4/5

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

The description explains how to use the tool for both new graphs and adding panels to existing ones, mentioning the multi-panel workflow with origin_layers_arrange. It clarifies the graph parameter behavior but does not explicitly contrast this tool with alternatives (e.g., when to use origin_plot vs. origin_layer_add). The usage context is strong, though explicit exclusions are absent.

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

origin_plot_option_getA

Read one LabTalk set option off a data plot.

option is a LabTalk option token such as -w (line width, in points x 500) or -pfp (bar fill pattern). Use origin_set_options to find one -- the names are not guessable, and an invented one would be accepted by Origin and do nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
plotNo
graphYes
layerNo
optionYes

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?

No annotations are provided, so the description must carry the full behavioral burden. It clearly states the operation is a read ('Read') and gives concrete examples of options and their semantics. It also warns about the risk of using invalid options. However, it doesn't describe potential side effects (none expected), error cases, or return format, but the output schema covers the return. Overall adequate.

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, front-loaded with the core purpose, then a crucial usage hint about option names and the companion tool. No fluff, highly efficient.

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

Completeness4/5

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

With no annotations, the description carries the full behavioral burden. It discloses that 'option' is a LabTalk token, gives examples, warns about invalid names, and directs to origin_set_options. It doesn't explain return format, but an output schema exists. The parameter semantics for graph/plot/layer are left implicit, though likely inferable from the context of Origin data plots. Overall quite complete but not exhaustive.

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 has no descriptions (coverage 0%), so the description must compensate. It explains the 'option' parameter well, giving examples and warning about guessabilityemanding reference to origin_set_options. However, it does not explain the semantics of 'graph', 'plot', and 'layer' parameters, leaving the agent to infer they refer to plot identification. Some compensation, but incomplete.

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 reads a LabTalk set option from a data plot, with a specific verb ('Read') and resource ('data plot'). It differentiates from sibling origin_plot_option_set by focusing on read versus set, and names the companion tool origin_set_options for discovering valid options. This makes the purpose unambiguous and distinct.

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 instructs to use origin_set_options to find option namesaine a non-obvious set, and warns that invented options are accepted but ineffective. This provides clear when-to-use and when-not-to-use guidance, effectively distinguishing this read tool from its set counterpart.

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

origin_plot_option_setA

Set one LabTalk set option on a data plot, and read it back.

The result's readback says whether Origin stored the value. Read readback_means before treating that as success: Origin stores options it does not recognise, so a matching read-back is necessary evidence, not sufficient. Render the graph if you need to know it changed.

Writing to a plot inside a group is refused, because Origin would draw the group's style regardless while the write read back as if it had worked.

ParametersJSON Schema
NameRequiredDescriptionDefault
plotNo
graphYes
layerNo
valueYes
optionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does this exceptionally well: it explains that readback reports whether Origin stored the value, warns that Origin stores unrecognized options so a matching readback is necessary but not sufficient evidence, tells the caller to render the graph to confirm visible changes, and discloses that group writes are refused because of misleading readbacks. This is far beyond generic 'sets a value' language.

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 front-loaded with the core action and then adds three dense, high-value caveats: readback semantics, readback_means caution, and group refusal. Every sentence earns its place; no filler or repetition. Despite three paragraphs, the total length is appropriate for the behavioral nuance it needs to convey.

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?

Even though an output schema exists and rich behavioral caveats are provided, the input side remains under-specified. With no parameter descriptions, no enums, and no examples, the description does not give an agent enough grounding to confidently construct valid calls. The behavioral warnings are excellent, but they do not compensate for the missing parameter semantics.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it does not explain the meaning or accepted formats of graph, layer, plot, option, or value. It references a 'LabTalk set option' and a 'plot inside a group,' but gives no examples or enumeration of valid option names, value ranges, or how to address plots in groups. The agent is left to guess the exact parameter values it should supply.

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

Purpose5/5

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

The description opens with a specific verb and object: 'Set one LabTalk `set` option on a data plot, and read it back.' This clearly identifies the tool as a setter for plot options and distinguishes it from the sibling getter origin_plot_option_get. It also communicates the unusual read-back behavior, so there is no confusion about what the tool accomplishes.

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

Usage Guidelines4/5

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

The description provides a clear raison d'être: set one plot option and read back the result. It also gives an explicit when-not condition: writing to a plot inside a group is refused. It does not name sibling alternatives directly, but the setter/getter pairing with origin_plot_option_get is strongly implied by the tool names and the action described.

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

origin_set_optionsA

Look up LabTalk set options by what they control.

Origin's option names are short and unguessable -- line width is -w, bar fill pattern is -pfp -- so guessing produces plausible names that Origin accepts and ignores. Search here instead.

Each entry's verified says whether this option has been exercised against a real Origin: null means documented but untested, which is most of them.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that this is a lookup operation (not a mutation), warns about the risk of guessing, and explains the `verified` field as indicating whether an option has been tested against a real Origin. This goes beyond a simple 'searches options' statement and sets accurate expectations about reliability. It doesn't contradict any annotations (since none exist).

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

Conciseness4/5

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

The description is concise and well-structured, with the purpose stated first, followed by contextual warnings and a useful note about the `verified` field. Every sentence contributes value; there is no filler. It could potentially add a line about parameter usage, but the current length is appropriate.

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

Completeness3/5

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

The tool has an output schema, so return values are presumably documented there. With only two optional parameters and no required ones, the missing parameter semantics are the main gap. The description covers purpose, usage context, and reliability, but leaves parameter details unexplained. For a lookup tool with this complexity, the description is moderately complete but not fully self-sufficient.

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

Parameters2/5

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

The schema has zero description coverage, so the description must compensate for the parameters. It does not explain `limit` or `search` at all. While the names are somewhat self-explanatory, the description doesn't specify how `search` matches (e.g., by control name, option value, or what the option controls). The description says 'look up ... by what they control,' implying search matches by the thing it controls, but this is not explicit. This is a significant gap given 0% schema coverage.

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

Purpose5/5

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

The description states exactly what the tool does: 'Look up LabTalk `set` options by what they control.' It names the resource (LabTalk set options) and the action (look up), and the added context about unguessable names clearly distinguishes this from sibling tools like origin_plot_option_get/set, which deal with plot options rather than general set options.

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

Usage Guidelines4/5

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

The description explicitly advises using this tool instead of guessing option names, which is practical usage guidance. It also explains the consequence of guessing (Origin accepts and ignores plausible names). It doesn't explicitly name alternative tools, but the sibling set includes plot option tools which are clearly different in scope. The guidance is clear and context-rich, though it could have been more explicit about 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_worksheet_infoA

Describe a worksheet -- size, column names, formats -- without reading it.

Omit both arguments for the active worksheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookNo
sheetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral burden. It usefully discloses that the tool does not read worksheet contents and returns descriptive metadata only. It stops short of stating behavior on missing worksheets or confirming the absence of 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?

Two sentences with no filler; the core purpose is front-loaded and the active-worksheet note is placed second. Every clause earns its place.

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?

The output schema covers return structure, so the description need not explain it. With only two optional parameters, the active-worksheet behavior is stated, and the metadata scope is explicit, making the definition complete for this simple 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?

The schema has no parameter descriptions, but the description adds key semantics: omitting both arguments targets the active worksheet. The titles 'Book' and 'Sheet' plus the tool's context make the remaining mapping reasonably clear.

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

Purpose5/5

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

The description states a clear verb and resource: 'Describe a worksheet' with concrete metadata delivered (size, column names, formats). The qualifier 'without reading it' distinguishes it from the sibling origin_worksheet_read, making its purpose unambiguous.

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

Usage Guidelines4/5

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

It gives a practical invocation rule: omit both arguments to target the active worksheet. It doesn't explicitly name alternatives or when-not-to-use conditions, but the 'without reading it' contrast implies the read sibling would be used when cell data is needed.

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

origin_worksheet_readA

Read worksheet columns as lists, with the format Origin holds them in.

A read that could not fit is refused rather than shortened, because a silently truncated answer looks exactly like a short worksheet. Use start_row and max_rows to take a window deliberately, and read rows_in_sheet and rows_after_window -- named separately because a single "rows available" count reads exactly like a short worksheet.

Date and time columns come back as Julian day numbers, not text. Converting them involves choices -- timezone, calendar, precision -- that belong to whoever knows what the data means.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookNo
sheetNo
columnsNo
max_rowsNo
start_rowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so exceptionally. It discloses that an unreadable portion causes refusal rather than silent truncation (because a truncated answer looks like a short worksheet), that row counts are returned separately to avoid ambiguity, and that dates come back as Julian day numbers. These are subtle, high-risk behaviors an agent must know to use the tool safely.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, then layers behavioral caveats in order of importance. Every sentence earns its place—the refusal rule, the window guidance, the row-count separation, and the Julian-date warning are all substantive. It is slightly longer than strictly necessary but has no waste.

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 5-parameter tool with no annotations and 0% schema description coverage, the description covers the non-obvious semantics thoroughly. An output schema exists, so return values do not need explanation. The only minor gap is explicit guidance on what 'book' and 'sheet' refer to, but those are reasonably inferable from the tool family.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It adds real meaning for start_row and max_rows by explaining the windowing idiom and the semantic consequences of the no-truncation rule. book, sheet, and columns are left to the schema, but they are self-explanatory enough that the marginal value of explaining them is low. Coverage of the riskiest parameters is good.

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

Purpose4/5

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

The description states a specific verb and resource ('Read worksheet columns as lists') and the native format Origin holds them in. This clearly distinguishes it from siblings like origin_worksheet_info (metadata) and origin_worksheet_write, though it does not explicitly name them.

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

Usage Guidelines4/5

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

The description gives explicit guidance on when to use start_row/max_rows to take a deliberate window, and advises reading rows_in_sheet and rows_after_window. It also warns about date/time columns coming back as Julian numbers and defers conversion choices. What it lacks is explicit exclusion of alternatives among siblings, but the usage direction is strong.

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

origin_worksheet_writeA

Write columns into a worksheet.

Each column is {"name": ..., "format": ..., "values": [...]}. The format is stated rather than inferred: double, int, text, mixed, date, time, complex. Guessing from the values is how columns get quietly corrupted -- whole numbers are not necessarily an integer column, and one empty cell can turn a numeric column into text.

Dates go in as Julian day numbers with format: "date".

ParametersJSON Schema
NameRequiredDescriptionDefault
bookNo
sheetNo
columnsYes
start_colNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and adds meaningful behavioral context: format is deliberately not inferred, guessing can quietly corrupt columns, and dates must be Julian day numbers. It does not state overwrite/append behavior, but the key data-integrity warning is valuable.

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

Conciseness5/5

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

The description is compact and front-loaded, with every sentence earning its place: the core write action, the column schema, the rationale for explicit formats, and the date encoding requirement. No filler or redundancy.

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

Completeness3/5

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

It covers the complex column format semantics and date behavior sufficiently, but it omits target-worksheet semantics (book/sheet) and start_col placement, and does not clarify whether writing replaces or appends columns. For a 4-parameter tool with no annotations, this is a minimum-viable description.

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 0%, so the description must compensate. It thoroughly explains the 'columns' element shape and valid format values, but says nothing about 'book', 'sheet', or 'start_col', leaving those parameters reliant on their names and defaults.

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

Purpose5/5

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

The description opens with a specific action and resource: 'Write columns into a worksheet.' It also provides concrete column structure and format strings, making the tool's role unmistakable and clearly distinct from worksheet read/info siblings.

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 when-to-use or when-not-to-use guidance is provided, and no sibling alternatives are named. The description implies writing use but does not distinguish it from origin_set_options or origin_worksheet_read for an agent deciding between tools.

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

Tool Schema Changelog

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

  1. 17 tool updatesv0.1.0
    • First observedorigin_axis_get
    • First observedorigin_axis_set
    • First observedorigin_bridge_status
    • First observedorigin_graph_export
    • First observedorigin_graph_info
    • First observedorigin_labtalk
    • First observedorigin_layer_add
    • First observedorigin_layers_arrange
    • First observedorigin_legend_set
    • First observedorigin_ping
    • First observedorigin_plot
    • First observedorigin_plot_option_get
    • First observedorigin_plot_option_set
    • First observedorigin_set_options
    • First observedorigin_worksheet_info
    • First observedorigin_worksheet_read
    • First observedorigin_worksheet_write

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation4/5

Most tools target a distinct resource (worksheet, axis, plot option, layer, legend) with clear boundaries, and the descriptions actively warn where confusion could arise (e.g., plot_option vs axis vs set_options). The only mild overlap is origin_ping vs origin_bridge_status, and origin_worksheet_info vs origin_worksheet_read, both of which are carefully delineated but require reading the details.

Naming Consistency3/5

The dominant pattern is origin_<noun>_<verb> (axis_get, layer_add, worksheet_read), but there are deviations: origin_set_options puts the verb first, origin_graph_info and origin_worksheet_info use 'info' where 'get' would match axis_get, and several tools (ping, labtalk, plot, bridge_status) are bare nouns. The get/set pairs are consistent where they exist, but the mixed conventions prevent a higher score.

Tool Count4/5

Seventeen tools is at the boundary where the set starts to feel heavy, but for a bridge to a full desktop application with worksheet, plotting, and styling concerns, each tool has a discernible role and the count is justified. The escape-hatch design (origin_labtalk) keeps the surface from being even larger.

Completeness4/5

The surface covers the full lifecycle from data reading/writing to plotting, styling, arranging, and exporting, with a clear read/modify/verify pattern throughout. The only notable gap is the lack of any delete/clear operation (no way to remove a plot, layer, or worksheet), though origin_labtalk serves as a viable fallback for these rarer operations.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers