Cognitive infrastructure for LLM reasoning — navigates distribution tails through structural constraints. Serves constraint library, persona templates, topologies, and provides prompt composition and session management.
Lens has 23 well-named tools with consistent verb_noun patterns (lens_list_*, lens_get_*, lens_compose_*, lens_create_*, lens_update_*). All tools have descriptions (avg ~120 chars, within baseline 34-392). Input schemas are present and typed for all tools. However, output schemas are NOT documented, tools return JSON strings but the structure of those strings is not specified in the tool definitions. Parameter descriptions are present but often generic (e.g., 'JSON string of constraint list' lacks format/example detail). Error handling is minimal, most tools return JSON error objects but lack recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Composition is sound: tools chain well (e.g., list_constraints → get_constraint → compose_prompt). Naming is clear and action-oriented.
Compose a clean unconstrained baseline prompt for a topic. Use this in the baseline+delta workflow: run baseline first for standard analysis, then run lens_compose_prompt with constraints for the delta.
Compose a prompt from a persona template. Loads the persona's constraints and psychology, then generates a structured prompt.
Compose a structured prompt from constraints + topic. This is the core tool: transforms constraint specifications into a complete system prompt ready for a subagent.
Analyze which constraints produce the most useful and surprising sessions. Returns efficacy stats per constraint type, sorted by effectiveness score.
Create a new reasoning session with a topology, topic, and constraints. Returns session_id for tracking.
Get full details of a specific constraint.
Output schemas not documented. All tools return JSON strings, but the structure of those strings (fields, types, nesting) is not specified in tool definitions. LLMs cannot plan downstream calls or extract data reliably without knowing response structure.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools are classified with Risk: READ_ONLY or WRITE in the spec, but these are not exposed in the MCP tool definitions. Agents cannot distinguish safe from destructive operations without reading descriptions.
JSON parameter descriptions lack format/example detail. Parameters like 'constraints' (JSON string) and 'miner_persona' (JSON string) say 'JSON string of...' but do not specify the exact schema, required fields, or valid examples. LLMs must guess the structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Get full details of a specific persona template.
Retrieve a session by ID, including its configuration and current output.
Get full details of a specific topology including workflow definition.
Calculate what fraction of insights from sessions were actually implemented (non-circular metric).
List available cognitive constraints from the library.
List available persona templates.
List all sessions, optionally filtered by topic or topology.
List available cognitive topologies.
Find constraint combinations that frequently appear in successful sessions. Looks for pairs and triples of constraints that co-occur in useful+surprising sessions.
Estimate ROI of using Lens: time saved, quality improvement, decision confidence gain.
Save a Miner-derived persona template to disk.
Get auto-configuration (constraints + topology + intensity) for a topic + goal, based on session history.
Suggest optimal constraints for a topic + goal. Uses data-driven suggestions from session history when available, falls back to heuristic-based suggestions otherwise.
Analyze which topologies produce the best results.
Transform all personas from a Miner AudienceProfilerOutput and optionally save them.
Transform a Miner AudiencePersona into a Lens persona template. Maps demographics, psychographics, and behaviors to cognitive constraints.
Update a session's output and/or efficacy rating.
Error handling lacks recovery guidance. Tools return JSON error objects (e.g., {"error": "Constraint 'X' not found"}) but do not suggest next steps. No guidance on retryability, available alternatives, or how to self-correct.
No pagination support for list tools. lens_list_constraints, lens_list_personas, lens_list_topologies, and lens_list_sessions lack limit/offset or cursor parameters. Large result sets could exhaust context windows.