{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T13:28:55.591Z","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp","markdownUrl":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp.md","server":{"slug":"org-opensysml-sysml-mcp","name":"OpenSysML MCP server","registryName":"org.opensysml/sysml-mcp","description":"SysML v2 and KerML for coding agents: workspace diagnostics and edits, execution, REPL sessions.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"openmbee-sysml-mcp","type":"npm","identifier":"@openmbee/sysml-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp","version":"0.12.1","transport":"stdio","scoredAt":"2026-11-06T05:58:23.320Z"},"score":{"total":77,"tier":"medium","status":"scored","weekDelta":6,"history":[{"date":"2026-11-06","total":77},{"date":"2026-11-05","total":77},{"date":"2026-11-04","total":71},{"date":"2026-11-03","total":71},{"date":"2026-11-02","total":71},{"date":"2026-11-01","total":71},{"date":"2026-10-31","total":71},{"date":"2026-10-30","total":71},{"date":"2026-10-29","total":71},{"date":"2026-10-28","total":71},{"date":"2026-10-27","total":71},{"date":"2026-10-26","total":71},{"date":"2026-10-25","total":71},{"date":"2026-10-24","total":56}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"pass","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","0 of 5 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"5","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":48,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (Apache-2.0).","Actively maintained (last published 0 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"Apache-2.0"}},{"code":"maintenance.recent","args":{"age_days":"0"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":81,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 22206 tokens (~115/item across 193 items; 83 tools + 110 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"115","items":"193","tools":"83","tokens":"22206","resources":"110"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":43,"verdict":"partial","reasons":["Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"13"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":81,"verdict":"partial","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","1 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"execute_action\" implies \"execute\" and declares readOnlyHint instead, contradicting what its own name says it does.","An AI judge read all 85 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"25","tool":"execute_action","verb":"execute","declared":"read_only","annotated":"1","destructive":"4"}},{"code":"toolsafety.manipulation_clean","args":{"units":"85","judged":"85"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"openmbee-sysml-mcp","type":"npm","identifier":"@openmbee/sysml-mcp","withdrawn":false,"score":77,"current":true,"url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp","markdownUrl":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@openmbee/sysml-mcp"},{"label":"Version","value":"0.12.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"advance","title":null,"description":"Advance the debuggers' simulation clock (%advance), running every state event, action token, change-condition poll and do behavior that comes due, in due order, and report what ran and where the debuggers stand. The clock is the session's: a debugged action and machine both move.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"},{"name":"time","type":"number","required":true,"description":"time units (seconds) to advance the debuggers' clock by, running every event, token and do behavior that comes due; 0 dispatches what is already due"}],"outputs":[{"name":"activeStates","type":"null|array","required":false,"description":null},{"name":"breakpoints","type":"null|array","required":false,"description":"action: the nodes breakpoints are set at"},{"name":"currentState","type":"string","required":false,"description":"state machine: the active state, or one per orthogonal region"},{"name":"ended","type":"boolean","required":true,"description":"completed or terminated"},{"name":"kind","type":"string","required":true,"description":"action or state for the executor described (with both debugged, the one still running, else the action); check when the behavior was checked over every schedule rather than stepped; empty when no deb…"},{"name":"lastEventAt","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":"the behavior as named"},{"name":"pausedAt","type":"string","required":false,"description":"action: the breakpoint the run last stopped at"},{"name":"performer","type":"string","required":false,"description":"the object performing it"},{"name":"qualified","type":"string","required":false,"description":"its qualified name"},{"name":"queuedEvents","type":"integer","required":false,"description":null},{"name":"results","type":"null|array","required":false,"description":"action: the values its features hold, outputs included"},{"name":"signalsInFlight","type":"null|array","required":false,"description":"signals sent and not yet dispatched to the machine"},{"name":"state","type":"string","required":false,"description":"the executor's state as the prompt prints it: Ready, Running, Waiting, Suspended, Completed or Terminated"},{"name":"stateData","type":"null|array","required":false,"description":null},{"name":"stateStack","type":"null|array","required":false,"description":"the active configuration, outermost first"},{"name":"suspendReason","type":"string","required":false,"description":"why the machine cannot progress"},{"name":"text","type":"string","required":true,"description":"what the prompt printed"},{"name":"time","type":"number","required":false,"description":"state machine: the clock"},{"name":"tokens","type":"null|array","required":false,"description":"action: the active tokens"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":125},{"name":"apply_edits","title":null,"description":"Apply source-preserving edits to a parsed model and return the edited notation (the ApplyEdits RPC): set a value, rename with every reference, add a member, import, documentation, comment, connection, transition, satisfy or metadata, delete, move. Edits are located from the parsed spans, so comments and layout outside them are kept, and the result is re-parsed and validated before it is answered; a refused batch answers `error` and `failure` naming why, and nothing is applied. Nothing is written to disk: the edited text comes back as `content` (one document) or `documents` for the agent to write. The result is the ApplyEditsResponse as protojson writes it.","inputs":[{"name":"acceptDocuments","type":"boolean","required":false,"description":"read the edited documents from the documents field, which a model of several documents needs; without it such a model is refused"},{"name":"document","type":"string","required":false,"description":"the document whose declarations the operations target, named as the parse named it; empty is the model's first document"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"operations","type":"null|array","required":false,"description":"edits to apply, all or none, each a protojson EditOperation with one arm: {\"setValue\":{\"target\":qualified name,\"value\":expression text}}, {\"rename\":{\"target\":..,\"newName\":..}}, {\"addMember\":{\"owner\":…"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":487},{"name":"apply_model_edit","title":null,"description":"Edit a model by operations on its elements rather than by text: setValue, rename, addMember, addConnection, addSequence (action-body items), delete, move, and the diagram-layout annotations setLayout, setRoute, setCanvas, setStyle, setNote, setPicture. Targets and owners are qualified names as render_view reports them in nodes[].fqn. Returns the text edits the operations amount to, per document, and the operations refused with why; writes the files only with apply=true.","inputs":[{"name":"apply","type":"boolean","required":false,"description":"write every affected file, all or none, each replaced atomically (its mode is kept, other inode metadata is not); false (the default) only returns the edits"},{"name":"operations","type":null,"required":true,"description":"the operations, applied in order against the document's current text"},{"name":"path","type":"string","required":true,"description":"the document the operations address, absolute or relative to the workspace root"}],"outputs":[{"name":"applied","type":"boolean","required":true,"description":"whether the edits were written to disk"},{"name":"changes","type":"null|array","required":true,"description":"the text edits the operations amount to, per document; empty when every operation was refused"},{"name":"refused","type":"null|array","required":false,"description":"operations not carried out, by index, with the failure code and message (ranges inside are LSP ranges, 0-based)"},{"name":"version","type":"integer","required":true,"description":"the version of the document the edits apply to"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":189},{"name":"check","title":null,"description":"Ask an SMT solver whether a constraint, requirement or satisfaction can be satisfied at all (%check, experimental), with a satisfying assignment when it can. Needs z3 or cvc5 installed; the status is unavailable otherwise.","inputs":[{"name":"name","type":"string","required":true,"description":"qualified name of the constraint, requirement, satisfaction, part or analysis case"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"reports","type":"null|array","required":true,"description":null},{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":87},{"name":"check_behavior","title":null,"description":"Search every schedule of an action or state machine (the CheckBehavior RPC, the REPL's %check-property/%check-diverge settings about %action/%state): a property false at a stable state, a deadlock, a failure or a feature whose final value the schedule decides is witnessed and replayed. `verdict` is holds, fails or undecided; `violations`, `divergences` and `finals` carry each witness as its replay schedule, draws and choices, and the witness file when asked for. With checkInput or checkAssume the symbolic engine answers with `claim`, the inputs it ranged over and its witnesses. Bounded by checkDepth, checkStates and checkTimeout. The result is the CheckBehaviorResponse as protojson writes it.","inputs":[{"name":"actionSymbolId","type":"string","required":false,"description":"qualified name of the action definition or usage to check; give this or stateMachineSymbolId"},{"name":"checkAssume","type":"null|array","required":false,"description":"constraints or requirements the symbolic engine assumes (-check-assume)"},{"name":"checkDepth","type":"integer","required":false,"description":"moves one schedule may make; 0 is the engine's default (-check-depth)"},{"name":"checkDiverge","type":"null|array","required":false,"description":"features whose final value the schedule may decide (-check-diverge); the action's own bare, a node's as node.pin, the performer's as this.<name>"},{"name":"checkInput","type":"null|array","required":false,"description":"inputs left free for the symbolic engine to range over (-check-input)"},{"name":"checkProperty","type":"null|array","required":false,"description":"constraints or requirements evaluated at every stable state; one false at a state is a violation (-check-property)"},{"name":"checkStates","type":"integer","required":false,"description":"distinct states the search may visit; 0 is the engine's default (-check-states)"},{"name":"checkTimeout","type":"number","required":false,"description":"seconds the search and each solver query may take; 0 is none (-check-timeout)"},{"name":"checkUnroll","type":"integer","required":false,"description":"loop iterations the symbolic engine unrolls; 0 is its default (-check-unroll)"},{"name":"checkWitness","type":"boolean","required":false,"description":"carry each violation's and divergent value's witness file in the answer, for a replay schedule to follow (-check-witness)"},{"name":"engine","type":"string","required":false,"description":"the engine asked: check (the default), smt, or one list_engines names"},{"name":"inputs","type":"object","required":false,"description":"input parameter name to value, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"performerSymbolId","type":"string","required":false,"description":"qualified name of a part/usage, or a path from one, whose object performs the behavior; empty performs it outside any object"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"stateMachineSymbolId","type":"string","required":false,"description":"qualified name of the state definition or usage to check; give this or actionSymbolId"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":682},{"name":"close_document","title":null,"description":"Release a document held open by open_document: the server goes back to the file on disk (or forgets the document when there is no file). Nothing is written.","inputs":[{"name":"path","type":"string","required":true,"description":"an open document, absolute or relative to the workspace root"}],"outputs":[{"name":"diagnostics","type":"null|array","required":true,"description":"the diagnostics of the text now held"},{"name":"open","type":"boolean","required":true,"description":"whether the server now holds an open buffer for the document"},{"name":"path","type":"string","required":true,"description":null},{"name":"version","type":"integer","required":true,"description":"the buffer's version, incremented by each update"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":60},{"name":"code_actions","title":null,"description":"List the quick fixes and refactorings available for a range of a document, each with the edits it would make. Nothing is applied; write the edits with your own file tools or use the rename/format/apply_model_edit tools with apply=true.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root"},{"name":"range","type":"null|object","required":false,"description":"the lines of interest (1-based); omitted, the whole document"}],"outputs":[{"name":"actions","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":98},{"name":"compare_results","title":null,"description":"Run every configuration a SysML v1 tool's results sidecar indexes against the migrated model (the CompareResults RPC, the CLI's -compare-results with -action, -runs, -seed, -draws, -clock-step and -observe): each on its target, for its recorded run count under its duration mode, or the runs and draws given, and table the tool's and OpenSysML's min, mean, p50, p90 and max of each observable with their relative difference. `configurations` carry each one's status (holds, fails, unresolved), its rows, the distributions compared, the errors and notes, and the lines the CLI prints. The result is the CompareResultsResponse as protojson writes it.","inputs":[{"name":"actions","type":"null|array","required":false,"description":"the configurations compared, by qualified or simple name (the CLI's -action); every indexed configuration when empty"},{"name":"clockStep","type":"null|number","required":false,"description":"the clock step replacing every configuration's, in seconds; 0 is a continuous clock (the CLI's -clock-step)"},{"name":"draws","type":"string","required":false,"description":"the draw policy replacing every configuration's durationSimulationMode: random, min, max or average (the CLI's -draws)"},{"name":"engine","type":"string","required":false,"description":"the engine selection, as list_engines names them"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"observe","type":"null|array","required":false,"description":"the stored observables compared, each with the feature of the run that answers it (the CLI's -observe)"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"results","type":"string","required":true,"description":"the results sidecar as JSON, as sysml -migration-results writes it"},{"name":"runs","type":"integer","required":false,"description":"the runs made of every configuration when positive (the CLI's -runs); else each configuration's own numberOfRuns, or one"},{"name":"seed","type":"null|integer","required":false,"description":"the seed the runs derive theirs from (the CLI's -seed); without one, runs that draw at random are refused unless draws fixes them"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":494},{"name":"completion","title":null,"description":"Propose completions at a position: keywords, names in scope and members of the type being accessed.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document"},{"name":"position","type":"object","required":true,"description":"the position (1-based line and character column)"}],"outputs":[{"name":"isIncomplete","type":"boolean","required":false,"description":null},{"name":"items","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":76},{"name":"configure","title":null,"description":"Ask an SMT solver which variants an element's conditions permit (%configure, experimental): a consistent selection, the check of the selections given, or every consistent selection up to a limit. A part or definition is configured over every assertion about its objects. Read-only: no variant is bound.","inputs":[{"name":"all","type":"boolean","required":false,"description":"enumerate every consistent selection instead of one. Not with selections"},{"name":"limit","type":"integer","required":false,"description":"with all: at most this many selections"},{"name":"name","type":"string","required":true,"description":"qualified name of the constraint, requirement, satisfaction, part or definition whose variations are configured"},{"name":"selections","type":"null|array","required":false,"description":"variants to fix, written variation=variant; the selection is checked and a conflict named. Not with all"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"reports","type":"null|array","required":true,"description":null},{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":166},{"name":"convert","title":null,"description":"Convert a SysML v2 model between the representations OpenSysML writes — textual notation, RDF Turtle, the API's JSON element form — (the Convert RPC, the CLI's -convert). Name the model by modelHash, paths or sources (the source the parse read is converted), or by filePath or inline content read afresh. Nothing is written to disk: the converted document comes back as `content` for the agent to write. A SysML v1 model is refused with INVALID_ARGUMENT: use migrate. The result is the ConvertResponse as protojson writes it.","inputs":[{"name":"compact","type":"boolean","required":false,"description":"for api-json from notation: write the compact document (api-json-compact/1) instead of the element array"},{"name":"content","type":"null|string","required":false,"description":"the document to convert, inline (an empty string is an empty document); fromFormat must then say what it is"},{"name":"documents","type":"null|array","required":false,"description":"for a parsed model, the documents whose elements are written, named as the parse named them; empty writes every document"},{"name":"filePath","type":"string","required":false,"description":"a file to convert, read afresh in the format its extension names (or fromFormat), absolute or relative to the workspace root; instead of modelHash, paths or sources"},{"name":"fromFormat","type":"string","required":false,"description":"sysml, kerml, text, ttl, turtle, rdf, api-json or json; empty infers from filePath's extension and is notation for a parsed model"},{"name":"idForm","type":"string","required":false,"description":"how derived element ids are spelled when notation is written as a graph (ttl or api-json): qualified (the default) or uuid"},{"name":"includeCheckDiagnostics","type":"boolean","required":false,"description":"notation sources: report the semantic check's diagnostics alongside the output, each with its severity and code as parse reports them; off, only syntax errors are reported"},{"name":"includeLibraryStubs","type":"boolean","required":false,"description":"for api-json: include ownerless standard-library stubs for legacy readers; off by default"},{"name":"keepDerived","type":"null|array","required":false,"description":"with omitDerived: the derived properties still written, as owner or qualifiedName"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"omitDerived","type":"boolean","required":false,"description":"with compact: leave out every derived property of the metamodel except keepDerived"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"toFormat","type":"string","required":true,"description":"format to write: sysml, kerml, text, ttl, turtle, rdf, api-json or json"},{"name":"tolerateSyntaxErrors","type":"boolean","required":false,"description":"notation to notation only: write the notation back out even when the parser could not read all of it, reporting syntax errors as diagnostics"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":620},{"name":"debug_breakpoints","title":null,"description":"Set breakpoints at nodes of the debugged action (%break), optionally clearing the earlier ones, and report the breakpoints it then has; with nothing to set, lists them. A node the action has none of fails, naming its nodes.","inputs":[{"name":"clear","type":"boolean","required":false,"description":"remove the breakpoints set before, before setting the new ones"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"},{"name":"set","type":"null|array","required":false,"description":"node names to break at; debug_continue then stops when a token reaches one"}],"outputs":[{"name":"activeStates","type":"null|array","required":false,"description":null},{"name":"breakpoints","type":"null|array","required":false,"description":"action: the nodes breakpoints are set at"},{"name":"currentState","type":"string","required":false,"description":"state machine: the active state, or one per orthogonal region"},{"name":"ended","type":"boolean","required":true,"description":"completed or terminated"},{"name":"kind","type":"string","required":true,"description":"action or state for the executor described (with both debugged, the one still running, else the action); check when the behavior was checked over every schedule rather than stepped; empty when no deb…"},{"name":"lastEventAt","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":"the behavior as named"},{"name":"pausedAt","type":"string","required":false,"description":"action: the breakpoint the run last stopped at"},{"name":"performer","type":"string","required":false,"description":"the object performing it"},{"name":"qualified","type":"string","required":false,"description":"its qualified name"},{"name":"queuedEvents","type":"integer","required":false,"description":null},{"name":"results","type":"null|array","required":false,"description":"action: the values its features hold, outputs included"},{"name":"signalsInFlight","type":"null|array","required":false,"description":"signals sent and not yet dispatched to the machine"},{"name":"state","type":"string","required":false,"description":"the executor's state as the prompt prints it: Ready, Running, Waiting, Suspended, Completed or Terminated"},{"name":"stateData","type":"null|array","required":false,"description":null},{"name":"stateStack","type":"null|array","required":false,"description":"the active configuration, outermost first"},{"name":"suspendReason","type":"string","required":false,"description":"why the machine cannot progress"},{"name":"text","type":"string","required":true,"description":"what the prompt printed"},{"name":"time","type":"number","required":false,"description":"state machine: the clock"},{"name":"tokens","type":"null|array","required":false,"description":"action: the active tokens"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":116},{"name":"debug_continue","title":null,"description":"Run the debugged action to completion, or to the first breakpoint a token reaches (%continue), and report its results.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"activeStates","type":"null|array","required":false,"description":null},{"name":"breakpoints","type":"null|array","required":false,"description":"action: the nodes breakpoints are set at"},{"name":"currentState","type":"string","required":false,"description":"state machine: the active state, or one per orthogonal region"},{"name":"ended","type":"boolean","required":true,"description":"completed or terminated"},{"name":"kind","type":"string","required":true,"description":"action or state for the executor described (with both debugged, the one still running, else the action); check when the behavior was checked over every schedule rather than stepped; empty when no deb…"},{"name":"lastEventAt","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":"the behavior as named"},{"name":"pausedAt","type":"string","required":false,"description":"action: the breakpoint the run last stopped at"},{"name":"performer","type":"string","required":false,"description":"the object performing it"},{"name":"qualified","type":"string","required":false,"description":"its qualified name"},{"name":"queuedEvents","type":"integer","required":false,"description":null},{"name":"results","type":"null|array","required":false,"description":"action: the values its features hold, outputs included"},{"name":"signalsInFlight","type":"null|array","required":false,"description":"signals sent and not yet dispatched to the machine"},{"name":"state","type":"string","required":false,"description":"the executor's state as the prompt prints it: Ready, Running, Waiting, Suspended, Completed or Terminated"},{"name":"stateData","type":"null|array","required":false,"description":null},{"name":"stateStack","type":"null|array","required":false,"description":"the active configuration, outermost first"},{"name":"suspendReason","type":"string","required":false,"description":"why the machine cannot progress"},{"name":"text","type":"string","required":true,"description":"what the prompt printed"},{"name":"time","type":"number","required":false,"description":"state machine: the clock"},{"name":"tokens","type":"null|array","required":false,"description":"action: the active tokens"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":47},{"name":"debug_current","title":null,"description":"Report where the debugging session stands without changing it: the action's execution state, tokens, breakpoints and feature values (%tokens), or the machine's current state, clock, event queue, signals in flight and state data (%current, %events).","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"activeStates","type":"null|array","required":false,"description":null},{"name":"breakpoints","type":"null|array","required":false,"description":"action: the nodes breakpoints are set at"},{"name":"currentState","type":"string","required":false,"description":"state machine: the active state, or one per orthogonal region"},{"name":"ended","type":"boolean","required":true,"description":"completed or terminated"},{"name":"kind","type":"string","required":true,"description":"action or state for the executor described (with both debugged, the one still running, else the action); check when the behavior was checked over every schedule rather than stepped; empty when no deb…"},{"name":"lastEventAt","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":"the behavior as named"},{"name":"pausedAt","type":"string","required":false,"description":"action: the breakpoint the run last stopped at"},{"name":"performer","type":"string","required":false,"description":"the object performing it"},{"name":"qualified","type":"string","required":false,"description":"its qualified name"},{"name":"queuedEvents","type":"integer","required":false,"description":null},{"name":"results","type":"null|array","required":false,"description":"action: the values its features hold, outputs included"},{"name":"signalsInFlight","type":"null|array","required":false,"description":"signals sent and not yet dispatched to the machine"},{"name":"state","type":"string","required":false,"description":"the executor's state as the prompt prints it: Ready, Running, Waiting, Suspended, Completed or Terminated"},{"name":"stateData","type":"null|array","required":false,"description":null},{"name":"stateStack","type":"null|array","required":false,"description":"the active configuration, outermost first"},{"name":"suspendReason","type":"string","required":false,"description":"why the machine cannot progress"},{"name":"text","type":"string","required":true,"description":"what the prompt printed"},{"name":"time","type":"number","required":false,"description":"state machine: the clock"},{"name":"tokens","type":"null|array","required":false,"description":"action: the active tokens"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":73},{"name":"debug_start","title":null,"description":"Start a debugging session on an action (%action) or a state machine (%state), performed by an object when one is named. The action is not stepped: debug_step advances one token step, debug_continue runs to completion or a breakpoint. A machine takes its entry; debug_step, advance and send drive it. Starting again replaces the session.","inputs":[{"name":"kind","type":"string","required":true,"description":"action, or state for a state machine"},{"name":"name","type":"string","required":true,"description":"qualified name of the action or machine; for state, also an object the session holds whose exhibited machine to attach to"},{"name":"object","type":"string","required":false,"description":"an object the session holds (name, #id or path) performing the behavior"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"activeStates","type":"null|array","required":false,"description":null},{"name":"breakpoints","type":"null|array","required":false,"description":"action: the nodes breakpoints are set at"},{"name":"currentState","type":"string","required":false,"description":"state machine: the active state, or one per orthogonal region"},{"name":"ended","type":"boolean","required":true,"description":"completed or terminated"},{"name":"kind","type":"string","required":true,"description":"action or state for the executor described (with both debugged, the one still running, else the action); check when the behavior was checked over every schedule rather than stepped; empty when no deb…"},{"name":"lastEventAt","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":"the behavior as named"},{"name":"pausedAt","type":"string","required":false,"description":"action: the breakpoint the run last stopped at"},{"name":"performer","type":"string","required":false,"description":"the object performing it"},{"name":"qualified","type":"string","required":false,"description":"its qualified name"},{"name":"queuedEvents","type":"integer","required":false,"description":null},{"name":"results","type":"null|array","required":false,"description":"action: the values its features hold, outputs included"},{"name":"signalsInFlight","type":"null|array","required":false,"description":"signals sent and not yet dispatched to the machine"},{"name":"state","type":"string","required":false,"description":"the executor's state as the prompt prints it: Ready, Running, Waiting, Suspended, Completed or Terminated"},{"name":"stateData","type":"null|array","required":false,"description":null},{"name":"stateStack","type":"null|array","required":false,"description":"the active configuration, outermost first"},{"name":"suspendReason","type":"string","required":false,"description":"why the machine cannot progress"},{"name":"text","type":"string","required":true,"description":"what the prompt printed"},{"name":"time","type":"number","required":false,"description":"state machine: the clock"},{"name":"tokens","type":"null|array","required":false,"description":"action: the active tokens"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":160},{"name":"debug_step","title":null,"description":"Advance the debugged action one token step, or the debugged state machine one step (%step): one event dispatched, one change event, one round of do actions. A token waiting only on the clock is not stepped; advance moves the clock.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"activeStates","type":"null|array","required":false,"description":null},{"name":"breakpoints","type":"null|array","required":false,"description":"action: the nodes breakpoints are set at"},{"name":"currentState","type":"string","required":false,"description":"state machine: the active state, or one per orthogonal region"},{"name":"ended","type":"boolean","required":true,"description":"completed or terminated"},{"name":"kind","type":"string","required":true,"description":"action or state for the executor described (with both debugged, the one still running, else the action); check when the behavior was checked over every schedule rather than stepped; empty when no deb…"},{"name":"lastEventAt","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":"the behavior as named"},{"name":"pausedAt","type":"string","required":false,"description":"action: the breakpoint the run last stopped at"},{"name":"performer","type":"string","required":false,"description":"the object performing it"},{"name":"qualified","type":"string","required":false,"description":"its qualified name"},{"name":"queuedEvents","type":"integer","required":false,"description":null},{"name":"results","type":"null|array","required":false,"description":"action: the values its features hold, outputs included"},{"name":"signalsInFlight","type":"null|array","required":false,"description":"signals sent and not yet dispatched to the machine"},{"name":"state","type":"string","required":false,"description":"the executor's state as the prompt prints it: Ready, Running, Waiting, Suspended, Completed or Terminated"},{"name":"stateData","type":"null|array","required":false,"description":null},{"name":"stateStack","type":"null|array","required":false,"description":"the active configuration, outermost first"},{"name":"suspendReason","type":"string","required":false,"description":"why the machine cannot progress"},{"name":"text","type":"string","required":true,"description":"what the prompt printed"},{"name":"time","type":"number","required":false,"description":"state machine: the clock"},{"name":"tokens","type":"null|array","required":false,"description":"action: the active tokens"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":73},{"name":"debug_stop","title":null,"description":"End the debugging session (%stop), letting go of its run; objects the session holds stay.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":42},{"name":"definition","title":null,"description":"Find where the name at a position is declared. Standard library declarations are reported as sysml://stdlib/<file> resources.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document"},{"name":"position","type":"object","required":true,"description":"the position (1-based line and character column)"}],"outputs":[{"name":"locations","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":80},{"name":"diagnostics","title":null,"description":"Report every diagnostic of a parsed model (the GetDiagnostics RPC), as `sysml -validate` does: each with its severity, code, message and position. Parse with `strictConformance` for the strict mode of `sysml -validate -strict`; `disableLint` and `enableLint` select the lints as `sysml -disable-lint`/`-enable-lint` do. The result is the DiagnosticsResponse as protojson writes it.","inputs":[{"name":"disableLint","type":"null|array","required":false,"description":"lints left out of the diagnostics, by code (sysml -disable-lint): undeclared-signal, port-type-mismatch, deferred-keeper-unmarked or rounded-real-literal"},{"name":"enableLint","type":"null|array","required":false,"description":"opt-in lints kept in the diagnostics, by code (sysml -enable-lint): rounded-real-literal; off unless named, disableLint wins"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":293},{"name":"document_symbols","title":null,"description":"Outline a document: the elements it declares, nested as they are owned, with their kinds and ranges.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document"}],"outputs":[{"name":"symbols","type":null,"required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":61},{"name":"documents","title":null,"description":"List the document definitions (doc def) declared across the workspace, which render_document renders to Markdown.","inputs":[],"outputs":[{"name":"documents","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":27},{"name":"evaluate","title":null,"description":"Evaluate a SysML expression against a parsed model (the Evaluate RPC, the REPL's %eval): arithmetic, feature reads, quantities with units, collection operators. The result is the EvaluateResponse as protojson writes it: `result` is a Value (64-bit integers are JSON strings, as the proto3 JSON mapping writes them), `error` is set when the expression could not be evaluated. The text spells the value as the REPL prints it.","inputs":[{"name":"contextSymbolId","type":"string","required":false,"description":"qualified name of the namespace the expression's names resolve in; empty is the model root"},{"name":"expression","type":"string","required":true,"description":"the SysML expression, as 2 + 2 or Demo::sedan.mass"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subjectSymbolId","type":"string","required":false,"description":"qualified name of a part/usage to instantiate and evaluate against, so a feature reads that object's value rather than its declared default"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":285},{"name":"evaluate_calc","title":null,"description":"Invoke a calculation (the EvaluateCalc RPC, the REPL's %calc): a calc definition with positional arguments answers its `result`; a calc usage named with no arguments binds its inputs from its own members and answers every output feature in `outputs`. The result is the EvaluateCalcResponse as protojson writes it.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"positional arguments, each a protojson Value; a calc usage given none binds its inputs from its own members and answers every output. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":t…"},{"name":"engine","type":"string","required":false,"description":"the analysis engine asked; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"symbolId","type":"string","required":true,"description":"qualified name of the calc definition or usage"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":293},{"name":"execute_action","title":null,"description":"Run an action definition or usage to completion and report its output parameters (the ExecuteAction RPC, the REPL's %run). Inputs are bound by parameter name. Under an explore schedule every linearization the model admits is run and the answer is the set of distinct `outcomes` with how the exploration ended, instead of one run's outputs. The run is bounded by the service's OPENSYSML_MAX_* budgets; a budget hit is reported in `error`. `advance`, `seed`, `draws` and `clockStep` are the run options of `sysml -advance`, `-seed`, `-draws` and `-clock-step`. With `trace` the answer also carries every record the run made (token steps, waits, accepts, decisions, assignments, completion), up to a failure; `events` are posted to the performer in order, each once every token waits. The result is the ExecuteActionResponse as protojson writes it.","inputs":[{"name":"actionSymbolId","type":"string","required":true,"description":"qualified name of the action definition or usage to run"},{"name":"advance","type":"null|number","required":false,"description":"simulated time in seconds to run for (sysml -advance): the behavior is started and its clock moved by this much; an action not completed by then reports that in error. Unset runs to completion"},{"name":"clockStep","type":"number","required":false,"description":"the step in seconds the run's clock ticks by (sysml -clock-step); 0 is a continuous clock"},{"name":"draws","type":"string","required":false,"description":"how the run resolves RandomFunctions draws (sysml -draws): random (default, from seed), min, max or average"},{"name":"events","type":"null|array","required":false,"description":"signals or items to post to the performer in order, each once every token of the run waits (the REPL's %send); needs performerSymbolId"},{"name":"inputs","type":"object","required":false,"description":"input parameter name to value; each value is a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0,\"unit\":\"m\"…"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"performerSymbolId","type":"string","required":false,"description":"qualified name of a part/usage, or a path from one as Mission::mission.vehicle, whose object the action is performed on; empty performs it outside any object"},{"name":"schedule","type":"string","required":false,"description":"scheduling policy for choice points: declared, reverse (the default), seed:<n>, or explore[:runs=<n>,depth=<d>] which runs every linearization and answers with outcomes"},{"name":"seed","type":"null|integer","required":false,"description":"seed the model's own draws (weighted decisions, random functions) are taken from (sysml -seed); the same seed draws the same run"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"trace","type":"boolean","required":false,"description":"also answer the run's typed trace (token steps, waits, accepts, decisions, assignments, completion), up to a failure; unavailable under explore"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":716},{"name":"execute_state","title":null,"description":"Run a state machine over a sequence of events and report the states visited, the final context and the simulation clock (the ExecuteState RPC, the REPL's %run on a state). With trace the answer also carries every record the run made (entry, exit, transition, accept, send, choice), up to a failure. Under an explore schedule every linearization is run and the answer is the set of distinct `outcomes`. With `advance` the events are sent and the clock then moved by that much, as `sysml -state X -advance T` does; without it the machine runs to quiescence. The run is bounded by the service's OPENSYSML_MAX_* budgets. The result is the ExecuteStateResponse as protojson writes it.","inputs":[{"name":"advance","type":"null|number","required":false,"description":"simulated time in seconds to run for (sysml -advance): the behavior is started and its clock moved by this much; an action not completed by then reports that in error. Unset runs to completion"},{"name":"clockStep","type":"number","required":false,"description":"the step in seconds the run's clock ticks by (sysml -clock-step); 0 is a continuous clock"},{"name":"draws","type":"string","required":false,"description":"how the run resolves RandomFunctions draws (sysml -draws): random (default, from seed), min, max or average"},{"name":"events","type":"null|array","required":false,"description":"event names to send, in order"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"performerSymbolId","type":"string","required":false,"description":"qualified name of a part/usage, or a path from one, whose object exhibits the machine; empty runs it outside any object"},{"name":"schedule","type":"string","required":false,"description":"scheduling policy for choice points: declared, reverse (the default), seed:<n>, or explore[:runs=<n>,depth=<d>]"},{"name":"seed","type":"null|integer","required":false,"description":"seed the model's own draws (weighted decisions, random functions) are taken from (sysml -seed); the same seed draws the same run"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"stateMachineSymbolId","type":"string","required":true,"description":"qualified name of the state definition or usage to run"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"trace","type":"boolean","required":false,"description":"also answer the run's typed trace (entries, exits, transitions, accepts), up to a failure; unavailable under explore"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":555},{"name":"explain","title":null,"description":"Ask an SMT solver which conditions of an unsatisfiable element conflict (%explain, experimental): a minimal set of conditions, each with the element declaring it and its location.","inputs":[{"name":"name","type":"string","required":true,"description":"qualified name of the constraint, requirement, satisfaction, part or analysis case"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"reports","type":"null|array","required":true,"description":null},{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":78},{"name":"explain_diagnostic","title":null,"description":"Explain a diagnostic code (as the CLI's -explain does): what it means, how to resolve it and the specification clause or validation constraint behind it. Every diagnostic the `parse`, `diagnostics` and `workspace_diagnostics` tools report carries one of these codes. With no code, list every code with its one-line summary.","inputs":[{"name":"code","type":"string","required":false,"description":"the diagnostic code, as a diagnostic's code field or a text line's error[code] carries it; empty lists every code with its one-line summary"}],"outputs":[{"name":"code","type":"string","required":true,"description":"the stable code"},{"name":"codes","type":"null|array","required":false,"description":"with no code asked for, every code with its one-line summary"},{"name":"meaning","type":"string","required":true,"description":"what the diagnostic means and how to resolve it"},{"name":"rule","type":"string","required":false,"description":"for a member of a code family, the rule the member names"},{"name":"severity","type":"string","required":true,"description":"error, warning or info"},{"name":"spec","type":"string","required":false,"description":"the specification clause or validation constraint behind the rule"},{"name":"summary","type":"string","required":true,"description":"one-line summary"},{"name":"tier","type":"string","required":true,"description":"the validation tier that emits it"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":116},{"name":"export_graphs","title":null,"description":"Export the lowered graph of an action or state machine — the subject's and every behavior it performs — as the canonical graphs:<version> JSON external analysis engines read (the ExportGraphs RPC). The result is the ExportGraphsResponse as protojson writes it, the JSON in `content`; the text names the subject and version on its first line and carries the JSON after it.","inputs":[{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subject","type":"string","required":true,"description":"qualified name of an action or state machine, definition or usage"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":204},{"name":"features","title":null,"description":"Show an object's feature values and what its behaviors are doing (%features): the values its attributes hold, the objects its parts and ports hold, its connectors, and the state of each machine it exhibits and action it performs. Objects come from repl_command `%instantiate <name>` or from runs.","inputs":[{"name":"all","type":"boolean","required":false,"description":"expand every nested object; overrides depth"},{"name":"depth","type":"null|integer","required":false,"description":"expand nested objects to this depth without a size bound; omit for the prompt's bounded listing"},{"name":"object","type":"string","required":true,"description":"an object the session holds: its name, #id, or a path such as car.fl or #1.wheels[2]"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"graph","type":null,"required":false,"description":"the object and everything reachable from it as the runtime API's Instantiate writes it (opensysml.v1 JSON); absent when the build does not link the graph writer"},{"name":"text","type":"string","required":true,"description":"the listing as %features prints it: each feature's value and what the object's behaviors are doing"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":154},{"name":"format","title":null,"description":"Format a SysML v2 / KerML document, or only the lines of a range, in the canonical style. Returns the edits and the resulting text; writes the file only with apply=true. A document that does not parse is left unchanged.","inputs":[{"name":"apply","type":"boolean","required":false,"description":"write the formatted text to the file, replacing it atomically (its mode is kept, other inode metadata is not); false (the default) only returns the edits"},{"name":"path","type":"string","required":true,"description":"the document to format, absolute or relative to the workspace root"},{"name":"range","type":"null|object","required":false,"description":"format only the lines this range touches; omitted, the whole document"}],"outputs":[{"name":"applied","type":"boolean","required":true,"description":"whether the text was written to disk"},{"name":"edits","type":"null|array","required":true,"description":"the edits that format the document; empty when it is already formatted"},{"name":"path","type":"string","required":true,"description":null},{"name":"text","type":"string","required":true,"description":"the document's text with the edits applied"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":138},{"name":"hover","title":null,"description":"Explain the element at a position: its kind, qualified name, type, value and documentation, as Markdown.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document"},{"name":"position","type":"object","required":true,"description":"the position (1-based line and character column)"}],"outputs":[{"name":"markdown","type":"string","required":true,"description":"the hover text, Markdown; empty when nothing is at the position"},{"name":"range","type":"null|object","required":false,"description":"the span the hover applies to"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":77},{"name":"import_data","title":null,"description":"Set the feature values a CSV, TSV, JSON or JSON Lines file assigns, one row per element (the ImportData RPC, the CLI's -import with -import-as, -import-map, -import-format and -import-dry-run): a feature the element declares has its value set, one it inherits is redefined in the element's body with the value, as one edit per file; a value the model refuses leaves every row unapplied and answers `error`. `files` carry each assignment with the element, feature, value and the inherited feature it redefines; the edited text comes back as `content` (one document) or `documents` with the `modelHash` of the imported model, nothing is written to disk. A dry run answers the assignments alone. The result is the ImportDataResponse as protojson writes it.","inputs":[{"name":"acceptDocuments","type":"boolean","required":false,"description":"accept every edited document in documents when the model has several"},{"name":"importAs","type":"string","required":false,"description":"what each row is made into (the CLI's -import-as): values, the default, sets the features of the element the row names"},{"name":"importDryRun","type":"boolean","required":false,"description":"report the values the imports would set, changing nothing (the CLI's -import-dry-run)"},{"name":"imports","type":"null|array","required":true,"description":"the data files, applied in order as one edit each"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":384},{"name":"import_diagram","title":null,"description":"Import a draw.io (diagrams.net) file that render_view wrote with form drawio and a user edited in draw.io: what moved, resized, folded, re-routed or recoloured, the page size, a note's text and a picture's file become DiagramLayout annotations (Layout, Route, Style, Canvas, Note, Picture) in the view's body, and a name retyped in a node, port or edge label becomes a rename of the element, declaration and references alike, applied as apply_model_edit applies its operations. Cells the rendering lacks, cells naming no element, deleted cells, a label edited beyond its name, an invalid or taken name, an emptied note and a picture source no file under the view's directory names are reported, never created, deleted or guessed. Answers the planned edits and text changes; writes the files only with apply=true.","inputs":[{"name":"apply","type":"boolean","required":false,"description":"write the edits to disk; omitted, a dry run answering the edits and the text changes they amount to"},{"name":"content","type":"string","required":false,"description":"the draw.io file's text, as render_view form drawio wrote it and draw.io saved it, compressed or not; alternative to file"},{"name":"file","type":"string","required":false,"description":"the draw.io file to import, absolute or relative to the workspace root; alternative to content"},{"name":"inline","type":"boolean","required":false,"description":"write the annotations beside the elements rather than in the view's body"},{"name":"path","type":"string","required":true,"description":"the document declaring the view, absolute or relative to the workspace root"},{"name":"view","type":"string","required":false,"description":"the view to import when the file has several pages; omitted, the one page's view"}],"outputs":[{"name":"applied","type":"boolean","required":true,"description":"whether the edits were written to disk"},{"name":"changes","type":"null|array","required":true,"description":"the text edits, per document"},{"name":"deleted","type":"null|array","required":false,"description":"elements whose cells the file lost; nothing is deleted for them"},{"name":"edits","type":"null|array","required":true,"description":"the DiagramLayout annotations the import plans, each from one cell"},{"name":"notices","type":"null|array","required":false,"description":"changes the file shows that no annotation carries yet"},{"name":"refused","type":"null|array","required":false,"description":"the planned edit the model editor refused, with why"},{"name":"unknown","type":"null|array","required":false,"description":"cells naming no element; nothing is created for them"},{"name":"unmatched","type":"null|array","required":false,"description":"elements the file names that the rendering lacks; their cells are not imported"},{"name":"view","type":"string","required":true,"description":"the view the file draws"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":339},{"name":"inlay_hints","title":null,"description":"List the inferred types and values the editor would show inline for the features of a document or range.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root"},{"name":"range","type":"null|object","required":false,"description":"the lines of interest (1-based); omitted, the whole document"}],"outputs":[{"name":"hints","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":69},{"name":"instances","title":null,"description":"List the objects a session holds (%instances): each with its id, type and lifetime, the ones a later instantiation displaced included.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"instances","type":"null|array","required":true,"description":null},{"name":"text","type":"string","required":true,"description":"what %instances printed"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":49},{"name":"instantiate","title":null,"description":"Build an object of a part definition or usage and report its feature values (the Instantiate RPC, the REPL's %instantiate): every attribute's value or default, nested parts as instance ids, with every reachable instance in `instances`. The service keeps the object for the model: run_document_query on the same modelHash can bind it. The result is the InstantiateResponse as protojson writes it.","inputs":[{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"symbolId","type":"string","required":true,"description":"qualified name of the part definition or usage to instantiate"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":206},{"name":"list_engines","title":null,"description":"List the analysis engines this build registers (the ListEngines RPC, as the CLI's -engines does): each with the questions it answers (evaluate, outcomes, holds, sensitive, satisfiable, sweep, compute), the strongest evidence it can produce, the bounds it takes, and whether it can run here. The names are what the verification tools' `engine` argument takes; empty there means auto. With `probe` each external engine is started once and checked against its manifest, as `sysml -engines -probe` does. The result is the ListEnginesResponse as protojson writes it.","inputs":[{"name":"probe","type":"boolean","required":false,"description":"start each external engine's process once and check its handshake against its manifest, reporting the outcome as its status (sysml -engines -probe); false starts nothing"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":174},{"name":"migrate","title":null,"description":"Migrate a SysML v1 model — UML XMI with the SysML profile, an Eclipse UML2 .uml file or a Cameo/MagicDraw .mdzip archive — to SysML v2 in one of the representations convert writes (the Migrate RPC, the CLI's -migrate). Migration is not lossless: every v1 element is mapped, approximated, left unmapped or skipped, and `report` accounts for each. Nothing is written to disk: the migrated model comes back as `content`, with any image files it refers to in `files`. The result is the MigrateResponse as protojson writes it.","inputs":[{"name":"content","type":"null|string","required":false,"description":"the v1 document inline, base64-encoded (an .mdzip archive is binary); fromFormat must then say what it is"},{"name":"filePath","type":"string","required":false,"description":"the v1 model file to migrate (.xmi, .uml or .mdzip), absolute or relative to the workspace root"},{"name":"fromFormat","type":"string","required":false,"description":"xmi (UML XMI 2.5.1 with the SysML profile), uml (Eclipse UML2) or mdzip (Cameo/MagicDraw); empty infers from filePath's extension"},{"name":"imageBaseUrl","type":"string","required":false,"description":"absolute http(s) URL a server-relative image reference in a v1 comment is resolved against"},{"name":"layoutContent","type":"string","required":false,"description":"the MTIP export inline, instead of layoutPath"},{"name":"layoutPath","type":"string","required":false,"description":"an MTIP export of the model's diagrams (Model_mtip.xml) laying the migrated views out, absolute or relative to the workspace root"},{"name":"report","type":"boolean","required":false,"description":"carry every element's verdict (mapped, approximated, unmapped, skipped) and the report text; the summary and counts come regardless"},{"name":"results","type":"boolean","required":false,"description":"carry the result snapshots the v1 tool stored with the model, as sysml -compare-results reads them"},{"name":"strict","type":"boolean","required":false,"description":"write only notation a pinned SysML v2 production admits; a construct whose only v2 form is an OpenSysML extension is reported unmapped instead"},{"name":"toFormat","type":"string","required":true,"description":"format to write: sysml, kerml, text, ttl, turtle, rdf, api-json or json"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":470},{"name":"open_document","title":null,"description":"Hold a document open with the given text, as an editor buffer the server analyzes instead of the file on disk, so text can be checked (diagnostics, hover, render) before it is written. Nothing is written to disk; close_document reverts to the file. format, rename and apply_model_edit with apply=true write the buffer, unless the file changed on disk since it was opened. Returns the diagnostics of the text.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; it need not exist on disk yet"},{"name":"text","type":"string","required":true,"description":"the full text to hold as the document's content"}],"outputs":[{"name":"diagnostics","type":"null|array","required":true,"description":"the diagnostics of the text now held"},{"name":"open","type":"boolean","required":true,"description":"whether the server now holds an open buffer for the document"},{"name":"path","type":"string","required":true,"description":null},{"name":"version","type":"integer","required":true,"description":"the buffer's version, incremented by each update"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":137},{"name":"optimize","title":null,"description":"Ask an SMT solver for the best values an analysis case's objectives admit (%optimize, experimental), each objective improved as its trade-study definition says, within the case's conditions.","inputs":[{"name":"name","type":"string","required":true,"description":"qualified name of the constraint, requirement, satisfaction, part or analysis case"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"reports","type":"null|array","required":true,"description":null},{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":79},{"name":"parse","title":null,"description":"Parse SysML v2 / KerML documents as one model and return its modelHash, the root namespace of each document and every diagnostic (the ParseSources RPC). Parsing is content-addressed: the same documents give the same modelHash, and the hash is what every other runtime tool takes as modelHash, so parse once and pass the hash, or give those tools the same paths/sources and they parse implicitly. A model is only readable when no diagnostic has severity error. The result is the ParseSourcesResponse as protojson writes it; the text lists each root and the diagnostics as the CLI prints them.","inputs":[{"name":"baseModelHash","type":"string","required":false,"description":"the modelHash of an earlier parse of these documents; the answer's affected then lists the documents whose results may differ from it"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root; a name declared in one resolves in the others"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":249},{"name":"query","title":null,"description":"Select elements of a parsed model with a SysML v2 API & Services Query — scope, select, where, orderBy — or OSLC query text (the Query RPC). Each matched element answers its qualified name, metamodel type and the properties select asked for. A query the service cannot evaluate fails with INVALID_ARGUMENT rather than answering empty. The result is the QueryResponse as protojson writes it.","inputs":[{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"oslcQuery","type":"string","required":false,"description":"OSLC Query 3.0 parameter text, instead of query"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"query","type":"object","required":false,"description":"the standard's Query as protojson writes it: {\"scope\":[qualified names],\"select\":[properties],\"where\":{\"primitive\":{\"property\":\"@type\",\"operator\":\"PRIMITIVE_OPERATOR_EQUAL\",\"value\":[\"PartUsage\"]}},\"o…"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":351},{"name":"record_run","title":null,"description":"Run an analysis case — once, over the rows of a sweep (`ranges`), or as a Monte Carlo sample (`runs`) — and record the runs into the model as AnalysisRecords declarations (the RecordRun RPC, the CLI's -record-run/-record-into, the REPL's %record). `run`, `sweep` or `sample` is the runs' own report; `package`, `definition` and `records` name what the model gained and `source` is the declarations generated; `documents` (and `content` for a single document) is the notation of the document the records merged into, or the records as a document of their own, and `modelHash` names the recorded model, cached for the next request. A recording that would error or drop a declaration leaves the model unchanged and is the `error`. The result is the RecordRunResponse as protojson writes it.","inputs":[{"name":"acceptDocuments","type":"boolean","required":false,"description":"read the recorded notation from documents rather than content; required for a model of several documents"},{"name":"analysisSymbolId","type":"string","required":true,"description":"qualified name of the analysis case definition or usage to run and record"},{"name":"arguments","type":"null|array","required":false,"description":"positional values for the case's in parameters, each a protojson Value"},{"name":"engine","type":"string","required":false,"description":"the analysis engine asked, as list_engines names them; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"namedArguments","type":"object","required":false,"description":"values for the case's in parameters by name, each a protojson Value"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"ranges","type":"null|array","required":false,"description":"ranges of the case's parameters to run it over as run_sweep does, recording each completed row; each a protojson SweepRange"},{"name":"recordInto","type":"string","required":false,"description":"package the records go into (-record-into); empty is a Records package beside the package enclosing the case's own"},{"name":"runs","type":"integer","required":false,"description":"run the Simulation::MonteCarlo case this many times as run_runs does and record each completed run and the sample's conclusion (-runs)"},{"name":"seed","type":"null|integer","required":false,"description":"seed of the sample's draws; required with runs"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subjectSymbolId","type":"string","required":false,"description":"qualified name of a part/usage to instantiate as the subject, or a path from one to a nested object"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":561},{"name":"references","title":null,"description":"Find every place in the workspace that refers to the element at a position.","inputs":[{"name":"includeDeclaration","type":"boolean","required":false,"description":"also list the declaration itself"},{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document"},{"name":"position","type":"object","required":true,"description":"the position (1-based line and character column)"}],"outputs":[{"name":"locations","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":83},{"name":"rename","title":null,"description":"Rename the element declared or referenced at a position, everywhere in the workspace. Returns the edits per document; writes the files only with apply=true.","inputs":[{"name":"apply","type":"boolean","required":false,"description":"write every affected file, all or none, each replaced atomically (its mode is kept, other inode metadata is not); false (the default) only returns the edits"},{"name":"newName","type":"string","required":true,"description":"the new name"},{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root"},{"name":"position","type":"object","required":true,"description":"a position on the name to rename (1-based line and column)"}],"outputs":[{"name":"applied","type":"boolean","required":true,"description":"whether the edits were written to disk"},{"name":"changes","type":"null|array","required":true,"description":"the edits, per document"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":125},{"name":"render_document","title":null,"description":"Render a document definition (doc def) to Markdown, its queries evaluated over the workspace and its diagrams embedded.","inputs":[{"name":"diagramForm","type":"string","required":false,"description":"the notation of every graph-shaped diagram block: mermaid, dot, plantuml or d2; omitted, chosen per diagram as the CLI chooses it"},{"name":"linkTemplate","type":"string","required":false,"description":"a template for source links on elements, with {file}, {line}, {col}, {qname} and {id} placeholders"},{"name":"name","type":"string","required":true,"description":"the qualified name of a document definition (doc def), as documents lists"},{"name":"show","type":"null|array","required":false,"description":"optional notation elements every diagram draws besides those its view and diagram block show: parameter-symbols, port-symbols, compartments, edge-labels, keywords, multiplicities, typings, qualifiers…"}],"outputs":[{"name":"markdown","type":"string","required":true,"description":null},{"name":"name","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":173},{"name":"render_model_document","title":null,"description":"Render a named document of a model given by modelHash, paths or sources (the workspace group's render_document renders by name over the root) — a part def specializing DocumentQueries::Document — to Markdown, HTML or AsciiDoc (the RenderDocument RPC, the CLI's -render-document), byte for byte what the CLI writes. The text is the rendered document; the result is the RenderDocumentResponse as protojson writes it.","inputs":[{"name":"documentId","type":"string","required":true,"description":"qualified name of the document, a part def specializing DocumentQueries::Document"},{"name":"form","type":"string","required":false,"description":"markdown (the default), html or asciidoc"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":236},{"name":"render_model_view","title":null,"description":"Render a declared view or a targeted pseudo-view of a model given by modelHash, paths or sources as diagram data (the RenderView RPC; the workspace group's render_view renders by name over the root): nodes flattened parents first, edges with their ports, table columns and rows, canvas, notes and notices. The result is the RenderViewResponse as protojson writes it; the text lists the nodes and edges.","inputs":[{"name":"compartments","type":"string","required":false,"description":"how a tree rendering folds a node's owned members into compartment rows of its parent: positioned (the default), most or ports, as sysml -render-compartments takes them"},{"name":"depth","type":"integer","required":false,"description":"how many levels of nested elements to draw below each exposed element, overriding the view's own depth; 0 or absent draws every level"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"ports","type":"string","required":false,"description":"minimal (the default) or full: how many of a part's ports are drawn"},{"name":"show","type":"null|array","required":false,"description":"optional notation elements to draw besides those the view's rendering shows, as sysml -render-show takes them: parameter-symbols, port-symbols, compartments, edge-labels, keywords, multiplicities, ty…"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"view","type":"string","required":true,"description":"a qualified view name, or a #<kind>:<qualified name> pseudo-view targeting an element (#interconnection:Demo::Vehicle, #tree:Demo, #state:Demo::Lamp, #action:Demo::Descend, #sequence:..., #case:...,…"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":421},{"name":"render_run","title":null,"description":"Render the run a session recorded as a state timeline or a message sequence (%render-run), in a text, diagram or SVG form. Recording must be on before the run: repl_command `%trace on`.","inputs":[{"name":"form","type":"string","required":false,"description":"text (default), mermaid, plantuml, svg (a self-contained SVG drawing) or svg-animated (the SVG replaying the run with SMIL)"},{"name":"kind","type":"string","required":true,"description":"timeline (state occupancy per object machine over clock time) or sequence (the messages sent)"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"form","type":"string","required":true,"description":null},{"name":"kind","type":"string","required":true,"description":null},{"name":"rendering","type":null,"required":true,"description":"the rendering as data: lanes with their state spans, transitions and marks for a timeline; nodes and edges for a sequence"},{"name":"text","type":"string","required":true,"description":"the rendering in the form asked for"},{"name":"until","type":"number","required":true,"description":"the clock instant the rendering runs through"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":127},{"name":"render_view","title":null,"description":"Render a diagram or table of a document: a declared view or a pseudo-view, as Mermaid, Graphviz dot, PlantUML, D2, draw.io (diagrams.net XML), text, Markdown, CSV or TSV. The result also lists the nodes and edges drawn with their qualified names (for apply_model_edit) and their declaration ranges in LSP form (0-based).","inputs":[{"name":"compartments","type":"string","required":false,"description":"how a tree rendering folds a node's owned members into compartment rows of its box: positioned (the default, only the layout-less members of a tree some Layout positions), most (every owned usage no…"},{"name":"depth","type":"integer","required":false,"description":"how many levels of nested elements a tree or interconnection rendering draws below each exposed element, overriding the view's depth attribute; omitted or 0 keeps the view's own depth"},{"name":"form","type":"string","required":false,"description":"the artifact's notation: mermaid, dot (Graphviz), plantuml, d2, drawio (an uncompressed diagrams.net file), text, markdown, csv or tsv; omitted, markdown for a table or matrix and mermaid otherwise"},{"name":"lines","type":"string","required":false,"description":"how dot and plantuml route edges: splines (the default), ortho or polyline"},{"name":"linkTemplate","type":"string","required":false,"description":"a template for source links on elements, with {file}, {line}, {col}, {qname} and {id} placeholders"},{"name":"overlay","type":"string","required":false,"description":"verdicts, on a requirement rendering: runs the verification cases and colors each requirement by its verdict; omitted runs nothing"},{"name":"palette","type":"string","required":false,"description":"fill colors by keyword family for dot/mermaid/plantuml/d2/drawio: okabe-ito, tol-bright, tol-muted, tol-light, brewer-set2, brewer-dark2, viridis or cividis; omitted draws black and white"},{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root"},{"name":"ports","type":"string","required":false,"description":"ports drawn on an interconnection or mixed rendering: minimal (the default, only connected ports) or full (every port, labelled name : Type)"},{"name":"show","type":"null|array","required":false,"description":"optional notation elements drawn besides the ones the view's rendering shows: parameter-symbols, port-symbols, compartments, edge-labels, keywords, multiplicities, typings, qualifiers, or all; port s…"},{"name":"style","type":"string","required":false,"description":"the drawing style of dot/mermaid: pilot (the default, the Pilot visualizer's look) or cameo (Cameo Systems Modeler's)"},{"name":"view","type":"string","required":false,"description":"the qualified name of a view the document declares, a pseudo-view such as #tree, #interconnection, #state, #action, #sequence or #tree:Pkg::Part (see the views tool), or omitted for the one view the…"}],"outputs":[{"name":"artifact","type":"string","required":true,"description":null},{"name":"canvas","type":"null|object","required":false,"description":null},{"name":"columns","type":"null|array","required":false,"description":null},{"name":"edges","type":"null|array","required":true,"description":null},{"name":"form","type":"string","required":true,"description":null},{"name":"kind","type":"string","required":true,"description":null},{"name":"nodes","type":"null|array","required":true,"description":null},{"name":"notices","type":"null|array","required":true,"description":null},{"name":"palette","type":"null|object","required":false,"description":null},{"name":"rows","type":"null|array","required":false,"description":null},{"name":"shown","type":"null|array","required":true,"description":null},{"name":"stated","type":"string","required":true,"description":null},{"name":"style","type":"string","required":true,"description":null},{"name":"version","type":"integer","required":true,"description":null},{"name":"view","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":622},{"name":"repl_command","title":null,"description":"Run one sysml prompt command (a % line) in a session and return what it printed. Prefer the typed tools, which return the same data structured: session_load/session_submit/session_eval/session_print/session_save/session_clear, session_run, debug_*, send, advance, features, instances, check/explain/solve/configure/optimize, sweep, runs, render_run. This tool reaches everything else the prompt can do — %instantiate, %invoke, %constraint, %requirement, %satisfy, %validate, %calc, %analysis, %record, %import, %run-query, %render, %viz, %render-document, %trace, %schedule, %seed, %engine, %jobs, %budget, %verbosity, %strict, %lint, %search, %views, %documents, %list, the %check-* settings and the repository commands. Discover the commands with `%help` (every command with its arguments) and the settings with the command alone (`%schedule`, `%engine`). A command that reports an error fails the call with its output.","inputs":[{"name":"line","type":"string","required":true,"description":"one meta command line as typed at the sysml prompt, starting with %, e.g. %list, %help, %instantiate Demo::car, %features car all"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"output","type":"string","required":true,"description":"the lines the command printed"},{"name":"quit","type":"boolean","required":false,"description":"the line was %quit, which ends a terminal and is only noted here"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":288},{"name":"run_analysis","title":null,"description":"Run an analysis case (the RunAnalysis RPC, the REPL's %analysis): its subject and inputs bound from the arguments and its own declarations, its body run, every declared output answered with the verdict of its objective and of each assertion in its body; a verification case also answers its own verdict. A trade study's evaluations of each alternative are in `evaluations`. Under an explore schedule the answer is the set of distinct `outcomes`. Bounded by the service's OPENSYSML_MAX_* budgets. The result is the RunAnalysisResponse as protojson writes it.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"positional values for the case's input parameters, each a protojson Value; the subject is never among them. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"},…"},{"name":"engine","type":"string","required":false,"description":"the analysis engine asked; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"namedArguments","type":"object","required":false,"description":"values for input parameters by name, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0,\"unit\":\"m\"}},…"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"schedule","type":"string","required":false,"description":"scheduling policy for choice points: declared, reverse (the default), seed:<n>, or explore[:runs=<n>,depth=<d>]"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subjectSymbolId","type":"string","required":false,"description":"qualified name of a part/usage to instantiate as the case's subject, or a path from one; empty leaves the case's own subject binding to supply it"},{"name":"symbolId","type":"string","required":true,"description":"qualified name of the analysis case definition or usage"},{"name":"toolDryRun","type":"boolean","required":false,"description":"run the case only to the first external tool call its ToolExecution names and answer what the tool would be given in toolDryRun, without starting it (sysml -tool-dry-run); refused under explore"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":547},{"name":"run_document_query","title":null,"description":"Run a named document query with parameter bindings and answer its typed rows (the RunDocumentQuery RPC, the REPL's %run-query). The query runs over the model and over the objects instantiate created for the same modelHash, which a binding may name. The result is the RunDocumentQueryResponse as protojson writes it; the text is the table.","inputs":[{"name":"bindings","type":"null|array","required":false,"description":"entry-parameter bindings, each a protojson DocumentQueryBinding {\"parameter\":name,\"values\":[DocumentValue]} where a DocumentValue is {\"elementId\":qualified name}, {\"stringValue\":..}, {\"intValue\":\"..\"…"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"queryId","type":"string","required":true,"description":"qualified name of the document query, a calc def specializing DocumentQueries::Query"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":282},{"name":"run_runs","title":null,"description":"Run an action, or a Simulation::MonteCarlo analysis case, a number of times (the RunRuns RPC, the CLI's -runs/-observe, the REPL's %runs): every run is an ordinary run in a context of its own, drawing its modeled randomness from a seed derived from `seed`. `rows` is the table, one row per run with the run number as its input and what it observed as its outputs; `distributions` summarises each observable over the completed runs (extremes, mean, deviation, percentiles, histogram, or the count of each distinct value); for a case `outputs` and `verdicts` are its conclusion over the sample and `unconcluded` why it has none. A run that failed is its row's error. The result is the RunRunsResponse as protojson writes it.","inputs":[{"name":"actionSymbolId","type":"string","required":false,"description":"qualified name of the action to run; give this or analysisSymbolId"},{"name":"analysisSymbolId","type":"string","required":false,"description":"qualified name of the Simulation::MonteCarlo analysis case, definition or usage; give this or actionSymbolId"},{"name":"arguments","type":"null|array","required":false,"description":"positional values for the case's in parameters, each a protojson Value"},{"name":"clockStep","type":"number","required":false,"description":"clock step of each run; 0 keeps the default (-clock-step)"},{"name":"draws","type":"string","required":false,"description":"draw policy for the model's distributions: random (the default), min, max or average (-draws)"},{"name":"engine","type":"string","required":false,"description":"the analysis engine asked, as list_engines names them; empty is auto"},{"name":"inputs","type":"object","required":false,"description":"the action's input parameter name to value, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"namedArguments","type":"object","required":false,"description":"values for the case's in parameters by name, each a protojson Value"},{"name":"observe","type":"null|array","required":false,"description":"features of the action each run reports, clock for the time it completed at; empty reports every feature and the clock (-observe). Not for a case, which observes what it declares"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"performerSymbolId","type":"string","required":false,"description":"qualified name of a part/usage, or a path from one, whose object performs the action; empty performs it outside any object"},{"name":"runs","type":"integer","required":true,"description":"how many runs to make (-runs); positive"},{"name":"seed","type":"null|integer","required":false,"description":"seed the runs draw their modeled randomness from, one derived seed per run; required unless draws is min, max or average"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subjectSymbolId","type":"string","required":false,"description":"qualified name of a part/usage to instantiate as the case's subject, or a path from one to a nested object"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":669},{"name":"run_sweep","title":null,"description":"Run an analysis case or calc once per row of a parameter sweep (the RunSweep RPC, the CLI's -sweep): each row an ordinary run with the swept parameters bound to that row's values, stepped through the ranges' cartesian product or drawn with samples and seed. A failed row is a row with `error`, not a failed table. Bounded by the service's OPENSYSML_MAX_* budgets. The result is the RunSweepResponse as protojson writes it; the text is the table.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"positional values every row binds, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0,\"unit\":\"m\"}}, {…"},{"name":"engine","type":"string","required":false,"description":"the analysis engine asked; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"namedArguments","type":"object","required":false,"description":"values every row binds by name, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0,\"unit\":\"m\"}}, {\"en…"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"ranges","type":"null|array","required":false,"description":"the ranges swept, each a protojson SweepRange {\"parameter\":name,\"start\":Value,\"end\":Value,\"step\":Value}; several make one row per point of their cartesian product"},{"name":"samples","type":"integer","required":false,"description":"rows to draw uniformly from each range instead of stepping through it; 0 steps, above 0 needs seed and refuses a range with a step"},{"name":"seed","type":"integer","required":false,"description":"seed the draws are taken from; required with samples"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subjectSymbolId","type":"string","required":false,"description":"qualified name of a part/usage to instantiate as an analysis case's subject, or a path from one"},{"name":"symbolId","type":"string","required":true,"description":"qualified name of the analysis case or calc, definition or usage"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":532},{"name":"runs","title":null,"description":"Run an action count times, each run's modeled randomness seeded on its own, and return the table of the observables with each one's distribution (%runs); or run a Simulation::MonteCarlo analysis case count times on fresh subjects and conclude it.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"for case: argument expressions"},{"name":"count","type":"integer","required":true,"description":"how many runs"},{"name":"kind","type":"string","required":false,"description":"action (default): run an action count times and table the observables; case: a Simulation::MonteCarlo analysis case, run count times on fresh subjects and concluded"},{"name":"name","type":"string","required":true,"description":"qualified name of the action or case"},{"name":"object","type":"string","required":false,"description":"for action: the object performing it; for case: its subject"},{"name":"observables","type":"null|array","required":false,"description":"for action: the features to table with their distributions; every feature the action holds and the clock when omitted"},{"name":"seed","type":"null|integer","required":false,"description":"seed each run's modeled randomness derives from; omit for the session's"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"evaluations","type":"null|array","required":false,"description":null},{"name":"rows","type":"null|array","required":false,"description":"one per run of a sweep or of repeated runs"},{"name":"status","type":"string","required":true,"description":"holds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made)"},{"name":"subject","type":"string","required":true,"description":"what was run or checked, as named"},{"name":"text","type":"string","required":true,"description":"the prompt's report"},{"name":"values","type":"null|array","required":true,"description":"what the run produced: a calc's result, an action's outputs, a case's outputs and verdicts"},{"name":"verifications","type":"null|array","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":225},{"name":"self_check","title":null,"description":"Apply the SysMLValidation constraints, and those of any rule packages named, reflectively to every element of a model (the SelfCheck RPC, the CLI's -self-check and -self-check-package): each element is handed to every constraint whose input its metaclass conforms to. `status` is holds, fails or unresolved; `findings` carry each violation, evaluation the runtime could not make, error and skipped rule constraint with the element's location and the line the CLI prints; the counts and `applications` say how much was checked. The result is the SelfCheckResponse as protojson writes it.","inputs":[{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"selfCheckPackage","type":"null|array","required":false,"description":"qualified names of packages whose constraint definitions apply after the bundled SysMLValidation ones (-self-check-package); each must be a package the model or its libraries declare"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":274},{"name":"send","title":null,"description":"Send a signal to an object through the runtime's message bus (%send), for the state machine it exhibits or the action parked at a matching accept to take; by default to the object whose behavior is being debugged. The signal is refused when no behavior of the object accepts it now. It is dispatched by the next debug_step or advance.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"the signal's feature values, written parameter=expression"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"},{"name":"signal","type":"string","required":true,"description":"the signal's definition, qualified if needed"},{"name":"to","type":"string","required":false,"description":"the receiving object (name, #id or path); omit for the object whose behavior is being debugged"}],"outputs":[{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":153},{"name":"server_info","title":null,"description":"Report the OpenSysML runtime's version and the named capabilities this build supports.","inputs":[],"outputs":[{"name":"capabilities","type":"null|array","required":true,"description":"named capabilities this build supports; each is a stable string a caller can require"},{"name":"version","type":"string","required":true,"description":"build version of the server, informational only"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":24},{"name":"session_clear","title":null,"description":"Reset a session, as %clear does: every declaration, object and debugging session goes; the session stays open and empty.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"notices","type":"null|array","required":true,"description":"what the reset discarded: objects held, debugging sessions"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":48},{"name":"session_close","title":null,"description":"Close a REPL session, discarding its model, instances and any run in progress.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"session","type":"string","required":true,"description":"the session's name"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":41},{"name":"session_eval","title":null,"description":"Evaluate an expression in a session, as %eval does: a literal, a declared feature or qualified name, an enumeration literal, a unit, or a compound expression over the session's declarations. Returns the value as data and as the prompt prints it.","inputs":[{"name":"expression","type":"string","required":true,"description":"a SysML expression: a literal, a feature or qualified name, or a compound expression over the session's declarations"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"expression","type":"string","required":true,"description":null},{"name":"output","type":"string","required":true,"description":"what %eval printed"},{"name":"text","type":"string","required":true,"description":"the value as the prompt prints it"},{"name":"value","type":null,"required":true,"description":"the value in the runtime API's JSON form (opensysml.v1.Value): a typed scalar, sequence, set, instance reference or function"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":104},{"name":"session_list","title":null,"description":"List the open REPL sessions.","inputs":[],"outputs":[{"name":"sessions","type":"null|array","required":true,"description":"names of the open sessions, sorted"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":15},{"name":"session_load","title":null,"description":"Load model files into a session, as %load does: files, directories or globs, resolved against the workspace root and refused outside it. Every file is accepted before the model is analyzed, so load order does not matter, and files beside the paths that declare a namespace they import load too. Returns what loaded and the diagnostics.","inputs":[{"name":"paths","type":"null|array","required":true,"description":"files, directories (walked for .sysml/.kerml/.ipynb) or glob patterns, relative to the workspace root or absolute; a path outside the root is refused"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"declared","type":"null|array","required":true,"description":"what the load declared, as the prompt summarizes it; empty when the analysis found an error"},{"name":"diagnostics","type":"null|array","required":true,"description":"every finding over the session's model after the load, located in its file"},{"name":"errors","type":"boolean","required":true,"description":"whether the session's model now has an error"},{"name":"files","type":"null|array","required":true,"description":"the model files the paths named, in load order; files they import from beside them load too"},{"name":"text","type":"string","required":true,"description":"what %load printed"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":137},{"name":"session_open","title":null,"description":"Open a named REPL session: an empty model that declarations, instances and runs accumulate into across calls. The default session opens itself on first use, so this is only needed for a second, independent session, or for one with a root: a directory under the workspace root whose model files load on demand, as %load would load them, when a submission imports or qualifies a root namespace that neither the session nor the library declares.","inputs":[{"name":"root","type":"string","required":false,"description":"directory under the workspace root, relative to it or absolute, whose model files load when a submission imports or qualifies a root namespace nothing in the session declares; omit to resolve against…"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"session","type":"string","required":true,"description":"the session's name"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":158},{"name":"session_print","title":null,"description":"Print a session's model as SysML notation, or one named element with its body, as %print does. Comments are kept, and what is printed can be submitted back.","inputs":[{"name":"name","type":"string","required":false,"description":"qualified name of one element to print with its body; omit for the whole model"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"text","type":"string","required":true,"description":"the notation, as %print writes it; what is printed can be submitted back"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":82},{"name":"session_run","title":null,"description":"Run a behavior in a session to completion and report what it produced: an action (%action then %continue), a state machine (%state, then %advance when a duration is given), a calc (%calc) or an analysis case (%analysis). Objects the run creates stay in the session, and the run's executor stays inspectable with debug_current until the next run or debug_stop. Under %engine check the behavior is checked over every schedule instead.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"argument expressions: positional for a calc; positional, in parameter order, or written parameter=expression for an action's inputs or an analysis case"},{"name":"duration","type":"null|number","required":false,"description":"for state: advance the machine's clock by this many time units after its initial transition; omit to take the initial transition alone"},{"name":"kind","type":"string","required":true,"description":"what to run: action, state (a state machine), calc or analysis (an analysis, verification or trade-study case)"},{"name":"name","type":"string","required":true,"description":"qualified name of the behavior"},{"name":"object","type":"string","required":false,"description":"an object the session holds (name, #id or path such as car.fl): the performer of an action or state machine, the subject of a case"},{"name":"schedule","type":"string","required":false,"description":"scheduling policy for this run alone: declared, reverse, seed:<n> or explore[:runs=N,depth=D]; omit for the session's"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"evaluations","type":"null|array","required":false,"description":null},{"name":"rows","type":"null|array","required":false,"description":"one per run of a sweep or of repeated runs"},{"name":"status","type":"string","required":true,"description":"holds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made)"},{"name":"subject","type":"string","required":true,"description":"what was run or checked, as named"},{"name":"text","type":"string","required":true,"description":"the prompt's report"},{"name":"values","type":"null|array","required":true,"description":"what the run produced: a calc's result, an action's outputs, a case's outputs and verdicts"},{"name":"verifications","type":"null|array","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":301},{"name":"session_save","title":null,"description":"Write a session's model to a file under the workspace root, as %save does: .sysml notation with comments preserved, or .ttl/.json RDF (experimental). A path outside the root is refused. Without apply nothing is written and the file's content, in the format the extension names, is returned as content.","inputs":[{"name":"apply","type":"boolean","required":false,"description":"write the file; without it the bytes the file would hold (notation, Turtle or JSON by extension) are returned as content and nothing is touched"},{"name":"path","type":"string","required":true,"description":"file to write, relative to the workspace root or absolute but under it: .sysml notation, or .ttl/.json RDF (experimental)"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"applied","type":"boolean","required":true,"description":"whether the file was written; false for an empty session, which has nothing to save"},{"name":"content","type":"string","required":false,"description":"without apply: the file's bytes, in the format the extension names"},{"name":"path","type":"string","required":true,"description":"the file, resolved"},{"name":"text","type":"string","required":true,"description":"what %save printed: notes, warnings, and what was or would be saved"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":160},{"name":"session_submit","title":null,"description":"Submit SysML declarations to a session, as typing them at the prompt does: the text joins the model, the whole model is re-analyzed, and what it declared and the diagnostics about it come back. Submitting a name again replaces its earlier declaration. For an expression use session_eval; for a % command use repl_command.","inputs":[{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"},{"name":"text","type":"string","required":true,"description":"SysML v2 (or KerML) declarations, as typed at the prompt; a redeclaration of a name replaces the earlier one"}],"outputs":[{"name":"accepted","type":"boolean","required":true,"description":"whether the text was taken into the model without an error of its own"},{"name":"declared","type":"null|array","required":true,"description":"the names this submission introduced"},{"name":"diagnostics","type":"null|array","required":true,"description":"the findings about this submission, located in it"},{"name":"notices","type":"null|array","required":true,"description":"side effects, such as a debugging session the submission ended"},{"name":"text","type":"string","required":true,"description":"what the prompt printed for the submission"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":124},{"name":"signature_help","title":null,"description":"Describe the invocation enclosing a position: the callable's parameters and which one the position is at.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document"},{"name":"position","type":"object","required":true,"description":"the position (1-based line and character column)"}],"outputs":[{"name":"activeParameter","type":"integer","required":true,"description":null},{"name":"activeSignature","type":"integer","required":true,"description":null},{"name":"signatures","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":75},{"name":"solve","title":null,"description":"Ask an SMT solver for values satisfying an element's conditions (%solve, experimental), keeping the values the model already fixes; reports the conflict when the fixed values admit none.","inputs":[{"name":"name","type":"string","required":true,"description":"qualified name of the constraint, requirement, satisfaction, part or analysis case"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"reports","type":"null|array","required":true,"description":null},{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":77},{"name":"sweep","title":null,"description":"Run a calc or analysis case once per row of the ranges given (%sweep), or over rows drawn from them (%samples), and return the table: each row's inputs, outputs, verdicts and timing. The verdict holds when every run completed and every objective was satisfied.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"argument expressions fixed for every row, positional or parameter=expression"},{"name":"name","type":"string","required":true,"description":"qualified name of the calc or analysis case"},{"name":"object","type":"string","required":false,"description":"the case's subject, an object the session holds"},{"name":"ranges","type":"null|array","required":true,"description":"one per swept parameter, written parameter=from..to[:step]; the rows are the cartesian product"},{"name":"samples","type":"null|object","required":false,"description":"draw rows uniformly from the ranges instead of stepping them"},{"name":"session","type":"string","required":false,"description":"session name; omit for the default session"}],"outputs":[{"name":"evaluations","type":"null|array","required":false,"description":null},{"name":"rows","type":"null|array","required":false,"description":"one per run of a sweep or of repeated runs"},{"name":"status","type":"string","required":true,"description":"holds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made)"},{"name":"subject","type":"string","required":true,"description":"what was run or checked, as named"},{"name":"text","type":"string","required":true,"description":"the prompt's report"},{"name":"values","type":"null|array","required":true,"description":"what the run produced: a calc's result, an action's outputs, a case's outputs and verdicts"},{"name":"verifications","type":"null|array","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":180},{"name":"symbol","title":null,"description":"Describe one element of a parsed model by qualified name (the GetSymbol RPC): its kind, metadata, children, attributes with their declared values, static type facts, multiplicity and specializations. An unknown name answers with `error` set rather than failing. The result is the SymbolResponse as protojson writes it.","inputs":[{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"symbolId","type":"string","required":true,"description":"the element's qualified name, as Demo::Vehicle::mass"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":192},{"name":"tool_catalog","title":null,"description":"List the tools this server serves: each tool's name, group, the sysml-grpc RPC or `sysml` CLI flag it stands for, and a one-line summary. Pass `group` (lsp, runtime, session) to narrow the list. The same catalog generates the Tools section of the sysml-mcp manual page.","inputs":[{"name":"group","type":"string","required":false,"description":"answer only this group's tools: lsp, runtime or session"}],"outputs":[{"name":"groups","type":"null|array","required":true,"description":null},{"name":"tools","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":97},{"name":"update_document","title":null,"description":"Replace the text of a document held open by open_document and re-analyze it. Nothing is written to disk. Returns the diagnostics of the new text.","inputs":[{"name":"path","type":"string","required":true,"description":"an open document, absolute or relative to the workspace root"},{"name":"text","type":"string","required":true,"description":"the full new text of the document"}],"outputs":[{"name":"diagnostics","type":"null|array","required":true,"description":"the diagnostics of the text now held"},{"name":"open","type":"boolean","required":true,"description":"whether the server now holds an open buffer for the document"},{"name":"path","type":"string","required":true,"description":null},{"name":"version","type":"integer","required":true,"description":"the buffer's version, incremented by each update"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":71},{"name":"validate_instance","title":null,"description":"Validate an object of a part as a whole (the ValidateInstance RPC, the REPL's %validate): every assertion about an object of symbolId and about the objects it holds — asserted constraints of their types, the requirements they carry, the satisfactions they are the subject of — each answered on the concrete object, with a `summary` verdict about the object as a whole. The result is the ValidateInstanceResponse as protojson writes it.","inputs":[{"name":"engine","type":"string","required":false,"description":"the analysis engine asked; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"symbolId","type":"string","required":true,"description":"qualified name of the part or usage an object of which is validated"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":235},{"name":"verify_constraint","title":null,"description":"Ask whether a constraint holds (the VerifyConstraint RPC, the REPL's %constraint): against its declared values, or against an object of subjectSymbolId built for the call. The answer is a Verdict: `holds`, the violated `condition`, or an `error` when nothing was decided, with the engine and strength of evidence. The question holds or satisfiable puts it to a solver over the free variables and answers with a witness assignment. The result is the VerifyConstraintResponse as protojson writes it.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"positional values for the element's in parameters, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0…"},{"name":"engine","type":"string","required":false,"description":"the analysis engine asked, as list_engines names them; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"namedArguments","type":"object","required":false,"description":"values for the element's in parameters by name, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0,\"u…"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"question","type":"string","required":false,"description":"evaluate (the default: one evaluation), holds (prove over every free assignment) or satisfiable (find one satisfying assignment)"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subjectSymbolId","type":"string","required":false,"description":"qualified name of a part/usage to instantiate and evaluate against, or a path from one to a nested object; empty evaluates declared values"},{"name":"symbolId","type":"string","required":true,"description":"qualified name of the constraint or requirement, definition or usage"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":478},{"name":"verify_requirement","title":null,"description":"Ask whether a requirement is satisfied (the VerifyRequirement RPC, the REPL's %requirement): its require constraints evaluated against declared values or against an object of subjectSymbolId. Beside the Verdict the answer carries what every verification case verifying the requirement concluded (pass, fail, inconclusive, error). The result is the VerifyRequirementResponse as protojson writes it.","inputs":[{"name":"arguments","type":"null|array","required":false,"description":"positional values for the element's in parameters, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0…"},{"name":"engine","type":"string","required":false,"description":"the analysis engine asked, as list_engines names them; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"namedArguments","type":"object","required":false,"description":"values for the element's in parameters by name, each a protojson Value. Example arms: {\"intValue\":\"7\"}, {\"realValue\":1.5}, {\"boolValue\":true}, {\"stringValue\":\"x\"}, {\"quantity\":{\"realMagnitude\":5.0,\"u…"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"question","type":"string","required":false,"description":"evaluate (the default: one evaluation), holds (prove over every free assignment) or satisfiable (find one satisfying assignment)"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"subjectSymbolId","type":"string","required":false,"description":"qualified name of a part/usage to instantiate and evaluate against, or a path from one to a nested object; empty evaluates declared values"},{"name":"symbolId","type":"string","required":true,"description":"qualified name of the constraint or requirement, definition or usage"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":449},{"name":"verify_satisfaction","title":null,"description":"Evaluate the satisfy assertions a model states (the VerifySatisfaction RPC, the REPL's %satisfy): each against an object of its subject built for the call, answering one Verdict per assertion in declaration order. A model stating no assertion answers an empty list, not an error. The result is the VerifySatisfactionResponse as protojson writes it.","inputs":[{"name":"engine","type":"string","required":false,"description":"the analysis engine asked; empty is auto"},{"name":"modelHash","type":"string","required":false,"description":"the model_hash a parse answered; give this, or paths and/or sources to parse first"},{"name":"paths","type":"null|array","required":false,"description":"model files to parse as one model, absolute or relative to the workspace root"},{"name":"question","type":"string","required":false,"description":"evaluate (the default), holds or satisfiable"},{"name":"sources","type":"null|array","required":false,"description":"documents given inline, parsed with paths as one model"},{"name":"strictConformance","type":"boolean","required":false,"description":"judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning"},{"name":"symbolId","type":"string","required":false,"description":"qualified name limiting the assertions evaluated: those stated within it, or itself when it is a named satisfy; empty evaluates every assertion the model states"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":249},{"name":"views","title":null,"description":"List the views a document declares and the pseudo-views (#tree, #interconnection, ...) render_view can draw of it.","inputs":[{"name":"path","type":"string","required":true,"description":"the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document"}],"outputs":[{"name":"pseudoViews","type":"null|array","required":true,"description":null},{"name":"views","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":65},{"name":"workspace_diagnostics","title":null,"description":"Analyze a SysML v2 / KerML document, or the whole workspace, and list the errors, warnings and hints: syntax, unresolved names, type and constraint violations. Positions are 1-based lines and columns.","inputs":[{"name":"path","type":"string","required":false,"description":"one document, absolute or relative to the workspace root; omitted, every document of the workspace"}],"outputs":[{"name":"diagnostics","type":"null|array","required":true,"description":null},{"name":"documents","type":"integer","required":true,"description":"documents analyzed"},{"name":"errors","type":"integer","required":true,"description":null},{"name":"warnings","type":"integer","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":78},{"name":"workspace_info","title":null,"description":"Describe the SysML v2 workspace the server has indexed: its root folder and the model documents found under it.","inputs":[],"outputs":[{"name":"documents","type":"null|array","required":true,"description":"paths of the model documents indexed, the standard library excluded"},{"name":"open","type":"null|array","required":false,"description":"documents whose text is held open with edits not yet on disk"},{"name":"root","type":"string","required":true,"description":"the workspace folder the server indexed"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":31},{"name":"workspace_symbols","title":null,"description":"Search the workspace's declared elements by name substring.","inputs":[{"name":"limit","type":"integer","required":false,"description":"at most this many matches; default 200"},{"name":"query","type":"string","required":false,"description":"case-insensitive substring of the name; empty lists every named element"}],"outputs":[{"name":"symbols","type":"null|array","required":true,"description":null},{"name":"total","type":"integer","required":true,"description":"matches before the limit"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":54}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T05:58:23.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":5,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-24","recent":[{"id":"chg_01a1af6f-d1a4-78b8-85d8-eb93549c2b1f","kind":"score.total_changed","summary":"Trust score (40 → 77)","materiality":"functional","direction":"improvement","scoreDelta":37,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af6f-d1a4-78b8-85d8-eb93549c2b1f"},{"id":"chg_01a1af4d-93bd-7905-bfd7-0d64a70df58f","kind":"check.unverifiable","summary":"Stability (0.40 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af4d-93bd-7905-bfd7-0d64a70df58f"},{"id":"chg_01a1af4d-93be-7841-b76e-028529c6399d","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af4d-93be-7841-b76e-028529c6399d"},{"id":"chg_01a1af4d-93bf-7092-ac6b-fa664e893342","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af4d-93bf-7092-ac6b-fa664e893342"},{"id":"chg_01a1af4d-93bf-76dc-aed5-234a0a068bf1","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af4d-93bf-76dc-aed5-234a0a068bf1"},{"id":"chg_01a1af4d-93bf-7cb5-a31c-4439b7a63c5f","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af4d-93bf-7cb5-a31c-4439b7a63c5f"},{"id":"chg_01a1af4d-93c0-79fa-8e75-b30633f51298","kind":"package.version_changed","summary":"Package version (0.11.0 → 0.12.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af4d-93c0-79fa-8e75-b30633f51298"},{"id":"chg_01a1af4d-93c1-738e-b1d6-128958fb5c74","kind":"score.total_changed","summary":"Trust score (77 → 40)","materiality":"functional","direction":"regression","scoreDelta":-37,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1af4d-93c1-738e-b1d6-128958fb5c74"},{"id":"chg_01a1aa5f-2c74-7afb-8bf6-32baf772bb28","kind":"check.reverified","summary":"Stability (unverified → 0.40)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1aa5f-2c74-7afb-8bf6-32baf772bb28"},{"id":"chg_01a1aa5f-2c77-7572-bc6a-0a627946ec91","kind":"score.total_changed","summary":"Trust score (71 → 77)","materiality":"functional","direction":"improvement","scoreDelta":6,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a1aa5f-2c77-7572-bc6a-0a627946ec91"},{"id":"chg_01a176dc-ecac-7887-aff7-c2ac3729b7fb","kind":"check.verdict","summary":"Security disclosure (fail → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a176dc-ecac-7887-aff7-c2ac3729b7fb"},{"id":"chg_01a171b5-4982-76c5-ba1d-c850f6cfb3b7","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a171b5-4982-76c5-ba1d-c850f6cfb3b7"},{"id":"chg_01a171b5-4983-70c5-894a-6a639419dee7","kind":"score.total_changed","summary":"Trust score (56 → 71)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a171b5-4983-70c5-894a-6a639419dee7"},{"id":"chg_01a16d19-f17a-72e3-a475-635cf8aec595","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp#chg-chg_01a16d19-f17a-72e3-a475-635cf8aec595"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp","markdown":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp.md","changelogJson":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/org-opensysml-sysml-mcp/openmbee-sysml-mcp.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@openmbee/sysml-mcp"},{"label":"Socket report","href":"https://socket.dev/npm/package/@openmbee/sysml-mcp"},{"label":"Repository","href":"https://github.com/Open-MBEE/OpenSysML"},{"label":"Website","href":"https://runtime.opensysml.org/reference/sysml-mcp/"}]}}