triz
The server can be deployed as a Cloudflare Worker (via npx wrangler deploy) exposing the same lookup and modeling tools over stateless streamable HTTP at /mcp and /health, with an optional token check, origin allowlist, Cloudflare Access, or rate limiting placed in front of the handler for private deployments. Note that the optional triz_graph, triz_purpose, and svg export format are only available on the local stdio server.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@trizlook up TRIZ principles for improving speed without increasing weight"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
triz-skill
An agent skill that applies TRIZ to real problems — products, services, processes, organizations, markets, and technical systems — plus a deterministic MCP server so the agent can only cite principles and matrix cells it has looked up, never ones it recalled.
Two parts, usable separately:
Part | Path | What it is |
|
|
|
|
| Read-only stdio MCP server over the same JSON |
Why
An LLM asked for "the TRIZ principles for this contradiction" will produce plausible principle
numbers from memory. The matrix is a lookup table, not a reasoning step, so recall is the wrong
mechanism for it — and a wrong cell silently poisons everything downstream. This repo makes the
lookup deterministic and fail-closed: a blank or diagonal cell returns covered: false with a
pointer to the canonical reference, never a guess.
The skill itself is method, not vocabulary: frame → diagnose → model → synthesize → substantiate, with the matrix used only where both sides of a contradiction credibly map to engineering parameters.
Related MCP server: jevbook MCP
Install the skill
Copy or symlink skills/triz-innovation/ into wherever your agent loads skills from — e.g.
.claude/skills/, .agents/skills/, .codex/skills/, or a $SKILLS_DIR your harness reads:
git clone https://github.com/sv/triz-skill.git
ln -s "$PWD/triz-skill/skills/triz-innovation" ~/.claude/skills/triz-innovationOnce the repo is listed on skills.sh the shorthand becomes
npx skills add sv/triz-skill.
The skill works standalone. The MCP server is what removes recall from the loop.
Run the MCP server
Published package (preferred once released):
npx -y triz-mcp # stdio server, no checkout neededFrom a checkout:
pnpm install
pnpm start # stdio server
pnpm test # deterministic lookup regressions
pnpm typecheckRegister it (.mcp.json in this repo is a working example):
{
"mcpServers": {
"triz": {
"type": "stdio",
"command": "npx",
"args": ["tsx", "/path/to/triz-skill/src/server.ts"],
"env": { "TRIZ_DATA_DIR": "/path/to/triz-skill/skills/triz-innovation/data" }
}
}
}TRIZ_DATA_DIR is only needed when the server runs outside this repo's layout; otherwise the data
dir is resolved relative to the repo root and the server fails closed with a clear message if it is
missing.
Hosted endpoint
src/worker.ts serves the same tools, except the optional triz_graph and triz_purpose and
triz_export format svg, as a Cloudflare Worker over stateless streamable HTTP (deploy with npx wrangler deploy; endpoints
/mcp and /health). It has no authentication and allows any origin (Access-Control-Allow-Origin: *) on purpose: it
is a stateless, read-only public utility with no storage bindings and no secrets, so any client
or web page may drive it. An operator who wants it private can check a token in fetch before
the MCP handler, list allowed origins instead of *, or put it behind Cloudflare Access or a
rate limit. Calling a hosted endpoint sends your model to whoever runs it; keep private models on
the local stdio server.
Tool map
One line per workflow stage; the table below has one row per tool. What each model tool's verdict means, and how to chain the tools, is in categorical-model.md; the theory behind them, and exactly what is and is not claimed, is in docs/theory-map.md.
Stage | Tools | What they do |
Lookup |
| Read the canonical data: parameters, principles, matrix cells, effects, the method router, and the eval suites |
Model |
| Write the system as a typed function model, view it per level and time, relate coarse and detailed models, draw it |
Check |
| Type errors, harm loops, ideality; trim candidates; whether a contradiction separates; flow bottlenecks |
Transform |
| Apply one typed move or a rewrite rule; the result type-checks or the call fails closed |
Decide |
| From declared rows: is behaviour preserved, which concept is weakest, does it escalate, does it fit the budget |
Relax & rank |
| When the budget says no, the minimal raises that say yes; candidate designs compared jointly, with trade-offs instead of a hidden scalarization |
Local |
| Draft models from local sources, then record explicit analyst confirmation |
Optional |
| A project's own network of problems (stdio server only; see below) |
Tools
Tool | Purpose |
| Get one of the 39 engineering parameters with alternate labels and interpretation guidance; omit |
| List universal and domain knowledge packs, provenance, review status and explicit quantity parameters; all packs by default |
| Get one of the 40 inventive principles; omit |
| Retrieve a canonical contradiction-matrix cell; blank cells fail closed |
| Every (improving × worsening) cell for multi-parameter conflicts, aggregated by recommendation frequency |
| Retrieve a cell and expand its parameters and principles |
| List the routed TRIZ tool catalog, optionally by stage; entries name the MCP tools ( |
| Search all installed effects packs by function, category or typed quantity; optional domain/pack filters |
| Build a typed model from registered effect ids and explicit finite/resource declarations |
| Select candidate tools by stage and observed problem signals |
| Return the neutral lookup and reasoning evaluation suites |
| Build a typed model from explicitly rated component interactions, with stable ids, lints, and a bounded completeness report |
| Expand an inner model with explicit checked flow routes, media mappings, and opt-in budget, weight and contradiction policies |
| Distinguish a declared interface summary from one checked against complete inner behavior and a supported resource mode |
| Local only (stdio server and |
| Local only (stdio server and |
| Type-check a TRIZ function model (typed wiring diagram); harm loops, ideality per dimension, separation, baseline comparison with an isomorphism check; |
| Screen trimming by MATRIZ rules A/B/C; carrier-typed absorbers, trimming problems, and level problems for excessive or insufficient functions |
| Decide whether a physical contradiction separates over space, time, condition, direction, or system level; optionally index it by one axis (Principle 15 along time); each separated pair gets suggested operations that could build the separation (hints, not verdicts) |
| Apply one typed move — a construction for one of 13 principles, an applied trim, or a rewrite; fails closed |
| Double-pushout rewriting with rules as data: list a rule's matches, apply one; built-in evolution-line rules (mono → bi, self-adjusting feedback, changing the working field) and the uneven-development detector (the lagging subsystem) |
| System-operator views: subsystem restriction, system, supersystem collapse, per time; transitions between times as checked |
| Export a model that type-checks as Graphviz DOT, a Mermaid flowchart, a self-contained SVG picture, or an open hypergraph |
| Compose declared box behaviour into the input→deliverable relation (steady states, relational trace); with |
| Rank modelled concepts by the situations they admit, by inclusion, with incomparable pairs; counts second; acceptable values listed or derived from a threshold through the carrier's levels |
| Rank candidate designs jointly over declared metric vectors (feasibility resources, lifecycle figures, component counts, costs): the nondominated frontier, dominance witnesses, and trade-offs between incomparable candidates; weights order the listing only |
| Bounded runs of boxes with declared state (nondeterministic Mealy machines): escalation into an unsafe set with a shortest trace, invariance of a safe set, separation in time along one run; loops classified as bistable, trapped (inside the unsafe set), recurrent (meets it but can recover), or oscillating |
| Monotone co-design (Censi 2015): minimal resource vectors from declared box feasibility, by Kleene's ascent to the least fixpoint; an |
| Check that a coarse model is an abstraction of a detailed one under a map of boxes, ports, and carriers: total, typed, every coarse function and harm loop the image of a detailed one; forgotten and hidden harms listed |
| Flow analysis over declared flow paths (boxes in series): per flow, bottleneck, accumulation, and leak candidates, and loops |
| Optional: analyse a project's OTSM Network of Problems (see below) |
| Require nonblocking and acceptable outputs at every required operating input |
| Verify or search an annotation-preserving value/state/wiring bijection |
| Check exact complete whole-model relation inclusion under an explicit interface/value map |
| Compose an exact stateless boundary summary and report hidden harms |
| Require one named implementation to meet behavior, resources and declared-harm constraints together |
| Evaluate complete absorber assignments over every compatible output endpoint |
| Search fixed-wiring finite libraries jointly; optional checked symbolic serial maps reduce union trace enumeration |
| Find components, chains or multi-input assemblies by searching catalogue instances and wiring against typed ports and optional finite property/resource contracts |
| Get general relations or registered multiport/stateful effect models; configure explicit types and implementation rows |
| Search bounded typed effect chains from explicit resources; hypotheses require substantiation |
| Solve declared maintenance policies and holding costs; ambiguous optimal-policy occupancy remains undecided |
| Check structural effort/flow causality, forced derivative storage and equation dependencies |
| Insert a discovered effect chain into an existing model with explicit bindings and a replayable rewrite |
| Find one assignment satisfying every allowed overlapping local relation |
| Compile and check an explicitly scheduled finite queue for overflow |
| Check declared extensive consumption or shared intensive minimum levels |
| Check a sufficient termination measure for a validated named rule subset |
| Check whether two named rewrites commute in their two orders |
| Return explicit absorber-aware trim data with checked structural replay |
| Optional: inspect the invariant, purpose gate, and separation check of one graph node |
triz_synthesize preserves exhaustive reference mode and the optimized residual search.
Use strategy: "symbolic" for checked joint finite-map compilation of stateless serial regions before
union traces are enumerated. Typed port permutations, grouped primitives and bounded residual
reuse compound boundary sharing; concrete resource choices remain separate. See
scope, proofs and trust boundary and
measured benchmarks.
For local source import, including exports from instantiated ModelingToolkit and Agents.jl models, see Importing models. Imported models remain drafts through the builder and are refused by analysis until explicitly reviewed.
triz_behavior can specify several unknown boxes jointly: use weakest_spec with joint_boxes
and a target. The result keeps coupling explicit and checks whether its per-box projections are
safe. See Joint weakest specification.
Command line
The package also installs triz, which runs the same tools without an MCP client, for scripts
and agents with a shell. It validates arguments exactly as the server does and prints only JSON
on stdout:
triz list # one line per tool; --json for a JSON array
triz schema triz_behavior # the description and input JSON Schema, as JSON
echo '{"improving": 9, "worsening": 14}' | triz call triz_matrix # or: triz call <tool> args.jsontriz call exits 0 with a result, 1 when the result has ok: false (its issues and hints are
still on stdout), and 2 on a usage error or arguments that fail the tool's schema (the issues as
JSON on stderr); --pretty indents the output. Without a global install, run
npx -y -p triz-mcp triz …; from a checkout, node --import tsx src/cli.ts …, or
node dist/cli.js … after pnpm build. triz_graph and triz_purpose read TRIZ_GRAPH and
TRIZ_REGISTRY, as on the server.
Function models as typed data
The eight-workstream assurance extension adds whole-model behavior, operational adequacy, semantic isomorphism/refinement, joint implementation and finite synthesis contracts, global overlapping-constraint checks, finite queue/conservation adapters, and restricted rewrite analysis. See implemented scope and tools. Acceptance criteria and literature references are kept separately. The documentation index maps guides, guarantees and planned work.
triz_function_model, triz_trim, and triz_separate run deterministic checks over a function
model written as an open wiring diagram, defined by
function-model.schema.json:
boxes are components with typed ports;
wires are functions rated useful, insufficient, excessive, or harmful;
carriers name what flows and in what unit;
flows, optionally, list the boxes a carrier passes through in series, in order.
Any dangling, mis-directed, or mistyped wire fails closed. The checks cover:
harm loops;
trimming by rules A/B/C;
ideality compared per dimension and never summed;
physical-contradiction separation as a gluing problem.
Every ok: false result keeps its errors and adds issues: per error a stable kebab-case
code, a JSON path into the call's arguments (such as $.model.wires[2].carrier), and a
hint with a concrete fix, so an agent can correct its input from the output alone. Common
slips get a pointed hint, such as a whole triz_rule_apply listing entry passed as match.
triz_function_model, triz_trim, and triz_behavior also return warnings: lints such as an
excessive rating on a loss like a pressure drop, which never change a verdict. That lint guesses
a loss from words unless the carrier declares loss, so a renaming can move it.
error-codes.md tabulates every code.
Every loop and absorber they return is a hypothesis to substantiate. triz_transform applies
typed moves. Each returns a model that type-checks, or fails closed:
constructions for the 13 principles whose looked-up text describes a structural move, such as Segmentation, Merging, Inversion, Feedback, and Intermediary; the theory map classifies all 40 and says why the others are parametric or analogies;
an applied trim;
a raw rewrite.
triz_rule_apply takes a rule as data, a span L ← K → R of patterns
(rule.schema.json). It lists the rule's
matches in a model, then applies one by double pushout after checking the no-identification and
no-dangling conditions. Three built-in rules encode evolution lines whose text describes a
structural move: mono → bi, self-adjusting feedback, and changing the working field (the same
function on another carrier, with the change recorded). The uneven-development line is a
detector instead: it names the lagging subsystem, a box of the largest harm-loop region that is on
a binding feasibility dimension or limits a deliverable.
Functions record who acts on whom, not which boxes sit in series along a flow: two valves in a
line both act on the water, not on each other. A model can declare flows, each an ordered path
of boxes with a carrier. triz_flow reports per flow its bottleneck candidates (resistance-like
functions acting on the flow), accumulation candidates (flows converging, or ending inside the
system), leaks, and loops. Principle 5's merge treats boxes consecutive on a flow as adjacent,
and every construction carries the flows along.
When boxes declare behaviour (finite carrier values and relation rows), triz_behavior
decides a concept against a baseline instead of only screening it: preserved, changed with
a counterexample input, or undecided (boxes that need behaviour, or no steady state in either
model). The concept can be a trim or any triz_transform result; a segment's boxMap maps its
parts back. Segmentation gives each part its projection of the box's relation when that relation
is the product of the projections, and suggests the finest partition of the box's ports for
which it is; Intermediary's mediator can declare an identity relation.
The semantics is steady state; it says nothing about dynamics. With weakest_spec, it gives the
weakest specification for the one box without behaviour, such as an absorber: every row that
keeps the relation inside the target. The verdict is spec when that specification also covers
the target, and impossible when no behaviour of the box can. When the box declares the rows it
can physically produce (producible), the specification is cut down to them, and a target only
unproducible rows reach is impossible with reason infeasible, naming those rows. With two
boxes without behaviour, such as an absorber and a new mediator, it gives the maximal pairs of
relations for them that cover the target; several such pairs are incomparable, so there may be
no weakest one. triz_weakness ranks modelled
concepts by the situations they admit (references/weakness.md).
When boxes declare feasibility (minimal rows of levels provided against levels required and
operating cost), triz_feasibility finds the minimal resource vectors by Kleene's ascent to the
least fixpoint, loops included, and judges them against the budget: feasible, infeasible
(over budget with the binding dimension, or a level no row provides), or undecided. With
trim, it decides whether the remaining boxes provide what the trim leaves them within budget,
and reports each absorber's added resources. No polynomial bound is claimed; past its caps the
call fails closed.
When boxes declare state (state, initial, and transition rows), triz_dynamics explores
every run up to a horizon. It decides whether a harm loop escalates into an unsafe set, with a
shortest trace, and whether a safe set is invariant. It also decides whether one run meets
time-separated demands within their windows. It classifies the loops' long-run behaviour as
bistable, trapped (a closed component inside the unsafe set), recurrent (one that meets it and
can recover), or oscillating. Only finite, discrete dynamics are covered.
The models link to each other. A carrier may declare levels, thresholds that read numeric
feasibility amounts as behaviour values (from 2500 N, supported); triz_feasibility then
reports each feasibility row whose amounts disagree with the box's behaviour rows, and
triz_weakness takes its acceptable set from a threshold (at_least, below) instead of a
hand-written list. triz_abstraction checks that a coarse model (few boxes, behaviour) is an
abstraction of a detailed one (many boxes, costs) under a map of boxes, ports, and carriers:
total, typed, every coarse function the image of a detailed one of its polarity class, and
every coarse harm loop the image of a detailed loop. triz_function_model takes mpv_weights
to compare a concept with its baseline over the main parameters of value only, with explicit
weights. When the 9-windows snapshots declare rows, each time carries its behaviour and
feasibility verdicts, and each change between times says how they move.
triz_nine_windows builds system-operator views, and triz_export draws a model or encodes it
as an open hypergraph. Format dot draws each box with its «role» and its typed ports, inputs
left and outputs right, rates each function by line style and colour, and adds a legend; render
it with dot -Tsvg. Format mermaid renders as is in GitHub and GitLab markdown and in many
chat clients; Mermaid has no ports, so each edge names its ports and carrier instead.
Format svg returns the picture itself, with no Graphviz needed. The server lays the model out
with elkjs: boxes left to right, ports fixed on the box sides,
and orthogonal edges. It then writes a self-contained SVG with the same conventions as dot.
Hover a box or edge to see its id. Text widths are estimated from Helvetica and Arial metrics,
so a much wider font may run past a box. elkjs (about 1.6 MB) is an optional dependency: it is
installed with triz-mcp unless optional dependencies are omitted (--omit=optional), and
without it the format answers ok: false with format-unavailable. The hosted Worker does not
offer the format. elkjs would more than double the script, it does not start on workerd as
published, and a first layout costs more CPU than a Free-plan request allows (see
src/worker.ts).
Given
compare_to, triz_function_model also reports whether the two
models share a wiring shape. Each verdict names in basis the theorem in theory/ it relies
on; a test checks that every cited name is a theorem there. Nothing is extracted from Lean:
the theorems prove the abstract facts the algorithms rest on, tests check the TypeScript
against them, and the pairing is enforced in CI (lake build --wfail, so no sorry ships).
The theorems also act as design machinery, not just citations: when triz_feasibility says
infeasible, budget_feasible_iff (a budget admits a configuration iff it lies above one of
the minimal resource vectors) is what the returned relaxation block computes — the
nondominated minimal budget raises, each with the row selection that then fits; when candidates
must be compared across resources, lifecycle figures and component counts at once,
triz_pareto returns the joint nondominated frontier with dominance witnesses, and reports
incomparable candidates as trade-offs instead of resolving them (pareto_not_total: the
componentwise order is not total, so a single ranking needs weights the caller chooses).
The structured verdicts of the
checks are label-blind: renaming ids or
changing the domain does not change them. Property tests check this, with the exclusions listed
in the theory map. That shows the kernel reads only the wiring shape, not that solutions
transfer between domains.
docs/theory-map.md states exactly
what is and is not claimed. examples/function-models/ holds a physical, a business, and two
software models. One software model has the physical model's wiring shape. Three copies of
the physical model declare box behaviour, box feasibility, and a shaft temperature, so their
trims can be decided and their heat loop's escalation classified.
Behavior contracts prune incompatible multi-port correlations before enumeration, and resource support witnesses expose their activation order. The mathematical integration map explains the checked foundations for general component synthesis and the remaining adapters. The mixed-system guide includes a runnable hardware, software and service-provider example and explains multidimensional constraints and optimization scope.
theory/ is a Lean 4 / Mathlib package that states and proves the facts the checks rely on,
with no sorry:
gluing iff every cell is satisfiable;
an edge in a strongly connected region lies on a cycle;
the componentwise order is not total;
typing survives relabelling, deletion under the no-dangling condition, gluing, and re-attachment to a same-carrier port;
restriction composes, and makes typed diagrams a presheaf on the poset of box sets;
restriction commutes with every rewrite step restricted to the subsystem, so the subsystem and system rows of the 9 windows, with two steps, form a functor from time × (box sets)ᵒᵖ to sets;
series composition of relations (Mathlib's
Relation.Comp) is monotone, and the relational trace is monotone and yanks a swap to the identity;declared behaviour has a compositional steady-state semantics (
theory/Semantics.lean): gluing open diagrams in series, with the interface fully exposed, composes their external relations; a disjoint union gives the product; feedback gives the relational trace; widening a box widens the relation. Diagrams up to their relations form a category with a faithful functor toRelCat.externalBehavioris checked against a brute-force transcription of this semantics on seeded random models and the examples, not extracted from it;a relation is the product of its projections iff it is a product at all, for two parts and for any family of parts, and for two parts iff it is a rectangle: rows (a, b) and (c, d) give the row (a, d);
series composition and the trace preserve unions, so for one unknown box the rows that keep a composite inside a target form the weakest specification (a Galois connection), and the target is reachable iff that specification's composite covers it; within the rows the box can produce, iff the specification cut down to them covers it, and a relation that reaches the target holds, for each target pair, a row of the specification that delivers it; for two unknown boxes the maximal safe pairs of relations are the formal concepts of the safe row pairs, and the target is reachable iff one of them covers it;
concepts are ordered by inclusion of the situations they admit, and a strict inclusion gives a strictly larger count;
reachability within n steps is an existential over traces, a counterexample trace is sound, a layer that adds nothing completes the reachable set, reachability is monotone in the transition rows, a closed set holds every run that enters it, from a closed set inside the unsafe set every reachable state is unsafe, and without a fixed point every return takes two steps or more;
series, parallel, and feedback composition keep feasibility monotone, Kleene's ascent reaches the least fixpoint of a finite lattice, and the co-design fixpoint is the upward closure of the feasible configurations.
Verdicts cite only the statements they use exactly; the theory map marks the others as never cited, and why.
theory/Witnesses.lean checks that none of the typing, restriction, rewrite,
behaviour-monotonicity, residual, weakness, co-design, or dynamics lemmas is vacuous. For each, a
concrete diagram, relation, or step relation meets all its hypotheses, and a counterexample shows
each hypothesis is needed. theory/SemanticsWitnesses.lean does the same for the compositional
semantics, except for the part of a diagram (sub): there only the extension hypothesis has a
counterexample, and the interface and locality hypotheses (hI, hO, hloc) have none.
Trimming is decided only for models that declare behaviour, by triz_behavior's finite
relational check, and its verdict depends on the absorber chosen. theory/ does not state
trimming as a Kan extension; the theory map says why.
pnpm schema # regenerate the JSON Schema from src/act.ts
pnpm lean:setup # theory/.lake/packages: cloned from another checkout, or fetched
(cd theory && lake build --wfail) # the same check Lean CI runs: no `sorry` shipspnpm lean:setup (scripts/lean-setup.mjs) sets up theory/.lake/packages: Mathlib and the
packages it requires, with the prebuilt oleans of the Mathlib modules the theory imports. When the
directory is missing, it looks for another worktree or the main checkout of this repository
(git worktree list) whose theory/lake-manifest.json and theory/lean-toolchain are
byte-identical, and clones its packages copy-on-write (cp -cpR on macOS APFS, cp -pR --reflink=auto on Linux), so a new worktree downloads nothing and shares the blocks on disk.
Without one, or when an imported module still has no olean, it runs lake exe cache get with the
theory's Mathlib imports, the same list as Lean CI (node scripts/lean-setup.mjs --print-imports). That command is its only network access. It prints what it did; then build.
The TypeScript test suite never runs Lean: it checks the kernel against the theorems by name
(basis) and by property tests, and Lean CI builds theory/ separately with lake build --wfail.
Optional: your own network of problems
triz_graph and triz_purpose reason over a project contradiction graph — they ship with no
data. The graph is an OTSM Network of Problems with a DIKWP purpose layer:
nodes are open contradictions; edges are
couples,blocks, ordissolves;the core conflict is the node with the most outgoing
dissolvesedges — resolving it removes the most others (the Theory-of-Constraints step);a node may carry a
contradictionin the function-model schema's PhysicalContradiction form.triz_graphchecks it and reportsirreducible,separable,no-contradiction, orinvalid; an invalid one fails closed for that node only, with its errors.Ties on
dissolvesgo first to irreducible nodes, then to unmodelled or invalid nodes, then to separable nodes, and last to nodes that are not contradictions.dissolvesstays the primary key. A node that already separates keeps its place but is flagged, because separation already gives it a resolution route;
each node's
purposenames the invariant it serves, and counts as secured only when averified_byrecord exists on the node or on a linked registry entry. No verifier, no gate — it fails closed.
examples/problem-graph.json and examples/triz-registry.json show the expected shape:
TRIZ_GRAPH=examples/problem-graph.json \
TRIZ_REGISTRY=examples/triz-registry.json \
npx tsx scripts/graph-report.mjs report.mdPoint TRIZ_GRAPH / TRIZ_REGISTRY at your own files, or place them at data/problem-graph.json
and data/triz-registry.json.
Evaluations
skills/triz-innovation/data/ carries three suites:
evals.json— hard lookup assertions (run bypnpm test) plus synthetic reasoning cases;published-case-evals.json— six problems reconstructed from CC BY MATRIZ publications. Solver prompts contain only pre-solution facts; reported diagnoses and outcomes stay in judge-only fields and are never returned bytriz_evals.
Scoring does not require reproducing the published solution — a causally stronger, testable alternative earns full credit.
Running the suites (bring your own key)
The suites ship as data; nothing calls an LLM by default. scripts/run-evals.mjs runs them
against any OpenAI-compatible endpoint and is fail-closed on a key — without
TRIZ_EVAL_API_KEY (or OPENAI_API_KEY) it exits before any network call. CI exercises it in
--dry-run mode only, which is offline and keyless. Results land in evals/results/ (gitignored)
as JSON plus a markdown report:
pnpm evals -- --suite no-recall --limit 40 # matrix-recall citation benchmark
pnpm evals -- --suite reasoning # synthetic cross-domain cases, LLM judge
pnpm evals -- --suite published --variant solver # blinded MATRIZ cases, structured variant
pnpm evals -- --dry-run --suite published # plan a run: no key, no networkTRIZ_EVAL_BASE_URL and TRIZ_EVAL_MODEL select the endpoint and model (any
OpenAI-compatible API). no-recall is the benchmark that justifies the server: a model asked
for matrix cells from memory is scored against the canonical table, and fabricated citations are
counted. With the server in the loop, the same citations are lookups — fabrication is zero by
construction.
Data provenance and licensing
The 39 parameters, 40 principles, and the core tool catalog are classical TRIZ vocabulary; the effects starter database (78 entries, all with conditional typings) contains repository-authored summaries of physics, chemistry and geometry. See the catalogue audit for corrections, additions, references and evidence gaps.
Knowledge packs separate universal measurement vocabulary from domain quantities and effects. All installed packs are used by default. Expert contributions add versioned JSON packs with attributed review status;
pnpm knowledgevalidates their union and updates hosted imports. Canonical matrix parameters remain the original 39.Eight shared interface families factor 22 named cases into 14 signatures, with 52 direct definitions giving 66 independently declared interfaces while retaining all 78 searchable entries and their case-specific evidence. Four named configurations derive their boundaries from registered multiport models; two explicit forward observations forget qualified current/force types without unit conversion. Serial recipes expand into checked constituent models through
triz_effect_setup; they need no new opaque generator. Raw pack consumers should usecompileKnowledgeto resolve contracts.triz_knowledgereports field groups separately from the 69 response and nine mechanism entries; these are modeling roles, not counts of independent physical laws.pnpm example:effects-productschecks selected contracts against a real voice-coil stage and two patent disclosures, preserving discovery and rejecting unsupported decompositions. See the validation scope.pnpm example:effects-recent-patentschecks nine 2025–2026 publications, four added response clauses, further interface sharing, and explicit state/probability limitations.Compound/clause assessments identify 15 named functions to retain as compounds, six entries needing separate clause models, and 13 coupled responses to retain. Query them with
triz_effects.assessment; missing facets remain advisory and do not change the 78-entry executable catalogue.The classical parameter audit retains every matrix id, clarifies nearby categories and normalizes Force at id 10 with the former wording retained as an alias. Runtime and schema checks protect the closed 1–39 vocabulary.
matrix.jsonwas imported from a machine-readable workbook. The underlying table is Altshuller's and widely republished. To regenerate the file from a source of your own choosing:npx tsx scripts/import-matrix.mjs <url|file.csv|file.json> [--format csv|json]Published case benchmarks are concise attributed paraphrases of CC BY publications; sources, authors, and pages are recorded per case in
published-case-evals.json.The code in this repository is MIT licensed (
LICENSE). That license covers the code and the original prose, not third-party data noted above.
Roadmap
The engine roadmap owns priorities and workstream status. Assurance requirements owns acceptance cases; the joint engineering synthesis design develops architecture, sizing and maintenance optimization. See the documentation index for current tool guides and research notes.
Publishing and distribution
The full runbook — npm release flow, the MCP Registry PR, Smithery/Glama/PulseMCP, skill registries (skills.sh, anthropics/skills, OpenAI), and promotion — lives in docs/PUBLISHING.md.
Registries
MCP Registry. server.json holds the prepared entry (name
io.github.sv/triz) for the official registry at
registry.modelcontextprotocol.io. Listing goes
through the official mcp-publisher CLI — not a PR: publish the npm package first (the registry
verifies the mcpName field inside the published package.json), then
mcp-publisher login github (device flow) and mcp-publisher publish. Full steps in
docs/PUBLISHING.md.
npm. Publish to the public npm registry (npm publish) so npx -y triz-mcp works without a
checkout. GitHub Packages also hosts npm packages (npm.pkg.github.com), but it requires
authentication even to install public packages, so it suits private or org-internal distribution
— not a public CLI.
Available Tools
51 toolstriz_absorber_assignmentsC
Enumerate all compatible absorber endpoints and complete assignments under one finite contract and a shared work budget. Separate per-function successes do not establish joint sufficiency.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | Yes | ||
| model | Yes | ||
| contract | Yes | ||
| max_work | No | ||
| max_states | No | ||
| implementation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that enumeration is joint and constrained by one finite contract and a shared work budget, which is meaningful beyond the schema, but it does not state read-only status, determinism, behavior on budget exhaustion, or what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and constraint, with no filler. The second sentence is dense but earns its place as a joint-sufficiency caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter solver with nested objects and no output schema, the description is far too thin. It omits required inputs, budget and limit semantics, and expected results, leaving most completeness burden on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%, and the description mentions only 'contract' and 'work budget' in passing. It does not explain the model, trim, implementation, max_work, or max_states parameters, so an agent must inspect nested schema details to understand required inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action—enumerate compatible absorber endpoints and complete assignments—and adds a constraint about one finite contract and shared work budget. However, 'absorber endpoints' and 'complete assignments' are domain jargon, and the description never distinguishes itself from sibling tools such as triz_implementations or triz_feasibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit when-to-use or when-not-to-use guidance and names no alternatives. The warning that separate per-function successes do not establish joint sufficiency is a correctness caveat, not routing guidance for an agent choosing among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_abstractionA
Check that a coarse function model (few boxes, e.g. with declared behaviour) is an abstraction of a detailed one of the same system (many boxes, e.g. with costs and feasibility) under a typed map: detailed box → coarse box (several may share one; a box left out is outside the abstraction), per box detailed port → coarse port (default: the same id and side), detailed carrier → coarse carrier (default: the same id). A function between two mapped ports is mapped; one between unmapped ports of boxes with the same image is hidden inside that coarse box; one between boxes with different images and an unmapped port is forgotten. Four checks: total (every mapped port's carrier has an image, and every mapped function has an image coarse function with the mapped endpoints, the mapped carrier, and the same polarity class: negative = harmful or excessive, or not), typed (each mapped port lands on a port of the same side whose carrier is its carrier's image, of the same layer; typed_map), wires (every coarse function is the image of a mapped detailed function of its class), harm loops (every coarse harm loop is the image of a detailed one: each harmful or excessive coarse function on it has such a preimage whose object reaches its performer along mapped and hidden functions; cycle_map, with the detailed cycle as witness). Verdict abstraction or not-an-abstraction with the failing checks. Also reports the functions hidden, forgotten, and left out (harms listed apart), the detailed harm loops the coarse model hides or loses, whether reachability among mapped boxes passes to the coarse model (reach_map, when nothing is forgotten), and, where a coarse box with behaviour has one preimage box with feasibility, whether that box's feasibility amounts read through the coarse carriers' levels fall in the coarse behaviour. When either model declares flows, each detailed flow's runs inside the mapped boxes are sent through the map like a merge and matched step by step against the coarse flows of the image carrier (flows.images), and coarse flow steps no detailed step maps to are listed (flows.unbacked); flows do not change the verdict. Fails closed on a model that does not type-check and on map ids that do not exist. Whether the coarse rows are true of their preimages is substantiated outside the kernel.
| Name | Required | Description | Default |
|---|---|---|---|
| map | Yes | ||
| coarse | Yes | The coarse model of the same system | |
| detailed | Yes | The detailed model |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does most of it: it discloses the four checks by name, the verdict shape, that extra reports (hidden/forgotten/left out, harm loops, reach_map, feasibility, flows) accompany the verdict, that flows do not change the verdict, and that it fails closed on ill-typed models or nonexistent map ids. Missing only cost/determinism or error-payload details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body is a single wall of multi-clause sentences with heavy parentheticals (the initial 'e.g. with declared behaviour' vs 'with costs and feasibility' framing is buried). Naming output keys inline (typed_map, cycle_map, reach_map, flows.images, flows.unbacked) is useful, but the density makes skimming hard; some phrasing, such as 'negative = harmful or excessive, or not', is needlessly convoluted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with deeply nested models, no output schema, and no annotations, the description covers what an agent needs: the mapping defaults, the four checks, the verdict and failing checks, the auxiliary reports, the flows behavior, and the failure mode. Return-value detail is spelled out precisely because no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 67% schema coverage, the schema already documents the AbstractionMap sub-fields with the same defaults ('same id and side', 'a box left out is outside the abstraction') that the description restates. The description does add some semantics by tying map entries to consequences (unmapped ports become hidden, differing images plus an unmapped port become forgotten), but most map mechanics duplicate the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and relation: 'Check that a coarse function model ... is an abstraction of a detailed one of the same system under a typed map'. The typed-map framing plus the named verdicts ('abstraction or not-an-abstraction with the failing checks') make it distinguishable from verification-adjacent siblings such as triz_adequacy or triz_isomorphism without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: one infers this is the tool for validating a coarse model against a detailed one, and the closing sentence scopes it ('Whether the coarse rows are true of their preimages is substantiated outside the kernel'). No sibling is named as an alternative and no precondition (e.g. models must type-check, provenance status) is given up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_adequacyC
Check nonblocking and acceptable outputs over required operating situations under an explicit scope. Equality of two partial relations does not establish adequacy.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| scope | No | whole | |
| acceptable | Yes | ||
| max_states | No | ||
| required_inputs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden of behavioral disclosure. It adds one cryptic caveat about partial relations, but does not state whether the tool is read-only, what it returns, whether it requires a complete model, or how it reports failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with no filler sentences. Its brevity, however, comes at the cost of clarity: the second sentence is cryptic and the first relies on undefined jargon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a five-parameter, nested-model analysis tool with no annotations and no output schema, yet the description gives only a high-level and ambiguous notion of what is checked. It is not complete enough for an agent to invoke the tool correctly without opening the schema and guessing at intent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0%, and the description does little to compensate. It vaguely gestures at 'explicit scope', 'acceptable outputs', and 'required operating situations', but does not explain the roles of model, acceptable, scope, max_states, or required_inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a checking activity over outputs and operating situations, which is more specific than the name alone. However, 'nonblocking' is undefined and the description does not distinguish this check from siblings like triz_behavior or triz_feasibility, leaving the agent to infer what 'adequacy' really covers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention of prerequisites, and no comparison with the many sibling analysis tools. The phrase 'under an explicit scope' hints at a condition but does not tell the agent when this tool should be chosen over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_behaviorA
Compose declared box behaviour (carrier values, box behavior rows) into the model's external relation: boundary inputs (unwired input ports) to deliverables (product input ports fed by a non-harmful function). The default upstream scope composes boxes that can reach a deliverable and explicitly assumes omitted boxes accept everything; scope whole composes every box, including downstream and disconnected constraints. full_relation returns all rows within the search cap. Feedback loops compose by the relational trace, so every consistent steady state counts, and the steady states are listed. factorisations lists each composed box whose relation is the product of its projections onto two or more groups of ports, with the finest groups, in box order (decided:false past a per-box cap): segment it into them, or unions of them, and each part keeps its projection. The hint describes the declared rows, not a physical split, and changes no verdict. This is steady-state semantics, not dynamics. With compare_to, decide whether the model (a concept, e.g. a triz_transform result) has the baseline's input→deliverable relation; pass segment's or take_out's boxMap as box_map. trim is shorthand: perform the trim as triz_transform does and compare the result with the model. Verdict preserved; changed (a lost deliverable, or a counterexample input with the differing outputs and which relation contains which); or undecided (reason missing-behavior: the boxes that can reach a deliverable and declare no behaviour; reason no-steady-state: neither model has a steady state at any input, so equal empty relations say nothing). With joint_boxes and weakest_spec, select every composed box without behavior and compute one coupled residual over their combined ports. The joint rows are a single relation: independentSafe checks whether independently declaring their per-box projections stays inside the target, factorizes checks whether their product equals the joint relation, and a counterexample explains unsafe coupling. The exact search is bounded by max_states; row_costs are unsupported in this mode. With weakest_spec (and compare_to or trim), give the weakest box specification (residual in Rel) for the one box of the concept that can reach a deliverable and declares no behaviour, against the same target: spec, every row of that box whose composite stays inside the target, with preserves:true when declaring it gives exactly the target (any behaviour that does is contained in it); impossible, when the spec's composite misses part of the target (an uncovered input is given; no behaviour of that box gives the target, and the empty relation, which always stays inside, is never read as preserving) or a deliverable is lost; undecided for three or more unknown boxes when joint_boxes is omitted (several-holes), missing baseline behaviour, an empty target, or past the cap (state-cap). When the box to specify declares producible rows (what it can physically produce), the spec is the residual cut down to them: spec when that still covers the target (producible.infeasible lists the residual rows left out); impossible with reason infeasible when the residual covers the target but its producible rows do not, with requiredInfeasible giving, per missing target pair, the residual rows that deliver it, none producible (every relation that gives the target contains one of each); impossible with reason not-covered when the residual itself does not cover. With exactly two boxes without behaviour (boxes), a pair of relations stays inside the target iff every pair of rows, one of each, does, and the maximal such pairs are the formal concepts of the safe row pairs: spec lists those whose composite covers the target (specs, each declared and re-checked to give exactly the target; every pair that gives the target lies inside one), with weakest:true when there is one and weakest:false when several are incomparable; impossible (not-covered) when none covers, with each maximal pair's uncovered input (pairs); undecided (concept-cap) past the cap on concepts. Producible rows cut each box first; impossible with reason infeasible then means some pair over all rows (wouldGive) would give the target. Fails closed on ill-typed behaviour, an ambiguous or mismatched box_map, inputs whose values differ between the models, and past the state cap. With row_costs in the one-hole mode, cheapestExtension gives an exact least-cost set of safe nonproducible rows to add, using the complete target relation and explicit integer costs, or reports an undecided capped search; it is not-applicable (target-not-covered-by-residual) when the residual itself misses the target, and row_costs fail with invalid-row-costs wherever no one-box residual is computed; the Boolean verdict is unchanged. The verdict holds for the relations as declared; substantiating them, the absorber's or mediator's first, is outside the kernel.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Boxes to trim; with it, decide whether the trim preserves the external behaviour | |
| model | Yes | The model to compose (the concept, when compare_to is given) | |
| scope | No | Default upstream assumes omitted boxes accept all received values; whole composes every declared box constraint | |
| absorb | No | With trim: function wire id → absorber output port; default: the first absorber triz_trim lists | |
| box_map | No | With compare_to: concept box id → baseline box id, applied to deliverables and boundary inputs; pass a triz_transform segment or take_out boxMap here | |
| row_costs | No | With one-hole weakest_spec: explicit cost of every safe nonproducible row that covers an unmet target pair. cheapestExtension finds the least total cost set of additional rows, charging each once. Costs share one caller-chosen unit; no cost is inferred | |
| compare_to | No | Baseline model; with it, decide whether the model preserves the baseline's input→deliverable relation | |
| max_states | No | Cap on boundary valuations and search states (default and maximum 100000) | |
| joint_boxes | No | With weakest_spec: select every composed box without behavior as one coupled joint relation | |
| effect_hints | No | ||
| weakest_spec | No | With compare_to or trim: give the weakest specification for the one box, or the maximal pairs of relations for the two boxes, that can reach a deliverable and declare no behaviour, against the same target | |
| full_relation | No | Return every relation row within the search cap; default output is truncated for display | |
| max_cost_search | No | With row_costs: cap on exact extension-search nodes (default and maximum 100000); a capped search makes no optimality claim |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so extensively: it discloses steady-state semantics, the default upstream scope assumption, search caps, fail-closed conditions, and undecided reasons such as missing-behavior, no-steady-state, and concept-cap. It also explains what verdicts mean and how modes change behavior, which is well beyond what structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single enormous paragraph of densely compressed jargon with no headings, bullets, or clear progression between modes. Although the first sentence is front-loaded with purpose, the remaining text is difficult to scan and repeats mode conditions in a way that undermines readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 13-parameter tool with no output schema, the description is thorough: it covers default behavior, mode-specific verdicts, failure reasons, caps, and producible-row handling. Some specialized terms such as relational trace and factorisations are left opaque, but the overall informational coverage is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 92%, so the baseline is 3. The description adds real meaning beyond the schema by explaining parameter interactions and provenance, e.g. that box_map should be a triz_transform segment or take_out boxMap, that row_costs are unsupported in joint_boxes mode, and that trim is shorthand for the triz_transform trim procedure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: compose declared box behaviour into the model's external relation, defined as boundary inputs to deliverables. It distinguishes the tool from triz_transform and triz_trim only through mode-specific references, not through an overall statement of when this tool is preferred over its siblings such as triz_behavior_refinement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit mode conditions, e.g. 'With compare_to', 'trim is shorthand', and 'With joint_boxes and weakest_spec'. However, it never names an alternative tool to use instead or states when this tool should not be used, leaving tool selection largely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_behavior_refinementC
Compose two WHOLE models and check exact equality or directional inclusion under explicit boundary and deliverable value maps. Complete relations are checked; no physical transfer is inferred.
| Name | Required | Description | Default |
|---|---|---|---|
| coarse | Yes | ||
| inputs | Yes | ||
| outputs | Yes | ||
| detailed | Yes | ||
| max_states | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose meaningful semantics: complete relations are checked and no physical transfer is inferred, which usefully constrains interpretation of the result. It does not say whether the operation is pure/read-only, what happens on a failed check, what the response format is, or how max_states affects behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with the core comparison operation front-loaded, and every clause carries some semantic weight. The unexplained capitalized 'WHOLE' and dense jargon reduce immediate readability but do not constitute wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex five-parameter tool with enormous nested model schemas, no annotations, and no output schema, two sentences are far too thin. The description omits how detailed and coarse models are supplied, how inputs/outputs map to boundary endpoints, what max_states guards against, and what the tool returns on success or failure. It gives conceptual framing but not enough for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%, despite the nested definitions being richly documented. The description only vaguely gestures at the parameters with 'two WHOLE models' and 'boundary and deliverable value maps', leaving it unclear which arguments are the models, what the inputs/outputs arrays contain, and what max_states controls. It does not compensate for the top-level schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: compose two whole models and check exact equality or directional inclusion under boundary and deliverable value maps. This lets an agent identify it as a model-comparison/refinement tool rather than a model builder. However, it never contrasts itself with siblings like triz_behavior, triz_feasibility, or triz_build_model, and the phrase 'WHOLE models' is left unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no alternatives named. The description does not say when an agent should choose this over triz_behavior or triz_feasibility, nor does it explain that models must be reviewed before analysis. The single clarifying remark about complete relations is behavioral, not usage-oriented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_bond_graphB
Assign effort/flow causality on declared energy subsystems by bounded propagation and search; report derivative causality and direct algebraic dependency cycles, and export constitutive equation structure. No numeric simulation.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| max_steps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose meaningful traits: the analysis runs by 'bounded propagation and search' (explaining the max_steps bound) and explicitly excludes numeric simulation. It does not say whether the model is read-only or mutated, whether results are deterministic, or what happens when no ordering can be established.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the verb and scope front-loaded, and zero filler. It is compressed to the point of opacity in places ('derivative causality'), but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool taking a very large nested model with no output schema and no annotations, the description is only modestly complete. It covers what is computed and the simulation boundary, but not the shape of the returned report, error conditions on malformed energy declarations, or how the analysis depends on the declared bond elements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0% for the two top-level parameters, and the description does not explain max_steps at all. However, 'on declared energy subsystems' adds a real constraint beyond the schema (the Carrier.energy block is optional in the schema), telling the agent what the model must contain for this check to be meaningful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Assign effort/flow causality on declared energy subsystems') plus its outputs ('report derivative causality and direct algebraic dependency cycles, and export constitutive equation structure'). It distinguishes itself from function-rating siblings by scoping to energy subsystems and causality, though the jargon ('derivative causality', 'constitutive equation') assumes domain fluency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool applies to models whose carriers are explicitly energy subsystems with effort/flow pairs. The clause 'No numeric simulation' gives a useful when-not boundary, but no prerequisites (e.g. energy carriers must be declared) and no routing to or from siblings like triz_graph, triz_behavior, or triz_feasibility are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_build_modelA
Build a typed function model from an interaction table: components with stable ids, names and roles, and subject/action/object interactions with explicit carrier descriptors and polarities. Generates readable, stable ports and wire ids: each interaction gets its own input port on its object, in:<carrier>:<subject>:<action>, so no input port is fed by two functions (no fan-in, no extensive-fan-in); each subject gets one output port per carrier it sends, out:<carrier>, shared by its functions on that carrier (fan-out: one shared level when intensive, the sum of the demands when extensive); each function is the wire wire:<subject>:<action>:<object>:<carrier>. Each part is percent-escaped (':' as %3A, '%' as %25), so distinct tuples never share an id. Validates the result, runs lints, and returns a bounded completeness report of unrecorded component pairs, isolation and product reach. Ratings and behavior are never inferred. Optional flows reference component and carrier ids from the table.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | No | ||
| flows | No | ||
| domain | Yes | ||
| system | No | ||
| hierarchy | No | ||
| components | Yes | ||
| interactions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full behavioral burden and does substantial work: it discloses the deterministic id/port generation scheme, percent-escaping to guarantee id uniqueness, that the result is validated and linted, that the completeness report is 'bounded', and that 'ratings and behavior are never inferred'. What is missing is whether anything is persisted, whether the call is idempotent, and what happens on validation/lint failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded correctly with the build action and the model shape, but the middle is a single very long sentence packed with id-scheme and fan-in/fan-out encoding detail that reads more like internal spec than selection guidance. Every clause is technically informative, yet the density and length work against quick scanning for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, deeply nested tool with no annotations and no output schema, the description covers the build pipeline (construct → validate → lint → bounded completeness report) and the id scheme well, but says nothing about domain, hierarchy, system, or draft, and does not sketch the shape of the returned report. Adequate but with clear gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0%, so the description must compensate, and it does: it explains the semantic content of components (stable ids, names, roles), interactions (subject/action/object plus carrier descriptors and polarities), and flows ('Optional flows reference component and carrier ids from the table'). Domain, system, hierarchy and draft are not covered, but the core modeling payload — the parts an agent must get right — is explained in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Build a typed function model from an interaction table', and enumerates the constituents (components with ids/names/roles, subject/action/object interactions with carrier descriptors and polarities). It is clearly a model-construction tool rather than an analysis/query tool, though it never names a sibling (e.g. triz_function_model, triz_flow, triz_graph) to make the boundary explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this tool over the many adjacent siblings (triz_function_model, triz_flow, triz_graph, triz_expand_hierarchy) and no prerequisites or exclusions. Usage is only implied by the phrase 'from an interaction table', leaving the agent to infer the routing decision from the catalog alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_component_catalogueA
Return the general identity/fanout catalogue (default), or source:knowledge for registered multiport and stateful model templates. Explicit parameter bindings and implementation declarations configure finite behavior and dynamics; no behavior is inferred from names. effects selects named realizations and their required output observations; mappings explicitly selects directed refinement observations, never unit casts or global aliases. Pass the returned catalogue to triz_component_search.catalogues for bounded configuration discovery. Conditions remain visible hypotheses.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| models | No | ||
| parent | No | ||
| source | No | general | |
| effects | No | Named configuration effect ids; return their constituent models and wiring, never an opaque catalogue entry | |
| bindings | No | Parameter id to finite values, levels, layer and allocation semantics; registry SI and quantity tokens cannot be changed | |
| mappings | No | Explicit forward boundary-observation ids; no reverse mapping or automatic type alias | |
| conditions | No | ||
| declarations | No | Model id to explicit implementation rows; no physical behavior is inferred | |
| state_parameters | No | Allowed internal state meanings; stateless models remain candidates. Never inferred from names |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully states that no behavior is inferred from names and that conditions remain visible hypotheses, but it does not describe the return shape, read-only nature, failure modes, or any permission or rate-limit constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the core purpose, but the remaining sentences are dense and run together with undefined domain jargon such as 'directed refinement observations' and 'global aliases'. The content is relevant, but the structure makes it harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with ten parameters, nested objects, no output schema, and no annotations. The description covers the catalogue-source distinction and several selection parameters, but it does not fully explain the remaining parameters or the returned catalogue's structure, leaving meaningful gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description explains several important parameters: source, effects, mappings, bindings, and declarations. However, it leaves query, models, parent, and state_parameters largely or entirely unexplained, so it only partially compensates for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return the general identity/fanout catalogue (default), or source:knowledge...' It distinguishes the default general catalogue from the knowledge-source catalogue, though the jargon 'identity/fanout' is not explained and sibling differentiation is limited to mentioning triz_component_search.catalogues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use the default versus source:knowledge, explains that effects and mappings select named realizations and directed observations, and instructs the caller to pass the returned catalogue to triz_component_search.catalogues for bounded discovery. It does not explain when not to use the tool or what to do if no catalogue is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_component_searchC
Automatically construct components, chains and multi-input networks from finite typed and reusable domain-independent catalogues, including general, with explicit type bindings. Search component choices and wiring up to instance/component/work bounds; optional whole-model contracts check finite behavior, acceptable values, harms and resources. Complete absence applies only to the declared bounded catalogue; capped search is undecided.
| Name | Required | Description | Default |
|---|---|---|---|
| flows | No | Explicit complete replacement of declared flows | |
| limit | No | ||
| model | Yes | Retained interface and components; catalogue ports reference its declared carrier ids | |
| remove | No | ||
| targets | Yes | ||
| contract | No | ||
| max_work | No | ||
| catalogue | No | ||
| resources | Yes | ||
| catalogues | No | Reusable catalogues, including general, with explicit type-parameter/carrier bindings; domains/tags do not gate compatibility | |
| max_states | No | ||
| replace_wires | No | ||
| implementation | No | ||
| max_components | No | ||
| require_all_resources | No | Require every listed resource output to supply at least one new wire; candidates always report unusedResources |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses bounded-search semantics — completeness applies only to the declared bounded catalogue, and capped search is undecided — plus the optional contract checks, but says nothing about whether the operation is read-only, how candidates are returned, or what errors to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loads the main search/synthesis purpose before adding bounds and contract details. The wording is dense and jargon-heavy but not padded; every sentence carries relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 15 parameters, nested objects, and no output schema. The description conveys the core intent and some search semantics, but it does not explain the required model/resources/targets input shape or what the search actually returns, leaving substantial gaps for an agent to close.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 27% across 15 parameters, so the description must compensate. It adds meaning for catalogues/bindings, instance/component/work bounds, and contract checks, but does not explain required parameters such as model, resources, targets, or the roles of flows, remove, replace_wires, implementation, and require_all_resources.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific activity — constructing and searching component choices, chains, and multi-input networks from typed catalogues — and names the inputs (catalogues, bounds, contracts). It does not explicitly contrast itself with sibling tools such as triz_component_catalogue or triz_synthesize, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool searches and that contracts are optional, but gives no explicit when-to-use guidance, no prerequisites, and no alternatives. An agent must infer from the purpose alone whether to call this versus catalogue management or model synthesis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_conservationC
Check declared consumptive versus shared-level supply constraints for explicit units. Consumptive branches sum; shared intensive requirements use max. No physical law is inferred from labels.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes | ||
| inputs | Yes | Available amount, or shared intensive level | |
| outputs | Yes | Simultaneous requested amounts, or minimum intensive levels | |
| max_work | No | ||
| operation | Yes | ||
| allow_loss | No | ||
| quantity_kind | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it only discloses the aggregation semantics ('consumptive branches sum; shared intensive requirements use max') plus a label caveat. It never says whether a violation raises an error or returns a diagnostic, whether any state is written, or what the caller receives — critical unknowns for a checking tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, and the core constraint-checking purpose is front-loaded before the aggregation rules. It is efficient, though the density of unexplained terms like 'consumptive' and 'shared intensive' borders on cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no annotations, no output schema, and 29% schema coverage, the description is far from sufficient. An agent still cannot determine the meaning of the operation enum, what allow_loss permits, or how a failure manifests, which are exactly the gaps the description should close.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29% across 7 parameters, so the description must compensate and largely does not. It hints at unit/quantity_kind semantics through 'explicit units' and 'consumptive versus shared', but leaves operation (splitter/merge), max_work, allow_loss, and the port semantics of inputs/outputs entirely undefined in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Check') and a specific resource ('declared consumptive versus shared-level supply constraints'), scoped to 'explicit units'. An agent can tell this is a supply/demand feasibility check rather than a modelling or synthesis tool, though it never names a sibling to differentiate from and leans on domain jargon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus siblings like triz_feasibility or triz_adequacy, and no preconditions or exclusions. The closing sentence 'No physical law is inferred from labels' is a caveat about interpretation, not guidance about invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_dynamicsB
Costed transition rows add exact per-dimension cycle mean ranges, rational potential bounds and rechecked witnesses on closed components; max_cost_work caps these. Bounded dynamics of a function model whose boxes declare state, initial, and transition rows (state, inputs) → (next state, outputs): each such box is a nondeterministic Mealy machine (a lens with a residual is one, with the residual as state); boxes with behavior are stateless. Boxes compose synchronously along the wiring: wires are instantaneous, memory lives only in declared state, and a loop through stateless boxes resolves within a step as in triz_behavior. From the initial states, over the boundary inputs you allow at each time (default: every value), every run is explored breadth first up to horizon steps; the result lists the reachable states, the fixed points among them, and the runs that block (a state with no row for its inputs). unsafe decides escalation: reachable (with a shortest trace), unreachable (the reachable set stopped growing, so at no horizon), or unreachable-within-horizon. safe decides invariance: violated (shortest trace), invariant, or invariant-within-horizon. Without inputs the configurations are finite, so each verdict also carries unbounded, decided at every horizon by continuing the search past the horizon within the same state cap: reachable or violated (with the time and, past the horizon, a shortest trace), unreachable or invariant (with completeAfter), or undecided (cap-exceeded past the horizon, or blocked); the bounded verdict beside it is unchanged. A blocked state meets a target by its state conditions; a port condition there leaves the verdict undecided (reason blocked), never safe. separation takes two to four demands, each a target set with a time window, and decides whether one run visits each within its window (separation in time along a trajectory, Principle 15): realizable with a witness trace, unrealizable (a demand never met, or no single run meets them all), or undecided (a blocked run might meet them all). Without inputs, loops classifies the closed components (no step leaves them) of the reachable graph of the global states of boxes that declare transition, explored without a horizon up to the cap, from the initial states and every state meeting safe's state conditions: bistable (fixed points in two or more closed components), trapped (a closed component every configuration of which meets unsafe: an absorbing trap, with a shortest trace into it), recurrent (a closed component that meets unsafe and also holds a safe configuration: the run can recover but never leaves it, with a shortest trace into it and the safe configuration), oscillating (a cycle and no fixed point, with its period and one cycle); each closed component reports unsafe (it meets the set) and allUnsafe (it lies inside it); classes can coexist, and 'none' means no closed component was found within the cap. Behavior rows are never read as transitions. Every trace is re-checked against the declared rows. Fails closed on ill-typed rows, unknown targets, and past the state cap. Verdicts hold for the rows as declared; continuous dynamics, convergence rates, and control are not modelled.
| Name | Required | Description | Default |
|---|---|---|---|
| safe | No | Invariance: does every reachable configuration meet every condition? | |
| model | Yes | ||
| inputs | No | Entry t lists the values allowed at time t on unwired input ports; an unlisted port takes every value. Omit for every value at every time | |
| unsafe | No | Escalation: is a configuration where every condition holds reachable? e.g. [{ box: 'bearing', port: 'friction', values: ['high'] }] | |
| horizon | No | Steps to explore (times 0 to horizon); default: the length of inputs minus one, else 20 | |
| initial | No | Box id → initial states, overriding the box's initial | |
| max_states | No | Cap on configurations and search states (default and maximum 100000) | |
| separation | No | Separation in time: does one run visit each demand's target set within its window? | |
| max_cost_work | No | Exact cycle-cost work cap; past it meanCost is undecided |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden and does so extensively: it discloses breadth-first exhaustive exploration, the default horizon (inputs length minus one, else 20), the state cap, that it fails closed on ill-typed rows, unknown targets, and past the cap, that every trace is re-checked against declared rows, and that continuous dynamics, convergence rates, and control are not modelled. It also explains the `unbounded` post-horizon continuation of each verdict and what 'undecided' means. The return shape is only described in prose fragments (no output schema exists), which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single wall of run-on clauses with no headings, lists, or paragraph breaks, making the four distinct analyses (reachability, invariance, separation, loop classification) hard to locate. The lead sentence is the least useful content yet is front-loaded, and heavy jargon ('rational potential bounds', 'rechecked witnesses on closed components') is never grounded. Length is justified by tool complexity, but the lack of structure is not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, deeply nested model-checking tool with no output schema, the description covers the semantics of the main verdicts and the failure/limit behavior well. It is weaker on the return contract: fields like `completeAfter`, `unbounded`, `allUnsafe`, and meanCost appear only in passing, and the opening sentence about costed transition rows is never explained, so an agent cannot fully anticipate the response. Adequate but with clear gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents most parameters and the baseline is 3. The description does add real meaning in places — that `inputs` defaults to every value at every time, that `max_cost_work` caps exact cycle-cost work and leaves meanCost undecided, that `separation` takes two to four demands with non-overlapping windows, and that a blocked state meets a target by state conditions but a port condition there yields undecided. These additions are genuine but scattered through dense prose rather than tied clearly to each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it explores the bounded dynamics of a function model whose boxes declare `state`, `initial`, and `transition` rows, doing breadth-first search from the initial states up to `horizon` and returning reachable states, fixed points, and blocking runs. It separates itself from `triz_behavior` ('a loop through stateless boxes resolves within a step as in triz_behavior'; 'Behavior rows are never read as transitions'), so an agent can tell the two apart. The opening sentence about 'costed transition rows' and 'rational potential bounds' is opaque and sits before the actual purpose, slightly hurting first-read clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through what each parameter decides — `unsafe` for escalation, `safe` for invariance, `separation` for a trajectory meeting timed demands, `loops` for closed-component classification — which gives a reader a fair idea of when to reach for the tool. However there is no explicit 'use this when / do not use this when' statement and no direct routing to `triz_behavior`, `triz_feasibility`, or `triz_lifecycle` for the adjacent questions they answer. The prohibition on reading behavior rows as transitions is the only explicit boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_effect_chainsA
Search bounded typed effect chains from declared resources to a required quantity; every wiring diagram passes checkModel. Named configurations are conditional summaries marked requiresExpansion; use triz_effect_setup to expand their model nodes and context inputs. Ranking: length, conditions met, field changes, declaration order. Capped search is undecided. Physical sufficiency is not claimed.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | ||
| limit | No | ||
| model | No | ||
| output | Yes | ||
| effects | No | ||
| max_steps | No | ||
| resources | No | ||
| conditions | No | ||
| min_length | No | Minimum number of effects; use 1 to search nonempty chains between the same input/output type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses several important behaviors: every wiring diagram passes checkModel, named configurations require expansion, ranking criteria, that capped search is undecided, and that physical sufficiency is not claimed. It does not explicitly state read-only status or return format, but the caveats are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the core action and then adds validation, expansion, ranking, and limitation notes. Every sentence conveys useful information, though the jargon-heavy style could be more scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 9 parameters, nested objects, no annotations, no output schema, and very low schema description coverage, the description leaves key gaps. It covers purpose and behavioral caveats but does not explain how to use the bounded-search parameters or what the result structure looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% across 9 parameters, so the description must compensate. It adds meaning to several parameters indirectly (bounded search, resources/output quantities, conditions, length, field changes, declaration order, and requiresExpansion), but it does not explain specific parameters such as k, limit, max_steps, or the structure of effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search bounded typed effect chains from declared resources to a required quantity.' It also distinguishes itself from triz_effect_setup (expansion) and implies a contrast with physical sufficiency analysis, though it does not explicitly name other search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one clear alternative routing: use triz_effect_setup to expand named configurations. However, it does not explicitly state when to use this tool versus triz_effects, triz_route, or other search/analysis tools, leaving usage context mostly implied by the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_effect_insertB
Insert a selected typed effect chain between existing output/input ports, with explicit replacement of an existing supplier. Return the checked model, added carriers, replayable rewrite and effect citations/conditions. Behavior and resource rows are only caller declarations; physical sufficiency is not inferred.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| from | Yes | ||
| chain | Yes | ||
| flows | No | Explicit complete replacement of flows when their path changes | |
| model | Yes | ||
| polarity | No | TRIZ function rating: useful at the right level, useful but insufficient, useful but excessive, or harmful | |
| conditions | No | ||
| declarations | No | One explicit implementation per effect: finite behavior or state/initial/transition rows, with optional resource declarations; row ports are in/out and no rows are inferred | |
| replace_wire | No | ||
| intermediate_layers | No | Explicit layer of each new intermediate carrier; otherwise uniquely matching existing carrier declarations are reused | |
| intermediate_carriers | No | Existing intermediate carrier ids, in chain order; preserves declared finite values/levels for implementation rows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses the return contents (checked model, added carriers, replayable rewrite, citations/conditions) and the key caveat that behavior and resource rows are merely caller declarations with no inferred physical sufficiency. It does not describe validation failures, permission/auth needs, or what exactly the replacement destroys beyond the supplier wire.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences that front-load the core action and then state the return and the non-inference caveat. No filler, though the caveat sentence is somewhat dense and could be split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema and no annotations, the definition covers purpose and the critical 'declarations only, no sufficiency inference' nuance. It leaves large gaps on how intermediate carriers/layers and declarations interact with the chain, which an agent would need for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 45%, so the description needs to compensate. It clarifies the from/to endpoints as existing ports and replace_wire as an explicit supplier replacement, but says nothing about declarations, flows, intermediate_layers, intermediate_carriers, polarity, or conditions, leaving several of the 11 parameters undocumented here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource — 'Insert a selected typed effect chain between existing output/input ports' — and adds a distinguishing detail ('explicit replacement of an existing supplier'). It implies a contrast with the chain-selection siblings (triz_effect_chains, triz_effect_setup) but never names them, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'selected typed effect chain', suggesting this runs after a chain has been chosen elsewhere. There is no explicit when-to-use/when-not statement and no routing to triz_effect_setup or triz_implementations, leaving the choice among effect tools unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_effectsA
Search effects from all installed knowledge packs by text or exact typed input/output quantity, field and output SI dimension. Filter kind for modeling role, form for definition storage, or assessment for named functions to retain as responses/compounds or split into distinct models. Assessments describe the whole named function; the selected typing may cover only one facet. Unregistered facets are advisory and never become generators or executable recipes. Optional domain filtering includes universal effects; pack and category filters are exact. Results retain named cases, sources, limitations and review status. Composite recipes expose their steps and expand through triz_effect_setup; chain search uses their constituents.
| Name | Required | Description | Default |
|---|---|---|---|
| si | No | ||
| form | No | Direct declaration, shared family interface, serial recipe, or named multiport configuration | |
| kind | No | Declared modeling role, not a claim of scientific novelty | |
| pack | No | Restrict to one installed pack id | |
| field | No | ||
| input | No | ||
| query | No | Function keywords to search for, e.g. 'store heat' or 'sense magnetic field' | |
| domain | No | Restrict to this domain plus universal effects; omit to search all packs | |
| output | No | ||
| category | No | Restrict results to one category, e.g. physical, chemical, geometric, algorithmic | |
| assessment | No | Advisory retain-response, retain-compound or split-models decision; does not alter executable contracts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does disclose non-obvious behavior: unregistered facets are advisory and 'never become generators or executable recipes', assessments characterize the whole named function while the selected typing may cover only one facet, and domain filtering implicitly includes universal effects. It also states what results retain (named cases, sources, limitations, review status), which is the kind of return-shape context annotations would otherwise provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and primary search axes are front-loaded, which is good, but the middle sentences are compressed to the point of opacity ('Unregistered facets are advisory and never become generators or executable recipes') and mix filter semantics with modeling theory. Most sentences carry real information, yet several require re-reading to extract actionable meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, all-optional search tool with no output schema, the description covers discovery axes, filter exactness, result contents and the relationship to expand/chain siblings, which is close to complete. The remaining gap is the unexplained typed input/output string format, which the schema also leaves bare.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 64% with 11 parameters, and the description compensates for the undocumented ones: it explains 'text or exact typed input/output quantity', SI dimension matching, and that pack and category filters are exact while domain is inclusive of universal effects. The 'input' and 'output' parameters are only covered obliquely through the phrase 'exact typed input/output quantity', which leaves the typed-string format itself unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ('Search effects from all installed knowledge packs') plus the search axes (text, typed input/output quantity, field, SI dimension), which is far beyond a restatement of the name. It is dense domain jargon, but an agent can tell this apart from triz_effect_setup or triz_effect_chains because those are named as downstream/adjacent operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied through the filter catalogue (kind for modeling role, form for storage, assessment for retain/split decisions) and through routing hints ('expand through triz_effect_setup', 'chain search uses their constituents'). There is no explicit when-to-use/when-not-to-use statement or a direct statement of which sibling to pick for a given intent, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_effect_setupC
Build a composable function model from registered effect or recipe ids using explicit quantity, SI and carrier-layer declarations. Serial recipes expand to their constituent effects; named configurations expand to actual model nodes and expose context inputs. Use node_declarations[expanded-step/node] for constituent implementations and context_values[expanded-step/input] alongside finite boundary availability. Ordinary declarations correspond to expanded effect steps. Optional parameter bindings supply finite values/levels; boundary availability/acceptance and per-effect behavior, state/initial/transition and resource rows remain caller declarations. Return a checked rewrite and provenance. Missing conditions remain hypotheses.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Registered effect or recipe ids in composition order; recipes expand to at most 12 constituent effects in total | |
| domain | Yes | ||
| system | No | ||
| bindings | No | Parameter id to explicit finite values, levels, carrier layer or allocation semantics; registry quantity/SI types are retained | |
| boundary | No | Explicit finite source availability and product acceptance; requires corresponding binding values | |
| conditions | No | ||
| declarations | No | One implementation declaration per expanded constituent effect, in order; recipes never hide implementation rows | |
| context_values | No | Expanded step/context id to explicit finite availability; required alongside boundary for configuration context inputs | |
| node_declarations | No | Expanded step/node id to implementation declaration for named configurations; no opaque replacement rows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that recipes expand, that validation happens ('Return a checked rewrite and provenance'), and that missing conditions remain hypotheses. But it leaves unclear whether the tool persists anything in the registry, what validation failures look like, and what permissions or side effects exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, but the remaining text is dense, jargon-heavy, and sometimes cryptic (e.g., 'Ordinary declarations correspond to expanded effect steps'). Several clauses repeat schema semantics rather than adding new guidance, reducing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a highly complex tool with nine parameters, nested objects, and no output schema. The description covers the core build operation and return value, but it omits enough parameter semantics and behavioral detail that an agent would need to rely heavily on the schema. For this complexity level, the description is not sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 61%, so the schema already documents many parameters. The description adds some meaning by clarifying that node_declarations and context_values correspond to expanded steps and that boundary/behavior/state rows remain caller declarations. It does not explain other parameters such as system, conditions, or domain, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Build a composable function model from registered effect or recipe ids.' It explains recipe and configuration expansion, which clarifies scope. However, it never names or contrasts sibling tools such as triz_build_model or triz_function_model, and the jargon (SI, carrier-layer, expanded-step) obscures the purpose for an unfamiliar agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives internal parameter guidance ('Use node_declarations[expanded-step/node]...'), but it never says when to choose this tool over alternatives or when not to use it. There is no explicit context, prerequisite, or exclusion that would guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_evalsC
Return the domain-neutral TRIZ lookup regressions and cross-domain reasoning cases.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. 'Return' implies a side-effect-free read, but it does not say whether results are static fixtures or computed, how large the payload is, whether there is pagination or filtering, or how failures/regressions are represented. For a tool with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb, with no filler or redundancy. It is lean but also thin; nothing is wasted, though little is conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only place the agent could learn what comes back. It gestures at 'regressions' and 'reasoning cases' without describing their structure, count, or format, which leaves the return contract undefined for a tool whose entire purpose is returning data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The single sentence adds no parameter-level meaning, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Return' plus the resource 'TRIZ lookup regressions and cross-domain reasoning cases' identifies the tool as a retriever of evaluation fixtures, but 'regressions' is jargon that could mean test cases, known-failure records, or regression results. It is distinguishable from siblings like triz_matrix or triz_principle (which expose TRIZ content proper), but the reader must guess what an 'eval' actually is here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when an agent should call this versus the other 50 TRIZ tools, no mention of whether it is for validation, self-testing, or calibration, and no prerequisites or exclusions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_expand_hierarchyA
Substitute one box's declared inner model into its parent through its checked input/output interface. Returns a typed model and fresh box, wire and flow id maps. Preserves inner box costs, feasibility, states and transitions, and standalone inner flows. Parent flow occurrences require explicit routes and checked boundary connections; media need explicit mappings. Inner budgets, weights and contradictions require opt-in global-intersection, global-merge and append-renamed policies. Product-identity changes fail closed. Expand nested boxes one at a time before requesting flat behavior, dynamics or resource verdicts. triz_nine_windows reads a selected box's inner model as its subsystem view.
| Name | Required | Description | Default |
|---|---|---|---|
| box | Yes | Box whose inner model is substituted into the parent | |
| media | No | ||
| model | Yes | ||
| routes | No | ||
| policies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it states what is preserved (inner costs, feasibility, states, transitions, standalone inner flows), what the caller must supply (explicit routes for parent flow occurrences, checked boundary connections, media mappings), what is opt-in (budget/weights/contradictions policies), and the fail-closed behavior on product-identity changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is front-loaded with the core operation, then layers preservation, requirements, policies and ordering. Every sentence carries distinct information, though several are densely packed with domain jargon that an unfamiliar agent may need to unpack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex five-parameter mutation tool with no annotations and no output schema, the description covers return value ('a typed model and fresh box, wire and flow id maps'), invariants, required inputs and failure mode. Only the precise shape of routes and the full set of validation failures remain undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (essentially just `box`), so the description must compensate, and it does explain the roles of `routes` (parent flow occurrences), `media` (explicit mappings) and `policies` (global-intersection, global-merge, append-renamed). It stops short of explaining route structure such as path, occurrence, entry and exit, so the compensation is substantial but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a precise verb and resource: substitute one box's declared inner model into its parent through its checked input/output interface. It distinguishes itself from triz_nine_windows, which is explicitly described as a reader of the same inner model, and from flat analysis tools it says to call afterward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives sequencing guidance ('expand nested boxes one at a time before requesting flat behavior, dynamics or resource verdicts') and names triz_nine_windows as the read-only alternative. It does not state explicit preconditions for when this tool should not be used, such as a box lacking an inner model, but the ordering and alternative are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_exportA
Export a function model that type-checks: 'dot' gives Graphviz DOT (each box a table: name and «role» in a role-coloured header, input ports left and output ports right with their carriers, open ports in italics; functions as edges between ports, harmful red, insufficient dashed, excessive bold; flows dotted blue; a legend of what occurs; render with dot -Tsvg), 'mermaid' gives a Mermaid flowchart that GitHub, GitLab, and many chat clients render without tools (Mermaid has no ports, so each edge names its out port, in port, and carrier), 'svg' gives a self-contained SVG picture with dot's conventions, laid out by ELK with orthogonal edges, for when Graphviz is not at hand (stdio server only: it needs the optional elkjs package; the hosted server answers ok:false with format-unavailable), 'hypergraph' gives an open hypergraph (ports as carrier-typed vertices, boxes and functions as hyperedges, unwired ports as the interface). A model that fails the type-check is not exported (ok:false with the errors).
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| format | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the burden well: it discloses the type-check gate, the failure return (ok:false with the errors), the svg-only optional dependency on elkjs, and the hosted-server behavior (ok:false with format-unavailable). It does not say the operation is non-mutating/read-only or whether large models are truncated, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is front-loaded, but the body is one run-on sentence built from stacked parentheticals and semicolons, making the per-format guidance hard to scan. It is information-dense rather than padded, but a bulleted or per-format breakdown would read far better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description explains only the failure envelope (ok:false with errors / format-unavailable), never what a successful call returns — a string of DOT text, an SVG document, a JSON wrapper? For a tool whose whole job is producing an artifact, that is a material gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is 0%, so the description has to carry the format enum — and it does, explaining what each of dot/mermaid/svg/hypergraph yields and its constraints. The 'model' parameter is left entirely to the (rich) $ref schema, so half the parameter surface is unaddressed in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export a function model') and enumerates the four output artifacts by name, so an agent knows exactly what it produces and how it differs from siblings like triz_function_model or triz_graph.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Selection guidance is given per format: mermaid for clients that render without tools, svg 'for when Graphviz is not at hand', hypergraph for an open interchange structure, dot for the canonical picture. It also names the precondition (the model must type-check) that gates any use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_feasibilityA
Monotone co-design feasibility (Censi 2015) from declared box feasibility rows: each row provides a level per output port against the levels it requires per input port and an operating cost, read monotonically (providing less never needs more; more resources never hurt). The product boxes' rows are the demand. An output port feeding several functions meets the largest of their demands on an intensive carrier (the default: one shared level) and their sum on a carrier declared quantity: extensive. Composes the rows along non-harmful functions, including feedback loops, by Kleene's ascent from nothing demanded to the least fixpoint, and returns the minimal resource vectors (fixed costs of every box plus the chosen rows' operating costs), each with its rows and demanded levels. Verdict against the model's budget: feasible; infeasible (reason over-budget, with the binding dimensions every minimal vector exceeds, or unprovidable, naming the port no row can serve); or undecided (missing-feasibility, no-budget, unbudgeted, circular-resource-support). A bounded source-support closure from zero provision must ground a selected affordable witness; steadyState reports the separate balance verdict. With trim and absorb (as triz_behavior takes them), apply the trim and decide the trimmed model; the baseline is solved only to report each absorber's added resources. When carriers declare levels (thresholds reading amounts as declared values), levels reports each feasibility row, of a box that also declares behaviour, whose named amounts read as values no matching behaviour row gives (value-mismatch) or at inputs the behaviour rules out (no-behavior-row). Fails closed on ill-typed or dominated rows, a requirement no non-harmful function supplies, an extensive input fed by several functions (extensive-fan-in: model a merge box), and past the caps. No polynomial bound is claimed. The verdict holds for the rows as declared; the absorber's new harms are not modelled. An infeasible verdict also carries relaxation: over-budget results list the nondominated minimal budget raises that would make the model affordable, each with its row-selection witness (budget_feasible_iff), and the cheapest raise of any single dimension that suffices alone; unprovidable results list the smallest per-port capability raises. Raises advise; the budget stays the caller's declaration.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Boxes to trim; with it, decide whether the remaining boxes provide what the trim leaves them within budget | |
| model | Yes | ||
| absorb | No | With trim: function wire id → absorber output port; default: the first absorber triz_trim lists | |
| max_antichain | No | Cap on antichain elements per step (default and maximum 1000) | |
| max_iterations | No | Cap on Kleene steps (default and maximum 1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it enumerates the three verdict shapes with their reason codes (over-budget, unprovidable, missing-feasibility, no-budget, unbudgeted, circular-resource-support), lists the conditions under which it fails closed (ill-typed or dominated rows, extensive-fan-in, caps), and states scope caveats (no polynomial bound claimed, absorber harms not modelled, budget stays the caller's declaration). It also describes the `relaxation` payload for infeasible verdicts and the separate steadyState balance verdict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause is substantive, but the whole description is one dense paragraph of nested parentheticals and specialized vocabulary, with no structure separating purpose, inputs, verdicts, and caveats. It is front-loaded with the core purpose, yet the readability cost is real for an agent parsing it in one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a highly complex tool with no output schema and no annotations, the description covers the return payload (minimal vectors with rows and demanded levels, verdicts, relaxation, levels, steadyState) and the failure modes in detail. It is nearly complete, though a clearer enumeration of the returned fields would close the remaining gap left by the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3, but the description adds real meaning: it explains that `trim`/`absorb` behave as in triz_behavior and that the baseline is solved only to report each absorber's added resources, and it ties `max_antichain`/`max_iterations` to the 'past the caps' failure. It does not restate the numeric bounds, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific computation and its source data: monotone co-design feasibility over declared box `feasibility` rows, producing minimal resource vectors and a budget verdict. It distinguishes itself from siblings by referencing triz_trim and triz_behavior for the sub-operations it borrows. The density of jargon (Kleene ascent, intensive/extensive carriers) keeps it from a clean 5, but an agent can tell what it computes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through conditional clauses: use `trim`/`absorb` to decide a trimmed model, and `levels` reporting activates only when carriers declare `levels`. There is no explicit statement of when to call this instead of adjacent analysis tools such as triz_pareto or triz_conservation, and no when-not guidance beyond the fails-closed error conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_flowB
Flow analysis (router entry 16) over the model's declared flows: each an ordered path of the boxes a carrier passes through, in series, which functions do not record (two valves in series both act on the water, not on each other). Per flow: its steps (consecutive boxes, with the functions of the flow's carrier between them; declaredOnly counts the steps no function joins); bottleneck candidates (the performer of an insufficient, excessive, or harmful function that carries the flow's carrier and touches the path: a resistance-like output on the flow, at its position); accumulation candidates (a box where the steps of every flow of the carrier converge, with at least two predecessors and fewer successors, or a last box inside the engineered system, role tool or mediator, that no flow of the carrier continues from); leak candidates (a function on the carrier from a box on the path to an environment or supersystem box off it); loops (a box that recurs on the path, with the cycle between occurrences); and the harm loops that meet the path. Every item is a structural candidate to substantiate, not a finding. Boxes consecutive on a flow are adjacent for triz_transform merge. A model that fails the type-check, flows included, fails closed.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | A model that declares flows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does add real context: the fail-closed type-check, and the caveat that outputs are candidates rather than findings. It also discloses the internal definitions used for bottlenecks, accumulation, leaks, and loops. What it omits is the practical behavior an agent needs: whether this is read-only, whether it mutates the model, and the concrete shape of the returned result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a single sprawling sentence per clause with deep parenthetical nesting ('the performer of an insufficient, excessive, or harmful function that carries the flow's carrier and touches the path: a resistance-like output on the flow, at its position'), which is hard to parse for an agent. Definitions of accumulation, leak, and loop candidates are buried in a run-on list rather than structured. Substantial rewriting into short labeled lines would earn a much higher score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns, and it does enumerate the result categories (steps, declaredOnly, bottleneck, accumulation, leak, loop, harm loops). It also covers the failure mode (fail-closed type-check). The gap is that it never gives the concrete response structure or how these candidates are keyed per flow, leaving the agent to infer the shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% on a single `model` parameter, so the schema already documents the input; baseline 3 applies. The description does add interpretive meaning about what a flow path is and how series order differs from function interaction, plus the constraint that boxes consecutive on a flow become adjacent for merge. That is useful but is about model semantics rather than the parameter itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Flow analysis ... over the model's declared `flows`', and immediately distinguishes it from function wiring ('each an ordered path of the boxes a carrier passes through, in series, which functions do not record'). It even names the sibling interaction with triz_transform merge, so an agent can tell what is unique here. It does not, however, contrast itself against the many other triz_* checks beyond that single adjacency note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicit usage is clear (call it on a model that declares flows), and 'Every item is a structural candidate to substantiate, not a finding' tells the agent how to treat results. But there is no explicit when-to-use versus when-not, no statement of prerequisites such as the model needing to pass the type-check before other analysis, and no routing to sibling tools such as triz_weakness or triz_transform beyond the adjacency aside.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_function_modelA
Check a TRIZ function model written as a typed wiring diagram (boxes with typed ports, wires carrying one carrier and a polarity) and analyse it: harm loops (closed loops containing a harmful or excessive function, with witness cycles), an ideality profile per resource dimension (never summed; a scalar ratio only with explicit weights), separation checks for embedded physical contradictions, and, given compare_to, a componentwise baseline-vs-concept comparison plus an isomorphism check: whether the two models share a wiring shape ignoring every id and label (a bijection preserving roles, port sides, shared carriers, wiring, ratings, and costs; decided:false if the bounded search runs out). With mpv_weights (and compare_to), comparison.mpv compares the two models over the main parameters of value only: the named cost dimensions or 'harmful', componentwise and by the explicit weighted sum, listing the other axes on which they differ; a lost deliverable still decides, and no weight is ever filled in. Each verdict cites the theorem in theory/CategoricalTriz.lean it relies on (basis). Any dangling, mis-directed, or mistyped wire, or an invalid embedded contradiction, fails closed with ok:false. Harm loops and separation read the outer wiring and the model's own contradictions only: when boxes declare an inner model, incompleteHierarchy lists them, the note says their inner loops and contradictions are not analysed, and the isomorphism check carries incompleteHierarchy: true; run triz_expand_hierarchy on each first. Loops are hypotheses about mechanism to substantiate, not findings.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | The model to analyse (the concept, when compare_to is given) | |
| box_map | No | Concept box id → baseline box id, applied before comparing deliverables; pass the boxMap a triz_transform segment, take_out, or cheap_copy returns | |
| compare_to | No | Baseline model of the same system with stable box ids | |
| mpv_weights | No | With compare_to: the main parameters of value, each a cost dimension or 'harmful' with your explicit weight. Adds comparison.mpv: the comparison over those axes only, componentwise and by the weighted sum (lower is better), with the differing axes it ignores. Never filled in, and never used for the model's scalar ratio |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses failure behavior ('fails closed with ok:false' for dangling, mis-directed, or mistyped wires), bounded-search behavior ('decided:false if the bounded search runs out'), nested-model limitations ('incompleteHierarchy lists them... their inner loops and contradictions are not analysed'), and that 'no weight is ever filled in.' It also states that each verdict cites its theorem basis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph with no wasted sentences; each clause describes a distinct analysis or constraint. It is front-loaded with the core purpose, but the wall-of-text format reduces readability for a complex tool. Structure could be improved with bullets or sentence breaks, though the content earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, lack of output schema, and lack of annotations, the description is remarkably complete. It covers the analyses performed, failure modes, nested-model caveats, comparison behavior, isomorphism semantics, mpv_weights handling, and the 'basis' citation for each verdict. An agent has enough information to invoke it correctly and interpret key outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: it explains that box_map is 'applied before comparing deliverables' and should come from triz_transform outputs, that compare_to triggers a 'componentwise baseline-vs-concept comparison plus an isomorphism check,' and that mpv_weights limits comparison to named cost dimensions or 'harmful' with explicit weighted sums and no auto-filled weights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check a TRIZ function model written as a typed wiring diagram ... and analyse it.' It enumerates the analyses performed, including harm loops, ideality profile, separation checks, baseline-vs-concept comparison, and isomorphism check, making the tool's scope clear. It explicitly distinguishes from triz_expand_hierarchy for nested models, but does not route away from overlapping siblings like triz_isomorphism or triz_separate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one explicit alternative: 'when boxes declare an `inner` model ... run triz_expand_hierarchy on each first.' It also frames harm loops as 'hypotheses about mechanism to substantiate, not findings,' clarifying interpretive use. However, it offers no when-not guidance or explicit comparison to siblings that perform standalone isomorphism or separation checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_global_separationB
Decide exact finite global compatibility of allowed tuples on overlapping variable contexts, with a witness or complete empty join. Pairwise projection compatibility alone is insufficient; no cohomology is computed.
| Name | Required | Description | Default |
|---|---|---|---|
| regions | Yes | ||
| max_work | No | ||
| variables | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose that the result is exact, finite, and either a witness or a complete empty join, plus that no cohomology is computed. It omits behavioral details such as how max_work affects the computation, what happens when work limits are exceeded, and the precise return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences with no filler, and the core operation is front-loaded. The second sentence usefully rules out a naive pairwise approach and clarifies that cohomology is not involved, though the density of jargon may reduce immediate clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex constraint-satisfaction-style tool with no annotations, no output schema, and zero parameter description coverage. The description explains the high-level decision and result type but leaves out parameter meanings, work-limit behavior, and sufficient return-format detail for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters. The phrase 'allowed tuples on overlapping variable contexts' loosely maps to regions and allowed tuples, but the description never explains the variables parameter or the max_work parameter, so it does not compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: deciding exact finite global compatibility of allowed tuples over overlapping variable contexts, returning either a witness or a complete empty join. This is more than a restatement of the name, though it relies on specialized jargon and does not explicitly distinguish itself from the sibling triz_separate tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is needed by warning that pairwise projection compatibility alone is insufficient, which gives a condition for use. However, it does not state when to choose this tool over siblings such as triz_separate, nor does it describe prerequisites or exclusions beyond the pairwise warning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_graphA
Optional project extension: analyse an OTSM Network of Problems (contradiction graph) and its verifier-backed purpose gates. A node may carry a PhysicalContradiction; each is checked by separationCheck (irreducible, separable, no-contradiction, or invalid, which fails closed for that node), and the core-conflict ranking breaks ties on dissolves in favour of irreducible nodes and flags a top node that already separates. Requires a project graph via TRIZ_GRAPH; not part of the neutral skill core.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose meaningful traits: the separationCheck outcomes, that invalid results fail closed for that node, and that tie-breaking favours irreducible nodes while flagging a top node that already separates. It stops short of describing the return payload or any cost/pagination behavior for an analysis call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, which is good, but the text is heavy noun-stacking ('verifier-backed purpose gates', 'core-conflict ranking breaks ties on dissolves') that slows parsing. The final sentence, on TRIZ_GRAPH and the neutral core, is worth keeping; some of the check-outcome detail could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an analysis tool with no output schema, the description explains internal verdicts but not what the analysis returns or how results are shaped, which is the main gap. The prerequisite and fail-closed behavior are covered, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The only parameter-adjacent information is environmental ('Requires a project graph via TRIZ_GRAPH'), which is a useful invocation precondition but is not schema-level semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'analyse an OTSM Network of Problems (contradiction graph)'. The subject matter is unambiguous, though it does not contrast itself with adjacent siblings like triz_separate, triz_purpose, or triz_global_separation, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real precondition ('Requires a project graph via TRIZ_GRAPH') and an explicit opt-in framing ('Optional project extension... not part of the neutral skill core'). However, it never says when to choose this over the many sibling analysis tools, leaving alternative selection implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_implementationsB
Evaluate named complete implementations against one whole-model behavior, adequacy, declared-harm and resource contract. Never splice behavior and cost from different modes; provenance remains declared.
| Name | Required | Description | Default |
|---|---|---|---|
| contract | Yes | ||
| max_work | No | ||
| max_states | No | ||
| alternatives | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add real value beyond the schema: it discloses that cross-mode splicing of behavior and cost is checked for, and that provenance stays user-declared rather than verified. It says nothing about whether the call mutates anything, what the verdict format is, or cost/limits of evaluation, leaving notable gaps for an annotation-free tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with no filler, and the verb-plus-resource statement is front-loaded before the constraint. The phrasing is dense with domain jargon, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool whose schema is this deep (nested models, contracts, evidence, provenance) with no annotations and no output schema, two sentences are thin: the return shape is never described, the meaning of 'modes' and 'provenance remains declared' is left implicit, and the effort-bounding parameters are ignored. The rich nested schema covers much structural semantics, but the description does not fill the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%, so the description must compensate, and it partly does: 'one whole-model behavior... and resource contract' maps onto the contract object's target/acceptable/allowed_harms/budget fields, and 'named complete implementations' maps onto alternatives[].id. The max_work and max_states parameters, which bound evaluation effort, are not mentioned anywhere in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Evaluate') and a specific resource ('named complete implementations'), and lists the four contract dimensions being checked (whole-model behavior, adequacy, declared-harm, resource). It could be sharper about how this differs from siblings such as triz_adequacy or triz_subsystem_contract, which also sound like contract checks, so sibling differentiation is not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this tool versus triz_adequacy, triz_evals, or triz_subsystem_contract, and no preconditions (e.g. that models must be reviewed rather than draft) are given in the description. The only guidance is a prohibition ('never splice behavior and cost from different modes'), which constrains how to call it rather than when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_import_sourceA
Local-only import of supplied BOM, OpenAPI, Quint, Lean or Julia inputs. Prefer modelingtoolkit-json and agents-json exports from instantiated Julia models; raw julia is a partial static fallback. Does not fetch references, execute source or load checkpoints. Returns a draft interaction table and model with embedded unconfirmed provenance; review all ratings and assumptions before analysis. Source-code outlines are partial syntactic references, not verified causal or finite behavior models.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | ||
| source | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does so well: it discloses no network fetching, no execution, no checkpoint loading, and that output is a draft with unconfirmed provenance requiring review. It stops short of stating whether the import persists state or is idempotent, which matters for a tool that produces a 'model'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight sentences, each doing distinct work: purpose, format preference, exclusions, return shape, and a caveat on fidelity. Purpose is front-loaded and no sentence is filler despite the dense technical vocabulary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does explain the return ('draft interaction table and model with embedded unconfirmed provenance'). For a tool with a nested source object and eight format variants, the remaining gap is the meaning of the source identifier and whether prior imports are affected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It maps format families (BOM, OpenAPI, Quint, Lean, Julia) onto the enum and hints that modelingtoolkit-json/agents-json are the preferred values, but the nested 'source.id' field is undocumented in both schema and description, and 'text' semantics come only from the schema's byte-limit note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and scope: 'Local-only import of supplied BOM, OpenAPI, Quint, Lean or Julia inputs.' The formats and the 'local-only' qualifier let an agent distinguish it from siblings like triz_export and triz_review_import without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit format preference ('Prefer modelingtoolkit-json and agents-json exports from instantiated Julia models; raw julia is a partial static fallback') and clear exclusions ('Does not fetch references, execute source or load checkpoints'). It does not name a sibling alternative for the excluded cases, so routing to a different tool is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_isomorphismC
Verify or search a bijection preserving wiring and declared semantic annotations; search continues past incompatible automorphisms and returns undecided on its global budget.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| target | Yes | ||
| mapping | No | ||
| profile | No | all | |
| max_steps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description does real work by disclosing non-obvious runtime semantics: the search continues past incompatible automorphisms instead of failing fast, and it can return 'undecided' when the global budget is exhausted. It still omits the shape of a successful result (the found mapping) and any statement of side effects or cost beyond the budget.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no padding, and the disambiguating detail (search continues past incompatible automorphisms, undecided on budget) is placed after the core purpose rather than buried. The telegraphic phrasing is efficient, though slightly compressed for a schema this large.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool with deeply nested objects, no annotations, and no output schema, the description leaves too much uncovered: the meaning of `profile`, the structure of `mapping`, and the possible result statuses are all missing. Only the budget/undecided behavior is adequately explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level: `source`, `target`, `mapping`, `profile`, and `max_steps` carry no descriptions, and `mapping`'s six required sub-fields (boxes, ports, wires, carriers, dims, values) are undocumented. The description touches 'wiring' and 'global budget' (max_steps) but never explains `profile`'s enum (behavior/dynamics/feasibility/flows/all) or what each mapping section must contain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific operation and resource: 'verify or search a bijection preserving wiring and declared semantic annotations', which tells an agent this is a structure-preserving mapping check between two models. It does not name or contrast any sibling (e.g. triz_transform, triz_rewrite_pair, triz_abstraction), so routing between them still requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening 'verify or search' hints at two modes but never states the trigger — that supplying `mapping` verifies and omitting it searches. There is no when-to-use guidance, no prerequisites, and no named alternative among the many triz_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_knowledgeC
List installed universal and domain knowledge packs, provenance, review status, explicit quantity parameters, shared interface families, multiport/stateful models, directed boundary observations and definition counts. Taxonomy reports selected typing roles, field groups and advisory retain/split assessments of whole named functions; assessment groups can cover more than the selected typing. Fields supply no response contract and counts do not measure independent physical laws. Uses all packs by default. A domain filter includes universal definitions; counts and taxonomy describe all installed packs. These parameters are separate from the canonical 39 matrix parameters; domain mappings never invoke the matrix automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search quantity, model and boundary observation definitions | |
| domain | No | Optional domain plus universal definitions; omit to use all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses useful traits such as the default all-packs behavior, domain-filter inclusion of universal definitions, that taxonomy assessments are advisory, and that the tool does not automatically invoke the matrix. It does not clearly describe read-only safety or response behavior, and its statement that fields supply no response contract is confusing rather than clarifying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, jargon-heavy run-on that mixes purpose, return content, taxonomy caveats, default behavior, and matrix separation into a few long sentences. It is not well structured or front-loaded for an agent trying to quickly determine what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter listing tool with no output schema and no annotations, the description should clearly explain what the agent will receive and how to interpret it. It instead offers a sprawling list of possible concepts and an odd disclaimer that fields supply no response contract, leaving the output shape and practical usage insufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents that query searches definitions and domain is optional and includes universal definitions. The description reinforces the default all-packs behavior and the universal inclusion rule, but adds little beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List installed universal and domain knowledge packs' plus provenance, review status, models, observations, and counts, so the broad purpose is inferable. However, the long list of heterogeneous outputs and taxonomy caveats makes it hard to tell exactly what the tool returns, and it does not clearly distinguish itself from sibling tools such as triz_tool_catalog or triz_matrix beyond a separate note about canonical matrix parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states defaults and filter behavior, including that all packs are used by default and a domain filter includes universal definitions. It also clarifies that these parameters are separate from the canonical 39 matrix parameters and that domain mappings do not invoke the matrix automatically, but it provides no explicit when-to-use guidance or alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_lifecycleA
Solve finite declared maintenance actions by exact rational average-cost equations under explicit per-dimension or weighted objectives. Include declared per-state holding costs once per decision step. Return stationary policy, gain, bias, occupancy and availability; box-local availability uses the request acceptable list, not global states. Undeclared probabilities return T3 ranges; unsupported multichain cases and caps are undecided.
| Name | Required | Description | Default |
|---|---|---|---|
| box | No | ||
| model | Yes | ||
| weights | No | ||
| max_steps | No | ||
| acceptable | No | Acceptable states for availability reporting. Box-local calls default to an empty list; model-level calls default to model.lifecycle.acceptable. | |
| derive_prior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does much of it: exact rational arithmetic, holding cost charged once per decision step, the full return payload, box-local availability reading the request's acceptable list rather than global states, T3 ranges for undeclared probabilities, and undecided multichain/cap cases. It never states that this is a pure computation with no side effects, which is the main remaining gap for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, none wasted, with the purpose front-loaded and the return values following. The prose is jargon-dense ('exact rational average-cost equations', 'T3 ranges') and would benefit from one plain-language gloss, but the density is information, not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a solver over a deeply nested model schema with no output schema, the description does supply the return values and key numerical guarantees, which is the bulk of what an agent needs. It still leaves unexplained which model fields are mandatory (lifecycle.states versus box.state/actions), how the box parameter selects a subproblem, and what max_steps and derive_prior do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description must compensate. It does clarify two parameters well — weights as per-dimension versus weighted objectives, and acceptable as the box-local availability list overriding the global list — and it implicitly explains box scoping. But max_steps and derive_prior are never mentioned in either the schema or the description, leaving those inputs opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it solves finite declared maintenance actions as an average-cost problem and returns a stationary policy with gain, bias, occupancy, and availability. That is far more concrete than a restatement of the name. It does not name any sibling (e.g. triz_queue, triz_feasibility) that an agent should choose instead, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool applies when maintenance actions and per-state holding costs have been declared on the model or on a box. There is no explicit 'use this when X, use triz_queue/triz_feasibility when Y' routing, and no stated prerequisites such as model must be reviewed. The closing note about multichain cases and caps is a limitation, not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_matrixA
Look up the canonical contradiction matrix for an improving and worsening engineering parameter. Blank and diagonal cells fail closed; never guess a recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| improving | Yes | Parameter to improve (1-39) | |
| worsening | Yes | Parameter that worsens (1-39) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does disclose a real behavioral trait: blank and diagonal cells fail closed rather than returning a fabricated recommendation. That tells an agent how to interpret empty results and discourages hallucinated principles. It does not describe the successful return payload (presumably principle IDs) or how to map those IDs to principles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and followed by the failure-mode caveat; nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter lookup with full schema coverage and no output schema, the description covers purpose, failure semantics, and an anti-guessing rule. The remaining gaps—what the successful result contains and a pointer to triz_parameter for obtaining valid parameter IDs—are minor but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented with their 1-39 range in the schema, so the baseline is 3. The description confirms the semantic roles ('improving' vs 'worsening' engineering parameter) but adds no guidance on where valid parameter numbers come from, which would be the only meaningful addition here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Look up the canonical contradiction matrix') and names the two inputs (improving/worsening engineering parameter), which is enough to separate it from sibling lookups like triz_principle or triz_parameter. It stops short of naming triz_matrix_multi as the multi-pair alternative, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the input signature: use this when you have one improving parameter and one worsening parameter. The 'never guess a recommendation' warning is useful behavioral guidance but is not a when-to-use/when-not-to-use rule, and no alternative tool (e.g., triz_matrix_multi) is named for multi-pair queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_matrix_multiA
Multi-parameter contradiction lookup: every (improving x worsening) matrix cell with the principles aggregated by how many cells recommend each (ties broken by mean position). Use when a conflict involves several parameters on either side; per-cell detail is returned so nothing is hidden. All-blank or diagonal-only results fail closed like triz_matrix.
| Name | Required | Description | Default |
|---|---|---|---|
| improving | Yes | Parameters to improve (1-39), e.g. [9, 14] | |
| worsening | Yes | Parameters that worsen (1-39), e.g. [25, 33] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses the aggregation rule (count of recommending cells), the tie-break (mean position), that per-cell detail is returned, and the fail-closed behavior on all-blank or diagonal-only results. What is missing is any indication of permissions or cost, though for a read-only matrix lookup that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the operation and its aggregation rule, with no filler. The middle 'nothing is hidden' clause is slightly promotional but does convey per-cell transparency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must explain the result, and it does describe aggregation, tie-breaking, and per-cell return. The main gap is the shape of the returned data and what 'mean position' refers to, but the conceptual model is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented as integer arrays of 1-39 with examples, so the baseline is 3. The description reinforces the cross-product semantics of improving x worsening but adds no format or edge-case detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-plus-resource: a multi-parameter contradiction lookup over the (improving x worsening) matrix, with principles aggregated. That distinguishes it from the singular triz_matrix sibling by the 'multi-parameter' qualifier, though it never states the distinction outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit selection rule: 'Use when a conflict involves several parameters on either side.' The alternative for a single-pair lookup is only implied through the name and the 'like triz_matrix' aside, not spelled out as a routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_nine_windowsB
System operator (9 windows) over function models: for past, present, and future, the subsystem view (restriction to the boxes you name, with crossing functions as its boundary), the system view, and the supersystem view (the tool and mediator boxes, or the boxes you list, collapsed into one black box; hidden harmful functions are listed). Each view reports its boxes, function counts, and harm loops. Present is required. Past and future are snapshots with stable box ids, or transitions: triz_transform operations applied in order (past_to_present needs past and must reach present; present_to_future must reach future if given, or derives it). A transition that fails or does not reach its snapshot fails closed. Each transition is reported as one net rewrite step, its part inside the subsystem (which takes the earlier subsystem view to the later one), whether it stays within the subsystem, and the boundary functions it cuts and adds. When the snapshots declare behaviour or feasibility, each time's system view carries its verdicts (system.verdicts) and each change between times says how they move (changes[].verdicts): behaviour compared as triz_behavior compare_to does, weakness ranked with acceptable, and feasibility, changed only when both sides are decided; a failure there never fails the grid. When the snapshots declare flows, the verdicts carry each flow's triz_flow candidates, and each change lists the flows added, removed, and re-routed and the candidates each flow gains or loses; a transition must reach the snapshot's flows too, and flowsChanged lists the flows it changes. Missing windows are reported as prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| past | No | ||
| future | No | ||
| system | No | The collapsed system box for the supersystem row; default boxes: every tool and mediator | |
| present | Yes | ||
| subsystem | Yes | Box ids to zoom into for the subsystem row | |
| acceptable | No | As triz_weakness takes it: with declared behaviour, rank each pair of consecutive times by the situations they admit | |
| transitions | No | Transformation sequences linking the times, as triz_transform operations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well: it discloses that present is required, that transitions fail closed, that transition results are reported as net rewrite steps, that verdicts are carried when behaviour or feasibility is declared, and that missing windows are reported as prompts. It does not explicitly state whether the tool is read-only or whether it mutates the model, which is a notable omission for an analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense block with long semicolon-heavy sentences and no clear front-loaded summary. All content is relevant to a complex tool, but the structure makes it hard to scan and the most important invocation guidance is buried. It could be substantially tightened and organized without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex seven-parameter tool with no output schema and no annotations, the description is fairly complete: it covers required inputs, transition failure semantics, view outputs, verdict carry-over, flow handling, and missing-window prompts. It does not provide a full example or state read/write safety, but the core complexity is addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, so the description needs to add meaning, and it does: it explains past and future as snapshots or transitions, subsystem as a restriction to named boxes, system as the collapsed tool/mediator boxes, and acceptable as triz_weakness-style ranking. The transitions and verdict behaviour are described in prose beyond the schema. Some parameter details remain implicit, but the key semantics are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: a system operator over function models covering past, present, future, and subsystem/system/supersystem views. It references related tools such as triz_transform, triz_behavior, and triz_flow, but does not give a concise, front-loaded statement of what the tool returns overall. The purpose is clear enough for an agent to identify it, though the density makes it less immediately distinguishable from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description focuses on mechanics and input semantics rather than when to use this tool versus alternatives. It says present is required and describes optional snapshots and transitions, but does not explicitly say 'use this when' or 'prefer triz_transform instead when...'. There is only implied usage from the system-operator framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_parameterA
Get a canonical TRIZ engineering parameter (1-39). Omit id to list all 39. Entries include alternate labels, interpretation guidance and nearby categories to distinguish where recorded. These historical matrix categories are separate from typed domain quantities.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Parameter number 1-39; omit to list all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does disclose useful content-level behavior ('alternate labels, interpretation guidance and nearby categories') and clarifies that these are historical matrix categories rather than typed quantities, which is real added context. However, it omits any statement about whether the lookup is read-only/cached, and 'where recorded' is vague about what the entry actually contains in edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and range, then the list mode, then entry contents. The phrase 'nearby categories to distinguish where recorded' is awkward and slightly hard to parse, which is the only real drag on an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter lookup with no output schema, so the description's summary of what entries contain (labels, interpretation guidance, categories) does the work a return-value spec would otherwise do. It also flags the conceptual distinction from typed quantities. Minor gap: no statement on whether all 39 entries are returned in full or summarized when id is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already documented as 'Parameter number 1-39; omit to list all'. The description's 'Omit id to list all 39' restates the schema rather than adding syntax or semantics beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get a canonical TRIZ engineering parameter (1-39)') and states the list-all mode, so the agent knows exactly what is retrieved. It also draws a boundary against 'typed domain quantities', which helps separate it from other knowledge lookups, though it never names the closest sibling (triz_principle) or triz_matrix explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does give one concrete usage rule: omit id to list all 39. That is guidance on invocation mode rather than on tool selection. Nothing says when to reach for this versus triz_principle, triz_matrix, or triz_knowledge, so an agent must infer routing from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_paretoA
Rank finite candidate designs jointly over declared metric vectors: which candidates no other matches on every metric and beats on one (the frontier), which are dominated and by whom, and which frontier pairs trade one metric against another. Compare what the kernel already produced — minimal resource vectors from triz_feasibility, lifecycle gain and availability from triz_lifecycle, component counts from triz_synthesize or triz_component_search, declared costs — or any finite comparable numbers. Per-metric direction: minimize (default) or maximize. Incomparable candidates are reported as trade-offs, never resolved (pareto_not_total: the componentwise order is not total), and weights, when given, only order the listing: no weight is ever filled in. The compared numbers are declarations, not measurements this tool takes.
| Name | Required | Description | Default |
|---|---|---|---|
| weights | No | Advisory only: a weighted sum orders the frontier listing; it changes no verdict (pareto_not_total: a scalar order needs weights the caller chooses) | |
| candidates | Yes | Candidate designs to compare, e.g. the candidates triz_synthesize or triz_component_search returned, or concepts ranked by triz_weakness | |
| directions | No | Per metric, whether smaller or larger is better; default minimize |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key behavior: it reports frontier, dominated, and trade-off relationships; never resolves incomparable candidates; and weights only order the listing without changing verdicts or being filled in. It also clarifies that values are declared inputs rather than measurements, though it does not state whether the operation is read-only or how invalid inputs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences are front-loaded with the core operation and contain no filler. The first sentence is long and packs several definitions, and some wording repeats the schema, but the complexity is largely warranted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a computation tool with no output schema and no annotations, the description explains the conceptual output categories (frontier, dominated-by, trade-offs) and the advisory role of weights, which is substantial. It still leaves the exact return structure and input-validation behavior unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, and the schema itself defines candidates, metrics, directions with enum/default, and weights as advisory. The description reinforces the Pareto meaning but adds little parameter-level information beyond the existing schema descriptions, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation ('Rank finite candidate designs jointly over declared metric vectors') and defines the frontier, dominance, and trade-off outputs. That is enough to distinguish it from sibling TRIZ tools that generate, model, or retrieve data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context by naming outputs from triz_feasibility, triz_lifecycle, triz_synthesize, and triz_component_search as candidate sources, and permits any finite comparable numbers. It does not state when not to use it or name an alternative ranking method.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_principleA
Get a canonical TRIZ inventive principle (1-40). Omit id to list all 40. Look up principle numbers instead of recalling them from memory.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Principle number 1-40; omit to list all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the disclosure burden. "Get" implies a read-only lookup, and the omit-to-list behavior is stated, but the description never says what a principle record actually contains (title only? full text, examples, contradictions?), which is the main behavioral unknown for a knowledge tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core capability and the range front-loaded and the two call modes and the rationale trailing in order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter reference tool with no output schema, the definition covers what an agent needs to invoke it correctly. The only omission is the shape of the returned principle data, which matters somewhat given there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already reads "Principle number 1-40; omit to list all", so the description's omit-to-list sentence adds nothing beyond structured fields. No syntax, default, or edge-case meaning is introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get a canonical TRIZ inventive principle") and bounds it with the 1-40 range, so an agent immediately understands this is a reference lookup table. It doesn't name a sibling to distinguish itself from, but the resource name is distinct enough from triz_parameter, triz_matrix, and triz_effects that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operating guidance: omit id to enumerate all 40, and use this tool rather than recalling principle numbers from memory. That covers both call modes. It stops short of saying when to prefer a sibling (e.g., triz_matrix for contradiction lookup), so it falls just shy of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_purposeB
Optional project extension: inspect the invariant, purpose gate, and separation check of one contradiction node of the project graph.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Node id as used in the project graph, e.g. S1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. "Inspect" reasonably signals a read-only operation and "Optional project extension" warns that the required extension may be absent, which is useful precondition context, but nothing is said about failure modes, whether the node must actually be a contradiction node, or what the check results look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the optionality caveat first and zero filler. It is slightly dense with domain jargon ("purpose gate") that is never unpacked, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and no annotations, the description covers what is inspected (invariant, purpose gate, separation check) but leaves unclear whether the output is values, verdicts, or diagnostics, and how a non-contradiction node is handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter already documents itself with a concrete example ("e.g. S1"). The description adds no meaning about the identifier beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("inspect") plus a concrete resource set — invariant, purpose gate, and separation check of one contradiction node — scoped to "one contradiction node of the project graph." That is far more specific than the name alone, though it does not name or contrast any of the many separation-related siblings such as triz_separate or triz_global_separation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Optional project extension" hints at a context (the project graph extension must exist) but gives no when-to-use guidance, no exclusions, and no routing among the many sibling TRIZ tools. An agent cannot infer from the description why it would choose this over triz_separate or triz_global_separation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_queueB
Compile a finite discrete queue with explicit arrivals, service/storage capacity, schedule and units, then check overflow through existing dynamics. All declared arrival combinations within the schedule are considered.
| Name | Required | Description | Default |
|---|---|---|---|
| arrivals | Yes | Alternative arrival counts for EACH time slot; every combination is considered | |
| max_work | No | ||
| schedule | Yes | Specifies exactly when storage overflow is checked | |
| time_unit | Yes | Duration represented by one synchronous queue step, e.g. '1 ms' | |
| quantity_unit | Yes | Discrete conserved unit, e.g. requests or packets | |
| initial_backlog | Yes | ||
| service_capacity | Yes | Maximum units served per time slot | |
| storage_capacity | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does disclose the important combinatorial trait that 'all declared arrival combinations within the schedule are considered,' which warns of state-space explosion. However, it says nothing about what is produced (no output schema exists), whether anything is mutated, how max_work bounds the search, or what happens on overflow detection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the core action front-loaded and the combinatorial caveat placed as a follow-up. There is no filler, though the phrasing ('Compile a finite discrete queue with explicit arrivals...') is dense and could be marginally tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter, seven-required tool with no annotations and no output schema, the description should say what the caller gets back and how the overflow check is reported. It covers the inputs and the combinatorial semantics, but leaves the return behavior and the role of max_work unexplained. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, so the schema already documents arrivals, schedule, time_unit, quantity_unit, service_capacity and storage_capacity. The description only echoes those fields by name and adds no unit conventions, formatting rules, or meaning for undocumented parameters such as initial_backlog and max_work. It neither compensates for the coverage gap nor degrades below baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and resource: 'Compile a finite discrete queue' with arrivals, service capacity, storage capacity, schedule and units, then 'check overflow through existing dynamics.' That is far more specific than a restatement of the name. The only gap is that it does not name which sibling (e.g. triz_dynamics or triz_flow) it depends on, so the boundary against those tools is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this tool versus the many sibling modeling tools such as triz_flow, triz_dynamics, or triz_build_model. The phrase 'through existing dynamics' hints that a dynamics model must already exist, but this prerequisite is never stated as a condition. An agent must infer both the prerequisite and the usage scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_resolveB
Look up a contradiction-matrix cell and expand its recommended principles and both engineering parameters. Fails closed on blank cells.
| Name | Required | Description | Default |
|---|---|---|---|
| improving | Yes | Parameter to improve (1-39) | |
| worsening | Yes | Parameter that worsens (1-39) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add one genuine behavioral fact — 'Fails closed on blank cells', meaning empty matrix intersections raise an error rather than returning nothing — which is valuable. It says nothing about read-only nature, output volume, or what 'expand' produces structurally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and the failure-mode note is short and earns its place. No filler, no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, annotation-free, output-schema-free tool, the definition covers the core action and one edge case. It leaves the agent guessing about return shape (how principles and parameters are presented) and about sibling selection, which matters in a 50-tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters already carry range descriptions, so the baseline is 3. The phrase 'both engineering parameters' confirms the two inputs map to the matrix axes, but adds no new semantics such as directionality or example values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Look up a contradiction-matrix cell' and 'expand its recommended principles and both engineering parameters'. That is clearly distinguishable from generic list/lookup tools, though it never names triz_matrix or triz_matrix_multi, which occupy adjacent territory in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. Given that triz_matrix, triz_matrix_multi, and triz_principle all exist, the description does nothing to route the agent between them or state prerequisites such as needing parameter numbers in the 1-39 range first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_review_importA
Local-only explicit analyst confirmation of an imported model. Edit the draft first, then confirm every pending id exactly once with decision confirm and optional note. Source locations remain embedded; review asserts the supplied ratings and assumptions, without proving source correctness or physical truth.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| decisions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does disclose two useful traits: the operation is local-only, and review is an assertion over supplied ratings and assumptions rather than a verification of source correctness. It omits the observable state change (draft to reviewed) and the consequence that draft models cannot drive analysis, which is what an agent most needs to reason about effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loading the local-only confirmation scope, then the procedure, then the epistemic caveat. Dense but every clause carries information; no filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool over a very large nested model schema with no annotations and no output schema, the definition covers the decision payload well but leaves gaps: it does not say the argument model must include its provenance.pending list, nor what is returned (presumably the model now marked reviewed). Those omissions matter for a two-required-parameter write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is reported at 0% for the two top-level parameters, so the description must compensate. It does add real meaning for the decisions array — the id must be a currently pending id, each exactly once, decision is fixed to 'confirm', and note is optional — but says nothing about the 'model' parameter beyond 'edit the draft first', leaving the required full model payload unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: explicit analyst confirmation of an imported model, closing out its pending review items. It is distinguishable from the import-side sibling by the 'confirm every pending id with decision confirm' clause, though it never names triz_import_source or any other sibling directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Edit the draft first, then confirm every pending id exactly once' gives a clear precondition and ordering, so the agent knows this is the terminal step after editing, not a first move. It stops short of naming the specific tools to use for editing or where pending ids come from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_rewrite_pairB
Replay two named structural rewrites in both orders and check whether those occurrences commute. Interference does not prove nonconfluence.
| Name | Required | Description | Default |
|---|---|---|---|
| first | Yes | ||
| model | Yes | ||
| second | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the core behavior—replaying both orders and checking commutation—and adds a useful logical caveat, but it does not say whether the model is mutated, what happens when a rewrite cannot apply, or what the result contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two sentences, front-loaded with the operation and followed by a meaningful caveat. There is no redundant or filler wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with three required parameters, nested rewrite objects, no annotations, and no output schema. The description does not explain the model parameter, the add/delete rewrite shape, prerequisites, failure behavior, or return values, so it is not complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description identifies first and second as the rewrites being replayed, but leaves the model parameter unmentioned and does not explain the add/delete structure inside each rewrite. The word 'named' is also misleading because the schema has no name field for rewrites; with 0% top-level schema description coverage, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: replay two named structural rewrites in both orders and check whether those occurrences commute. That distinguishes the operation from generic analysis tools, though it does not name which sibling rewrite or transform tools it replaces or differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or comparison to alternatives such as triz_rule_apply, triz_trim_rewrite, or triz_transform. The sentence about interference not proving nonconfluence is an interpretation caveat, not a usage rule for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_routeA
Route a problem stage and optional observable signals to candidate TRIZ tools. Routing is deterministic and returns only tools registered for that stage.
| Name | Required | Description | Default |
|---|---|---|---|
| stage | Yes | Current workflow stage | |
| signals | No | Problem signals such as bottleneck, stakeholder conflict, or harmful interaction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does add real value by declaring routing is deterministic and that only tools registered for the stage are returned, which tells the agent results are stable and pre-filtered. It says nothing about the return shape (bare names vs. objects with metadata), what happens with unrecognized signals, or error behavior on an invalid stage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and inputs, then a behavioral guarantee. No filler, no repetition of the title, and nothing that could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, one enum, no nesting), but there is no output schema, so the description is the only source for what comes back. 'Returns only tools registered for that stage' hints at the payload but doesn't specify whether items are identifiers, names, or descriptors, nor how many candidates to expect. Mostly complete, with a meaningful return-value gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the stage enum and the signals array. The description adds only the notion that signals are 'observable' and optional, which the schema already conveys via the required list. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (route) plus both inputs (problem stage, optional observable signals) and the output class (candidate TRIZ tools). An agent can distinguish it from concrete siblings like triz_principle or triz_matrix, which perform the work rather than dispatching to it. It stops short of naming a specific sibling as the alternative, keeping it at 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrasing 'route a problem stage... to candidate TRIZ tools' suggests calling this when the workflow stage is known and the agent wants candidate tool names. There is no explicit statement of when to call this versus calling a sibling directly, and no exclusions. Adequate but leaves routing precedence to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_rule_applyA
Double-pushout rewriting with rules as data. A rule is a span L ← K → R of patterns over the function-model schema (boxes with ports typed by carrier variables, and wires); pass it as rule, or name a built-in evolution-line rule with rule_id: 'mono-bi' (transition to supersystem, mono → bi; apply again for poly), 'feedback' (increasing controllability, self-adjusting with feedback; bind its carrier variable 's' with carriers), or 'working-field' (changing the working field: the matched function re-made on another carrier; bind 'd' with carriers to a carrier other than the matched one; the result's fieldChanges records both carriers' layer and dimension). Each built-in rule cites the evolution-trends.md line it encodes. rule_id 'uneven-development' is a detector, not a rewrite, and takes only the model: the lagging subsystem, a box of the largest harm-loop region that is also on a binding feasibility dimension or limits a deliverable (feasibility finds it unprovidable, or it performs an insufficient function on a product); verdict lagging, none, or undecided (no harm loop, or feasibility undecided). Without match: lists every injective match of L (seed it with at), each verified as a typed homomorphism and marked applicable when the no-identification and no-dangling conditions hold (a deleted box may not lie on a declared flow) and the rule's distinct carrier variables bind different carriers; decided:false if the step budget runs out, complete:false past limit. A rule's forbid holds negative application conditions (Habel–Pennemann): each pattern extends left by id, and a match that extends to an occurrence of one — including any elements the pattern adds — is not applicable; a condition its own step budget cannot decide also refuses the application. With match (a listed match, or your own mapping): checks the match, these conditions, and that a kept box keeps the ports its declared rows name (every port for behavior and transition; the named ports for feasibility), then deletes the image of L \ K, glues R \ K under fresh ids, and returns the new model, which type-checks or the call fails closed; deliverableKeysChanged says a deliverable moved to another port or carrier. A rule application is a structural move, not evidence that it helps: compare the result with triz_function_model compare_to.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | Partial match that seeds the search, e.g. { wires: { f: 'w-drive' } } | |
| ids | No | Ids for created elements; default: fresh ids based on the rule's or the copied element's | |
| rule | No | An inline rule; give this or rule_id | |
| limit | No | Most matches to list (default 50) | |
| match | No | The match to apply at; omit to list matches | |
| model | Yes | ||
| rule_id | No | A built-in evolution-line rule, or the 'uneven-development' detector | |
| carriers | No | Carrier variable used only on the right side → model carrier id | |
| max_steps | No | Search step budget (default 100000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses typed-homomorphism verification, no-identification and no-dangling conditions, distinct carrier constraints, negative application conditions, step-budget outcomes such as decided:false and complete:false, fail-closed type checking, and deliverableKeysChanged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is relevant and front-loaded, but it is delivered as an extremely dense paragraph with long nested parentheticals that make it hard to scan. It would benefit from separating rule selection, match listing, application behavior, and return signals.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nine-parameter rewrite tool with no annotations and no output schema, the description covers modes, applicability conditions, failure behavior, and key return signals sufficiently for an agent to invoke it correctly. Remaining omissions are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 89%, so the baseline is already strong, but the description adds critical meaning for rule_id built-ins, carrier variable binding, at as a seed, match application, limit, and max_steps. It adds less detail for ids beyond default generation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise characterization, 'Double-pushout rewriting with rules as data,' and explains inline rules versus built-in rule_id rules, including that 'uneven-development' is a detector rather than a rewrite. It does not explicitly distinguish this tool from sibling rewrite tools such as triz_rule_set or triz_rewrite_pair.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the operational modes: omitting match lists matches, providing match applies one, and the uneven-development detector takes only the model. It also warns that an application is not evidence of improvement and points to triz_function_model compare_to, but it gives no explicit routing against the other rewrite-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_rule_setB
Validate a named rule subset and establish termination when every successful application strictly decreases lexicographic box/wire counts. No global confluence or critical-pair completeness is inferred.
| Name | Required | Description | Default |
|---|---|---|---|
| rules | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavior: it validates only, guarantees termination under a strict lexicographic decrease of box/wire counts, and explicitly refuses to infer confluence or critical-pair completeness. It does not say what a failure looks like, whether all violations are reported or the first one aborts, or what the caller receives.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core action stated first and the scope limitation second. The phrasing is dense ('lexicographic box/wire counts') but each clause carries information rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a high-complexity tool over a deeply nested rule schema with no annotations and no output schema, so the description should explain what comes back (a verdict? a violation list? a termination certificate?). It also leaves 'named rule subset' unexplained – the schema has no name field, only an id per rule. The termination claim is stated but its output form is not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level description coverage is 0% – the single `rules` parameter is never described in the description text, though the nested schema documents Rule, Pattern, forbid, distinct, and interface in detail. The mention of 'rule subset' and 'box/wire counts' hints at the array's shape and the termination measure but adds no binding, ordering, or cardinality guidance beyond the schema's maxItems of 100.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and object: 'Validate a named rule subset' plus the termination property it establishes over box/wire counts. The closing sentence scopes it against stronger notions (no global confluence or critical-pair completeness), which helps separate it from rewrite-application siblings like triz_rule_apply, though no sibling is named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: validation and termination checking precede applying a rule set, and the negative sentence tells the agent what conclusions it must NOT draw. There is no explicit 'use this when…' or 'use triz_rule_apply instead' routing, and no prerequisites such as whether a model must exist first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_separateA
Decide whether a physical contradiction's demands can be met piecewise over a finite space x time x condition x direction x level base (the MATRIZ separation types). Each demand lists admissible values and the cells where it applies (omitted axis = whole axis). Returns per-pair status (compatible: not a physical contradiction; separated: the separating axes; irreducible: overlap on every axis) and the conflict cells where no value satisfies every active demand. With along, also returns the parameter as a function of that axis alone: the admissible values per cell and whether it must change along the axis (with 'time', the checkable part of Principle 15, Dynamics). Each separated pair also gets suggestions, hints and not verdicts: per separating axis, the operations that could build the piecewise system (space: triz_transform segment or take_out; time: standby, or triz_dynamics separation with timed demands, Principle 15; condition: rerate, or a rewrite that changes the field, Principle 28; level: triz_nine_windows, the system operator or its subsystem restriction; direction: segment by port direction), each with the demands' cells on that axis and the looked-up text of the principle it follows.
| Name | Required | Description | Default |
|---|---|---|---|
| along | No | Axis to index the parameter by, e.g. 'time' for stages | |
| contradiction | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does so well: it enumerates the three return statuses (compatible, separated, irreducible), explains the conflict-cell output, and describes the extra data returned under `along` including the 'checkable part of Principle 15' nuance. It stops short of stating that the tool is side-effect-free/computational, but the analysis framing implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded and the important part (what it decides and returns) leads. However, the remainder is a dense run-on block with long parenthetical enumerations of principles and sibling tools, making it hard to scan; several clusters could be broken into short discrete statements without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a nested contradiction object, a five-value axis enum, and no output schema, the description supplies an unusually complete picture of inputs and outputs, including the suggestions payload and its per-axis hints. It is nearly self-sufficient, with the only omission being the absence of any safety/mutation note, which matters little for an analysis routine.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description must compensate and largely does: it explains that `along` returns the parameter as a function of that axis and demonstrates the 'time' case, and it clarifies the Demand semantics ('omitted axis = whole axis', values as admissible set). The nested contradiction structure is left to the schema, but the key behavioral meaning of `along` is well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (Decide) and precise resource (whether a physical contradiction's demands can be met piecewise over a finite space x time x condition x direction x level base), naming the MATRIZ separation types. It clearly distinguishes the operation from generic resolution siblings by scoping it to piecewise separability, though it never names triz_global_separation or triz_resolve as the contrasting alternatives an agent would weigh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than prescribed: the agent can infer this is the tool for testing separability of an existing physical contradiction with demands. There is no explicit when-to-use/when-not statement and no routing to alternatives such as triz_global_separation or triz_resolve, which is the main gap given how many sibling resolution tools exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_subsystem_contractB
Distinguish a declared subsystem summary from one checked against the complete inner steady-state relation and a single declared resource mode. Verification checks exact behavior over explicit assumptions, nonblocking, levels, demands, budgets and source support using the same bounded closure as flat feasibility. Declared boundary amounts seed support; circular-resource-support and source-support-cap are undecided. max_support_work independently caps support checking; missing data or unsupported modes are undecided. Resource/behavior coupling remains a declared empirical assertion. Caller-supplied checked status is never trusted.
| Name | Required | Description | Default |
|---|---|---|---|
| box | Yes | ||
| mode | Yes | ||
| model | Yes | ||
| contract | Yes | ||
| max_states | No | ||
| max_support_work | No | Source-support work cap, independent of the behavior state cap; defaults to 100000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does real work: it discloses that verification is exact over explicit assumptions, bounded and nonblocking, that circular-resource-support and source-support-cap results are reported as undecided rather than failed, that max_support_work caps support checking independently of the state cap, and that caller-supplied checked status is never trusted. That last clause is a genuinely valuable trust-boundary disclosure. It stops short of describing side effects, permission needs, or result shape, and several phrases are too opaque to act on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening clause is appropriately front-loaded with the declared-versus-verified distinction, and most sentences carry information. But the prose is a chain of dense noun phrases ('bounded closure as flat feasibility', 'declared empirical assertion') with no structural separation between what is checked, what is undecided, and what is capped, which slows comprehension more than the length warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex six-parameter tool with deep nested objects, no annotations, and no output schema, the description covers verification semantics, undecided handling, and one cap but never sketches what a result looks like beyond the word 'undecided', nor how model/box/contract relate. It is more informative than most siblings but leaves the agent guessing about the response and the framing parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description must compensate and it partly does: it explains the declared-vs-verify meaning of 'mode', names the contract content it evaluates (behavior, assumptions, levels, demands, budgets, operating envelope), and explains max_support_work's role and independence from the state cap. But 'box', 'model', and especially 'max_states' receive no treatment at all in the description, leaving three of six parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific operation, distinguishing a merely declared subsystem summary from one verified against the inner steady-state relation and a declared resource mode, and the 'mode' enum (declared/verify) anchors that. However, the contrast target is described only obliquely ('a declared subsystem summary') rather than naming the sibling tool triz_subsystem_summary, and the surrounding noun stacks ('bounded closure as flat feasibility', 'source support') make the core purpose hard to extract on a first read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies verification happens under 'verify' mode and that missing data or unsupported modes yield 'undecided', but never states when an agent should call this instead of triz_subsystem_summary, triz_feasibility, or triz_behavior. No prerequisites, no exclusions, no routing rule; the reader must infer the choice from jargon.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_subsystem_summaryC
Compose a stateless subsystem into an exact finite boundary relation with an explicit port map, fixed cost, and hidden-harm list. Complete serial maps use the checked symbolic compiler; other declared relations use exact finite projection. Empty relations remain explicit and missing behavior stays unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | summary | |
| boxes | Yes | ||
| model | Yes | ||
| max_states | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose some real behaviour: two computation paths (symbolic compiler for complete serial maps, exact projection otherwise) and the policy that empty relations are explicit while missing behaviour stays unknown. It omits error conditions, the effect of max_states truncation, and what the returned boundary relation/port map actually contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler words, and the core claim is front-loaded. However, the density of undefined terms ('exact finite boundary relation', 'checked symbolic compiler', 'exact finite projection') means the text is compact but not communicative, so brevity does not translate into clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool operating on a large nested model schema with no output schema, so the description must explain results; it only names three output artefacts without describing structure or meaning. With siblings like triz_subsystem_contract unaddressed and parameters undocumented, the definition is not sufficient for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%: id, boxes, model, and max_states have no descriptions. The tool text mentions 'port map', 'fixed cost', and 'hidden-harm list', none of which map to the four parameters, and it never explains that boxes selects which subsystem components are summarised or what max_states bounds. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb and resource ('Compose a stateless subsystem') and gestures at the output ('exact finite boundary relation with explicit port map, fixed cost, hidden-harm list'), but 'exact finite boundary relation' is unexplained domain jargon. It also fails to distinguish this tool from the adjacent sibling triz_subsystem_contract, leaving the agent to guess which one to select.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this instead of triz_subsystem_contract, triz_behavior, or triz_feasibility. The sentence about 'checked symbolic compiler' versus 'exact finite projection' describes internal routing behaviour, not a use-case condition the agent can act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_synthesizeB
Search finite behavior/resource alternatives jointly on fixed wiring. Optimized search uses coupled residuals; symbolic search composes typed joint finite maps across explicit wire permutations and reuses equivalent residual domains before union trace enumeration, with bounded fallback; exhaustive retains the reference search. Every surviving tuple meets one shared engineering contract. Capped search is undecided; impossibility is only within the declared library.
| Name | Required | Description | Default |
|---|---|---|---|
| holes | Yes | ||
| model | Yes | Fixed carriers, boxes, ports, and wires. Only listed holes' complete behavior/resource declarations are substituted | |
| contract | Yes | ||
| max_work | No | ||
| strategy | No | Symbolic checks and composes typed joint serial maps before union trace enumeration; optimized uses coupled residuals; exhaustive retains the reference Cartesian search | optimized |
| max_states | No | ||
| optimizations | No | Disable individual optimizations for differential checks and benchmarks | |
| implementation | Yes | ||
| max_pruning_work | No | Per compilation/propagation allowance within max_work, reserving at least three quarters of remaining work for validation; exhaustion falls back without speculative pruning | |
| max_symbolic_work | No | ||
| max_symbolic_cells | No | Maximum retained symbolic certificate, mask and residual-cache characters; exhaustion discards compilation or skips cache insertion | |
| include_symbolic_certificate | No | Attempt checked compilation even for small requests and return its DAG for independent local Lean checking |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries real behavioral weight: it discloses that capped search yields an undecided (not negative) result, that impossibility claims are scoped to the declared library, and that bounded fallback occurs during optimized/symbolic search. These are non-obvious, high-value traits an agent could not infer from schema alone. It stops short of describing cost, runtime expectations, or output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, technically dense but not padded; the operational caveats at the end earn their place. It is not front-loaded well though — the second sentence is a dense run of jargon ('typed joint finite maps across explicit wire permutations') that impedes comprehension more than it informs tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a high-complexity tool (12 params, deep nested schema, no output schema, no annotations), and the description covers the search semantics well but says nothing about what the caller receives back (satisfying tuples? violation reports? certificates?). Without an output schema, the return-value gap is a meaningful omission for a tool this intricate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 50% schema coverage the description must compensate, and it partially does by explaining what 'optimized' and 'symbolic' strategies actually do, grounding the strategy enum. However, seven of twelve parameters (max_work, max_states, optimizations, max_pruning_work, max_symbolic_work, max_symbolic_cells, include_symbolic_certificate) are not addressed at all, and the contract/holes/model/implementation semantics are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific action on a specific resource: searching finite behavior/resource alternatives over fixed wiring. But 'synthesize' as an outcome (producing implementations that satisfy a contract) is only implied by 'Every surviving tuple meets one shared engineering contract', and nothing distinguishes it from siblings like triz_feasibility, triz_implementations, or triz_subsystem_synthesize-adjacent tools. The core purpose is recoverable but requires domain familiarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to reach for this tool versus alternatives; the mention of 'optimized', 'symbolic', and 'exhaustive' compares internal strategies, not sibling tools, and that comparison is already in the strategy parameter's schema description. The closest to usage guidance is a caveat ('Capped search is undecided'), which is behavioral, not a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_tool_catalogA
List the domain-neutral TRIZ tool catalog, optionally restricted to problem analysis, task modeling, or solution synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| stage | No | Optional workflow stage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'List' implies a safe read-only operation, but it does not state side effects, authentication needs, pagination, or the shape of returned catalog entries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. Every phrase, including the domain-neutral scope and stage restriction, earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one optional enum parameter, the description adequately covers what is listed and how it can be filtered. It could say more about the returned catalog entries since no output schema exists, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by expanding the enum values into conceptual stages: problem analysis, task modeling, and solution synthesis.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('TRIZ tool catalog'), plus scope ('domain-neutral'). It does not explicitly distinguish this catalog from sibling catalogue/search tools such as triz_component_catalogue, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides only an optional stage restriction, with no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The discovery use case is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_transformA
Apply one typed model transformation and return the new model. Principle constructions: segment (1: divide a box into parts whose ports partition its ports), take_out (2: separate the ports touching a harmful or excessive function, or isolate the part carrying all useful functions), merge (5: collapse adjacent or identical boxes into one; boxes consecutive on a declared flow are adjacent), standby (11: add an unwired typed absorber for a box's functions), reverse (13: swap a function's performer and object), rerate (16: rate a useful function insufficient or excessive; 23: change the level of a function on a cycle), retarget (22: a harmful function's source feeds a useful function), feedback (23: add a function that closes a loop), interpose (24: route a function through a new mediator box), cheap_copy (26, 27: replace a box by a cheaper copy with the same ports). Also trim (perform a typed-feasible trim, re-attaching each kept function to an absorber; rule B is Principle 25, one absorber for everything is Principle 6) and rewrite (delete and add boxes and wires; no remaining wire may touch a deleted box). Every result type-checks or the call fails closed with ok:false. When the segmented box declares behaviour, segment (and take_out) reports behaviourallyIndependent: whether the box's relation is the product of its projections onto the parts; if so each part gets its projection, else no part gets behaviour and each coupled part is named with a witness: two rows whose mix is not a row. It also suggests the finest partition of the box's ports over which its relation is a product (behavior.finest: parts; cut, the suggested blocks the given parts cut, empty iff the split holds; splitsFurther, when nothing is cut, the parts that hold several blocks; decided:false past the cap). interpose's mediator may declare behavior (rows, or 'identity'). A transformation is a structural move, not evidence that it solves the problem: model the result and compare it with triz_function_model compare_to, or with triz_behavior compare_to when behaviour is declared, passing the boxMap that segment, take_out, or cheap_copy returns as box_map. merge renames the merged ports to '.', so no box_map recovers a merged product box's deliverables: they read as lost and regained. reverse returns undo, a rewrite that restores the original model, added ports included.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| transformation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full disclosure burden and does well on failure semantics ('Every result type-checks or the call fails closed with ok:false') and return extras (behaviorallyIndependent, behavior.finest with cut/splitsFurther/decided, undo from reverse). It also warns about a non-obvious side effect: merge renames ports to '<box>.<port>' so no box_map recovers a merged product box's deliverables. It does not state the overall response envelope (where the new model and ok live, or what ok:false carries), leaving a gap a caller would want closed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the op catalogue are front-loaded, and the closing sentences cover the validation workflow and the two gotchas (merge renaming, reverse's undo). Every clause corresponds to a distinct op, but the single dense paragraph packed with parenthetical principle numbers and nested `behavior.finest` fields is harder to scan than a list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-variant transformation dispatcher with no output schema, the description covers the operation semantics, the fail-closed contract, the extra report fields (behaviorallyIndependent, finest partition diagnostics, box_map, undo), and the follow-up comparison workflow. The remaining gap, the exact response envelope, is modest given that no output schema exists to carry it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0% (model and transformation are undocumented), so the description must compensate, and it largely does: it explains the discriminating semantics of each variant, e.g. take_out's two readings ('harmful or excessive' vs 'all useful functions'), merge's 'boxes consecutive on a declared flow are adjacent', and rerate's partial vs feedback readings. It does not cover cost_to on take_out or explain retarget's keep_harm and id defaults, which remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource: 'Apply one typed model transformation and return the new model.' It then enumerates every supported op with its TRIZ principle number, so an agent can tell exactly which transformations are available. It stops short of differentiating itself from siblings such as triz_trim, triz_rewrite_pair, or triz_rule_apply, which overlap in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear downstream guidance: 'A transformation is a structural move, not evidence that it solves the problem: model the result and compare it with triz_function_model compare_to, or with triz_behavior compare_to when behaviour is declared, passing the boxMap...'. That is real workflow routing, including which comparison tool to pick based on whether behaviour is declared. It does not say when a caller should prefer a sibling transformation tool over this one, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_trimA
Screen a trimming of one or more boxes by the TRIZ trimming rules: A (object trimmed too, function no longer needed), B (the object performs the function itself), C (another remaining box or supersystem resource has an output of the same carrier). Returns per-function absorbers, orphaned functions that block the trim, harms and costs removed, and one trimming problem per absorber. A carrier match is a necessary condition only; every absorber is a hypothesis to solve and substantiate.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | Yes | Ids of the boxes to remove | |
| model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the returned sections (per-function absorbers, orphaned functions blocking the trim, harms and costs removed, one problem per absorber) and warns that a carrier match is only a necessary condition. The main gap is that it never states explicitly that the tool is read-only analysis and does not mutate the model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the purpose and then the rules and outputs; no filler. The rule-letter parentheticals are long but earn their place by making the screening criteria self-contained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a huge embedded model schema and no output schema, the description supplies what an agent needs: what the screening does, what comes back, and how to interpret the result. Only the relationship to sibling trim/absorber tools is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description's phrase 'trimming of one or more boxes' matches the `trim` array of box ids, which the schema already documents as 'Ids of the boxes to remove'. The `model` parameter is an unlabeled $ref whose semantics come entirely from the nested schema, so the description adds little beyond structured data at 50% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Screen a trimming of one or more boxes') and enumerates the three TRIZ trim rules A/B/C, so an agent can tell what the tool computes. It does not name the closely related siblings (triz_trim_rewrite, triz_absorber_assignments), which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this is the screening/verification step for a candidate trim, and the closing sentence tells the agent to treat every absorber as a hypothesis to substantiate. However, there is no explicit statement of when to prefer this over triz_trim_rewrite or triz_absorber_assignments, so routing among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_trim_rewriteC
Return an applied trim as explicit deletion/gluing data with its declared absorbers, interface, and checked replay. No Kan-extension claim is made.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | Yes | ||
| model | Yes | ||
| absorb | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does not state whether the tool is read-only or applies/mutates the model, whether the input model must be validated first, or what 'checked replay' verifies. The single disclaimer about Kan-extension is the only behavioral hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, front-loaded with the action and output. Its brevity is a virtue, though it comes at the cost of the missing context noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a large nested schema, no output schema, and no annotations, this two-sentence description is far too thin. It omits the return shape, prerequisites, and how the three parameters interact, leaving the agent with major unanswered questions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Three parameters (model, trim, absorb) with 0% top-level schema description coverage. The description's mention of 'declared absorbers' loosely maps to absorb and 'applied trim' to trim, but it never explains what 'trim' (a string array) means or how absorb Endpoint entries relate to it, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Return' plus resource 'applied trim' gives a rough idea: it emits deletion/gluing data, absorbers, interface, and a checked replay. But it is dense jargon ('gluing data', 'absorbers', 'Kan-extension') and never distinguishes itself from the obvious sibling triz_trim or triz_rewrite_pair, so an agent cannot confidently pick it over those without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling tools (triz_trim, triz_absorber_assignments, triz_rewrite_pair) that an agent would need to choose between. The 'no Kan-extension claim' sentence is a scope disclaimer, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triz_weaknessA
Rank candidate concepts that declare behaviour by the operating situations they admit (references/weakness.md). A situation is a valuation of the concepts' boundary inputs (unwired input ports, matched by box and port id) over their carriers' declared values: the declared input space is weakness.md's list of operating situations. A concept admits a situation when it has a steady state there and every deliverable output there is acceptable (acceptable: per deliverable port, or per carrier for all its deliverables, the values that are, listed or derived from a threshold at_least/below that is a declared level of the carrier; required for every deliverable; derived sets are listed under acceptable in the result). Give each operating condition the same box and port id in every concept (e.g. an environment box with an unwired input); readByOne lists the inputs only one concept reads. Ranked by set inclusion: weakest (admits everything any other admits), maximal, and every pair as equal, first-weaker, second-weaker, or incomparable, with a situation only one admits each way. The admitted count is a secondary figure: it depends on how finely carrier values are declared. priors gives a real prior over the situations (weakness.md: a real prior beats the uniform assumption): per situation input (box and port), or per carrier, a nonnegative weight per declared value (unlisted inputs and values count 1; 0 rules a value out); each concept carries the total prior mass of what it admits (weightedAdmitted, ranked in byWeight), and no inclusion ever moves under weights. joint_prior is the alternative for correlated operating conditions: an explicit complete joint table, a weight for every situation (zero allowed), with no independence assumption; it reports jointAdmittedWeight and jointAdmittedProbability per concept, ranked in byJointPrior, separately from inclusion and counts. Give priors or joint_prior, not both. Fails closed when the concepts deliver different ports, an input several read ranges over different values, or acceptable misses a deliverable or names an undeclared value, or a prior is malformed; undecided on missing behaviour or past the state cap. Filter concepts for adequacy first; for safety, integrity, or authorisation decisions admitting more is the wrong direction.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| priors | No | A prior over the operating situations (weakness.md: a real prior beats the uniform assumption): per situation input (box and port), or per carrier, the weight of each declared value. weightedAdmitted is each concept's total admitted mass and byWeight ranks by it; the inclusion ranking and the pairs never change | |
| concepts | Yes | Candidate concepts, each a model that declares behaviour for every box that can reach a deliverable | |
| acceptable | Yes | Per deliverable port (a product input port), or per carrier for every deliverable it carries, the acceptable values: listed, or derived from a threshold (at_least, below) through the carrier's levels. An output is acceptable when every deliverable's value is | |
| max_states | No | Cap on situations and search states per concept (default and maximum 100000) | |
| joint_prior | No | Instead of priors, for correlated conditions: explicit joint mass for EVERY complete situation, including zero mass; no independent-input assumption. jointAdmittedWeight and jointAdmittedProbability per concept, ranked in byJointPrior | |
| lifecycle_priors | No | Opt-in concept-specific priors from each model lifecycle occupancy; each state needs a complete situation mapping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it enumerates fail-closed conditions (differing delivered ports, an input reading ranges over different values, acceptable missing a deliverable, malformed priors), the 'undecided' outcomes (missing behaviour, past the state cap), and the caveat that admitted counts depend on how finely carrier values are declared. It also names result fields (readByOne, weightedAdmitted, byWeight, jointAdmittedWeight, jointAdmittedProbability, byJointPrior) and states that inclusion never moves under weights. It stops short of describing the full response shape or performance characteristics beyond max_states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded with the purpose, but everything after it is one unstructured paragraph of nested parentheticals, e.g. the single sentence defining what admitting a situation means, which buries 'per deliverable port, or per carrier ... listed or derived from a threshold at_least/below' inside a clause. Several sentences duplicate schema text (prior weight defaults, carrier precedence) rather than earning new space, and the dense run-on style makes the definition hard to parse even though the total length is defensible for a seven-parameter analysis tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex ranking tool with no output schema, the description covers the core semantics, failure modes, and the main result fields adequately. But it leaves `scope` (the one enum parameter) and `lifecycle_priors` — a whole opt-in prior mechanism with per-concept weights and max_steps — entirely undocumented, and gives no sense of result ordering or size beyond the state cap. An agent could call it, but would be guessing on two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high at 86%, so the baseline is 3, and the description mostly restates what the schema already says (unlisted weights count 1, 0 rules a value out, carrier entry as 'instead of box and port'). It does add genuinely new meaning the schema does not encode: priors and joint_prior are mutually exclusive, weighted ranking never alters the inclusion order, and inclusion is the primary ranking with counts secondary. However, the `scope` enum (upstream/whole) and the entire `lifecycle_priors` parameter are never mentioned in the description and carry no schema description for scope, so two of seven parameters are left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause gives a specific verb and resource: 'Rank candidate concepts that declare behaviour by the operating situations they admit', and it points to references/weakness.md for the underlying notion. It distinguishes itself implicitly from triz_adequacy ('Filter concepts for adequacy first') and from counting-based siblings by insisting ranking is by set inclusion. It does not name a sibling that does a similar ranking (e.g. triz_pareto), so an agent must infer the boundary, which keeps it below 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real ordering guidance ('Filter concepts for adequacy first'), an explicit either/or constraint ('Give priors or joint_prior, not both'), and a domain caution that 'for safety, integrity, or authorisation decisions admitting more is the wrong direction'. It never states a when-not-to-use case or names the competing sibling, so it falls short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
51 tool updates
v0.5.1- First observed
triz_absorber_assignments - First observed
triz_abstraction - First observed
triz_adequacy - First observed
triz_behavior - First observed
triz_behavior_refinement - First observed
triz_bond_graph - First observed
triz_build_model - First observed
triz_component_catalogue - First observed
triz_component_search - First observed
triz_conservation - First observed
triz_dynamics - First observed
triz_effect_chains - First observed
triz_effect_insert - First observed
triz_effect_setup - First observed
triz_effects - First observed
triz_evals - First observed
triz_expand_hierarchy - First observed
triz_export - First observed
triz_feasibility - First observed
triz_flow - First observed
triz_function_model - First observed
triz_global_separation - First observed
triz_graph - First observed
triz_implementations - First observed
triz_import_source - First observed
triz_isomorphism - First observed
triz_knowledge - First observed
triz_lifecycle - First observed
triz_matrix - First observed
triz_matrix_multi - First observed
triz_nine_windows - First observed
triz_parameter - First observed
triz_pareto - First observed
triz_principle - First observed
triz_purpose - First observed
triz_queue - First observed
triz_resolve - First observed
triz_review_import - First observed
triz_rewrite_pair - First observed
triz_route - First observed
triz_rule_apply - First observed
triz_rule_set - First observed
triz_separate - First observed
triz_subsystem_contract - First observed
triz_subsystem_summary - First observed
triz_synthesize - First observed
triz_tool_catalog - First observed
triz_transform - First observed
triz_trim - First observed
triz_trim_rewrite - First observed
triz_weakness
TDQS
Scored across 51 tools
Many tools target closely related formal checks — triz_behavior, triz_adequacy, triz_subsystem_contract, triz_implementations, triz_synthesize, and triz_absorber_assignments — while triz_trim, triz_transform, triz_trim_rewrite, and triz_rule_apply also overlap around trimming and rewriting. The descriptions draw boundaries, but with 51 tools the misselection risk remains high.
All names use the triz_ prefix and snake_case, making the vocabulary predictable. However some names are noun-only (triz_matrix, triz_behavior, triz_dynamics) while others are verb_noun, so the pattern is not fully uniform.
A 51-tool surface is far beyond a well-scoped set and exceeds the 25+ heavy threshold by a wide margin. Even for a broad TRIZ methodology, this is excessive and substantially increases selection burden.
The surface covers TRIZ lookup, function modeling, contradiction resolution, trimming/transformation, behavior and dynamics, feasibility, lifecycle, synthesis, import/export, and project graph operations. No obvious domain gap is apparent; nearly every TRIZ phase has at least one operation.
Maintenance
Related MCP Connectors
Deterministic knowledge for AI agents: search, fetch, cite and verify a 48M-entry knowledge base.
Deterministic fact verification for AI agents — checksums & curated data, not guesses.
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Deterministic verifier: LLM proposes, graph verifies. Sub-ms, offline, 0 tokens.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agents to query a single-source ontology of types, entities, statements, evidence, and controlled vocabulary, including bitemporal "as of" and "as recorded" fact lookups. Supports writing by letting agents propose candidate statements while keeping approval, review transitions, and authoritative reasoning restricted to approved facts.MIT

jevbook MCPofficial
AlicenseNot gradedqualityCmaintenanceEnables agents to fact-check claims, conduct verified research, make typed decisions with calibrated probabilities, and scan token risks through a hosted server with no API key required.MIT- AlicenseNot gradedqualityBmaintenanceEnables MCP clients and AI agents to solve interdependent-variable domains deterministically by deriving implied values, catching contradictions, planning the smallest set of inputs to ask for, and explaining every result with provenance.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to turn a real model failure into a deterministic benchmark task by forging it with exact assertions, grading the task itself across six weighted factors, and inspecting a tamper-evident SHA-384 audit trail. Exposes eleven typed JSON-RPC 2.0 tools that call the same idempotent service layer as the UI, so mutations and decisions stay sealed and reproducible.MIT