triz
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TRIZ_GRAPH | No | Path to a project's OTSM Network of Problems JSON file used by the optional triz_graph and triz_purpose tools. Defaults to data/problem-graph.json. | |
| TRIZ_DATA_DIR | No | Path to the directory containing the TRIZ JSON knowledge base. Only needed when the MCP server runs outside this repository's layout; otherwise the data directory is resolved relative to the repository root. | |
| TRIZ_REGISTRY | No | Path to a TRIZ registry JSON file used by the optional triz_purpose tool. Defaults to data/triz-registry.json. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| 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. |
| 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. |
| 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. |
| triz_resolveB | Look up a contradiction-matrix cell and expand its recommended principles and both engineering parameters. Fails closed on blank cells. |
| triz_tool_catalogA | List the domain-neutral TRIZ tool catalog, optionally restricted to problem analysis, task modeling, or solution synthesis. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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, |
| 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. |
| 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 |
| triz_flowB | Flow analysis (router entry 16) over the model's declared |
| 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. |
| 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 |
| 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 |
| 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. |
| 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 |
| triz_behaviorA | Compose declared box behaviour (carrier |
| 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 ( |
| 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. |
| 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 |
| triz_feasibilityA | Monotone co-design feasibility (Censi 2015) from declared box |
| 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. |
| 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 |
| triz_evalsC | Return the domain-neutral TRIZ lookup regressions and cross-domain reasoning cases. |
| 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. |
| triz_adequacyC | Check nonblocking and acceptable outputs over required operating situations under an explicit scope. Equality of two partial relations does not establish adequacy. |
| 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. |
| 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. |
| 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. |
| 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. |
| triz_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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| triz_rewrite_pairB | Replay two named structural rewrites in both orders and check whether those occurrences commute. Interference does not prove nonconfluence. |
| 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. |
| 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. |
| 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. |
| 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. |
| triz_purposeB | Optional project extension: inspect the invariant, purpose gate, and separation check of one contradiction node of the project graph. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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.