Latent Tools
Expand concepts into rich conceptual landscapes for research, context priming, and cross-domain exploration.
Latent is often the first pass: use latent.expand to widen or deepen the idea space, then use latent.orient and latent.horizon to navigate that space with angular precision and find its boundaries.
Each model interaction is a big bang into a dark forest — every concept in the context window illuminates paths the model can explore. Latent tools give your agents a flashlight.
latent.expand@1
Expand a seed concept via depth, breadth, or bridge mode.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
seed |
string | yes | – | The concept, goal, or context fragment to expand |
mode |
string | no |
breadth |
depth = drill down; breadth = cross-domain; bridge = connect two concepts |
target |
string | no | – | Second concept (required for bridge mode) |
format |
string | no |
summary |
summary = dense text for context injection; graph = structured nodes/edges |
levels |
integer | no | 2 | Expansion intensity (1-3). Higher = more concepts, larger model, more credits |
domain_hint |
string | no | – | Bias the expansion toward a specific domain |
Modes
Depth — follow one conceptual path deep. Hierarchical decomposition, domain-specific formalization, edge cases, failure modes, historical evolution. Narrow but thorough.
Breadth — shine light in all directions. Find isomorphic structures across domains, orthogonal dimensions, cross-disciplinary connections, contrasts and inversions. Wide and surprising.
Bridge — given two concepts, find shared abstractions, transformation paths, and unexpected connections. Where the analogy breaks is often as valuable as where it holds.
Example: Breadth Expansion
{
"name": "data-grout@1/latent.expand@1",
"arguments": {
"seed": "cache invalidation",
"mode": "breadth",
"levels": 2
}
}
Response (summary format):
{
"seed": "cache invalidation",
"mode": "breadth",
"format": "summary",
"expansion": "Cache invalidation is isomorphic to: (1) consensus problems in distributed systems — when does a replica know its state is stale? (2) memory reconsolidation in neuroscience — retrieved memories become labile and must be restabilized. (3) legal precedent override — when a new ruling invalidates cached interpretations of prior law...",
"concepts": ["distributed consensus", "memory reconsolidation", "legal precedent", "eventual consistency", "signal propagation"],
"dimensions_explored": 8,
"llm_credits": 5,
"model": "gpt-4.1",
"levels": 2,
"_meta": { "cache_ref": "rc_abc123" }
}
Example: Bridge
{
"name": "data-grout@1/latent.expand@1",
"arguments": {
"seed": "version control",
"target": "memory reconsolidation",
"mode": "bridge"
}
}
Example: Graph Format
{
"name": "data-grout@1/latent.expand@1",
"arguments": {
"seed": "cache invalidation",
"mode": "breadth",
"format": "graph",
"levels": 1
}
}
Response (graph format):
{
"seed": "cache invalidation",
"mode": "breadth",
"format": "graph",
"nodes": [
{ "id": "n1", "label": "distributed consensus", "domain": "systems", "relation": "isomorphic", "weight": 0.9, "description": "Both solve 'when is local state stale?'" },
{ "id": "n2", "label": "memory reconsolidation", "domain": "neuroscience", "relation": "isomorphic", "weight": 0.7, "description": "Retrieved memories become labile" }
],
"edges": [
{ "from": "seed", "to": "n1", "type": "shares_structure", "description": "Staleness detection" },
{ "from": "n1", "to": "n2", "type": "analogous", "description": "Digital and biological freshness" }
],
"summary": "Cache invalidation maps structurally to consensus and memory reconsolidation.",
"node_count": 2,
"edge_count": 2,
"_meta": { "cache_ref": "rc_def456" }
}
Cost
| Levels | Mode | Model | Credits |
|---|---|---|---|
| 1 | depth/breadth | gpt-4.1-mini | ~2 |
| 2 | depth/breadth | gpt-4.1 | ~5 |
| 3 | depth/breadth | gpt-4.1 | ~8 |
| any | bridge | gpt-4.1 | ~5 |
Tips
-
For context priming: use
summaryformat and inject theexpansiontext into your agent’s system prompt or context window. -
For programmatic use: use
graphformat to get structured nodes and edges you can filter, traverse, or visualize. -
For structured latent-space navigation: start with
latent.expand, then uselatent.orientorlatent.horizonwhen you want typed navigation state instead of a one-off expansion. - Start with level 1 for quick exploration, then increase levels if you need more depth.
-
Use
domain_hintto steer the expansion toward a specific field when you know where you want to look. - Bridge mode is powerful for finding connections between seemingly unrelated domains — useful for research, design, and lateral thinking.
When to use Latent
| Scenario | Use |
|---|---|
| “What concepts relate to X across different fields?” |
breadth mode |
| “Break down X into its full technical depth” |
depth mode |
| “What do X and Y have in common?” |
bridge mode |
| “I need richer context before starting a research task” |
breadth with summary format |
| “I want a concept map I can process programmatically” |
any mode with graph format |
| “I want to turn a broad expansion into a navigable latent-space map” |
latent.expand, then latent.orient or latent.horizon |
latent.orient@1
Navigate to a specific angular position in a concept’s latent neighbourhood. Given a seed concept, an axis of variation, and an angle of approach, Orient performs dual-pass expansion (canonical + exploratory) to map the semantic neighborhood from that position. Outputs include a structured context block, a graph of nodes and edges, and typed facts for persistence in Logic cells.
Backward compatibility: previously
prism.orient. The old name is accepted as an alias.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
seed |
string | yes | – | The concept to orient around |
axis |
string | yes | – |
Rotational axis: negation, abstraction, agency, scale, formality, narrative, custom |
angle |
string | no |
opposite |
Angular position: opposite, orthogonal, complement, 45, custom |
axis_description |
string | no | – | Required when axis=custom |
angle_description |
string | no | – | Required when angle=custom |
levels |
integer | no | 2 | Expansion intensity (1-3) |
passes |
string | no |
both |
canonical, exploratory, or both |
output_format |
string | no |
context_block |
context_block, graph, nodes_only, facts, or all |
persist |
boolean | no | false | Write navigation state to Logic cell |
namespace |
string | no |
orient_default |
Logic cell namespace for persisted state |
domain_hint |
string | no | – | Bias expansion toward a specific domain |
Orient automatically asserts explored(seed, axis) and explored(seed, angle) relation facts, enabling open-world queries like: “which axes haven’t been explored yet for this seed?”
Example
{
"name": "data-grout@1/latent.orient@1",
"arguments": {
"seed": "consciousness",
"axis": "negation",
"angle": "opposite",
"output_format": "all"
}
}
latent.horizon@1
Find the boundaries of a concept’s latent neighborhood. Horizon identifies boundary nodes from a previous orientation and optionally expands beyond them into unexplored territory.
Backward compatibility: previously
prism.horizon. The old name is accepted as an alias.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
seed |
string | yes | – | The concept to find boundaries for |
orientation_id |
string | no | – |
Load boundary nodes from a previous latent.orient result |
expand_beyond |
boolean | no | false | Expand beyond boundary nodes into new territory |
expand_limit |
integer | no | 3 | Maximum boundary nodes to expand beyond |
levels |
integer | no | 2 | Expansion intensity (1-3) |
output_format |
string | no |
graph |
context_block, graph, facts, or all |
persist |
boolean | no | false | Write horizon state to Logic cell |
namespace |
string | no |
orient_default |
Logic cell namespace |
Horizon asserts explored(seed, "horizon") relation facts. Combined with Orient’s explored facts, this supports compositional open-world reasoning: agents can determine which concepts have been oriented, which have been bounded, and which remain unexplored.
Composability
Orient and Horizon are designed to chain: Orient maps a neighborhood and produces an orientation_id. Pass that ID to Horizon to find the boundaries. Horizon’s expand_beyond then reaches into genuinely novel territory beyond the original orientation. All facts are persisted as typed relations in the Logic cell, making them queryable via logic.query (including raw Prolog) and traversable with the graph predicates (path, reachable, neighbors).