> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enfors.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tool reference

> Every tool exposed by the Enfors MCP server.

All tools are tenant-scoped and accept ISO-8601 UTC timestamps for `since` / `until`
(e.g. `2026-06-05T00:00:00Z`). Prefer rollup tools (`list_agents`,
`list_agent_sessions`) before paging individual decisions.

## Discovery & rollups

### list\_agents

List agents visible to you with rollup metrics — decision count, cost, confidence,
activity dates, work-pattern facts, and (when a window is given) outcome quality such as
`value_yield_pct` and `outcome_class_distribution`.

<ParamField path="page" type="int" default="1">Page number (1-based).</ParamField>
<ParamField path="page_size" type="int" default="50">Results per page (max 500).</ParamField>
<ParamField path="since" type="string">ISO-8601 UTC start (inclusive).</ParamField>
<ParamField path="until" type="string">ISO-8601 UTC end (inclusive).</ParamField>
<ParamField path="agent_ids" type="string">Comma-separated agent slugs to restrict results (max 20).</ParamField>
<ParamField path="include_insights" type="bool" default="false">Attach per-agent insight badges.</ParamField>

### list\_agent\_sessions

List sessions for one agent, with AI session summaries, feature linkage, intent clusters,
and quality metrics.

<ParamField path="agent_id" type="string" required>Agent identifier from `list_agents`.</ParamField>

<ParamField path="page" type="int" default="1" />

<ParamField path="page_size" type="int" default="50">Max 500.</ParamField>

<ParamField path="since" type="string" />

<ParamField path="until" type="string" />

<ParamField path="sort_by" type="string">`recent` (default), `rework`, or `contradiction`.</ParamField>
<ParamField path="min_contradiction_ratio" type="float">Only sessions with max contradiction ratio ≥ this (0–1).</ParamField>

### list\_session\_decisions

List decisions in a session (summary fields only, no JSONB blobs).

<ParamField path="session_id" type="string" required />

<ParamField path="page" type="int" default="1" />

<ParamField path="page_size" type="int" default="50" />

<ParamField path="since" type="string" />

<ParamField path="until" type="string" />

<ParamField path="outcome_class" type="string">Filter by outcome class.</ParamField>
<ParamField path="decision_intent" type="string">Filter by work type.</ParamField>

<ParamField path="max_confidence" type="float" />

<ParamField path="min_cost_usd" type="float" />

<ParamField path="min_hallucination_index" type="float" />

<ParamField path="max_grounding_fidelity" type="float" />

<ParamField path="sort_by" type="string" />

### list\_decisions

Query decisions across agents and sessions with the same rich filter set.

<ParamField path="page" type="int" default="1" />

<ParamField path="page_size" type="int" default="50" />

<ParamField path="since" type="string" />

<ParamField path="until" type="string" />

<ParamField path="agent_id" type="string" />

<ParamField path="session_id" type="string" />

<ParamField path="outcome_class" type="string" />

<ParamField path="decision_intent" type="string" />

<ParamField path="max_confidence" type="float" />

<ParamField path="min_cost_usd" type="float" />

<ParamField path="min_hallucination_index" type="float" />

<ParamField path="max_grounding_fidelity" type="float" />

<ParamField path="sort_by" type="string" />

### get\_decision

Get one decision with optional JSONB expansion. Call for a specific decision — not in a
loop over a session.

<ParamField path="session_id" type="string" required />

<ParamField path="ledger_id" type="string" required>UUID of the ledger row.</ParamField>
<ParamField path="include" type="string">Comma-separated blobs: `decision`, `metrics`, `reasoning_trace`, `tool_activity`, … A good default for investigations is `decision,metrics,reasoning_trace`.</ParamField>

<ParamField path="since" type="string" />

<ParamField path="until" type="string" />

## Graph & search

### query\_graph

Traverse the Enfors knowledge graph. Use only for explicit graph traversal — it can be slow
(10s+). Returns `[]` when the graph isn't configured.

<ParamField path="query_type" type="string" required>
  One of: `agent_subjects` (needs `agent_id`), `subject_decisions` (needs `subject_label`),
  `decision_evidence` (needs `ledger_id`), `agent_network` (needs `agent_id`), `graph_stats`.
</ParamField>

<ParamField path="agent_id" type="string" />

<ParamField path="subject_label" type="string" />

<ParamField path="ledger_id" type="string" />

<ParamField path="limit" type="int" default="20">Max 100.</ParamField>
<ParamField path="since" type="string">Accepted for consistency; not applied to traversals.</ParamField>

<ParamField path="until" type="string" />

### search\_similar\_decisions

Find decisions semantically similar to a natural-language query (vector search).

<ParamField path="query" type="string" required>Natural-language description.</ParamField>
<ParamField path="agent_id" type="string">Restrict to one agent.</ParamField>
<ParamField path="limit" type="int" default="20">Max 100.</ParamField>

<ParamField path="since" type="string" />

<ParamField path="until" type="string" />

## Delivery & ROI

### list\_features

List Features with cost / effort / rework aggregates.

<ParamField path="page" type="int" default="1" />

<ParamField path="status" type="string">Filter by Feature status.</ParamField>

<ParamField path="anchor_type" type="string" />

<ParamField path="needs_curation" type="bool">Only Features needing curation.</ParamField>

<ParamField path="since" type="string" />

<ParamField path="until" type="string" />

### get\_feature

Get one Feature's aggregates and member sessions.

<ParamField path="feature_id" type="string" required />

<ParamField path="since" type="string" />

<ParamField path="until" type="string" />

### list\_feature\_merge\_suggestions

List proposed Feature merge pairs with similarity scores.

<ParamField path="page" type="int" default="1" />

<ParamField path="page_size" type="int" default="50" />

<ParamField path="status" type="string" default="pending" />

## Insights & Pulse

### list\_insights

Return the latest insight runs with optional scope / subject filters.

<ParamField path="scope" type="string">`entity`, `agent`, or `session`.</ParamField>

<ParamField path="agent_id" type="string" />

<ParamField path="session_id" type="string" />

<ParamField path="include_dismissed" type="bool" default="false" />

<ParamField path="detail" type="string" default="summary" />

<ParamField path="page" type="int" default="1" />

<ParamField path="page_size" type="int" default="20" />

### get\_pulse\_report

Fetch stored Pulse report(s) for your workspace.

<ParamField path="report_type" type="string" default="weekly">`daily`, `weekly`, or `monthly`.</ParamField>

<ParamField path="latest" type="bool" default="true" />

<ParamField path="limit" type="int" default="3" />

<ParamField path="detail" type="string" default="summary" />

## Presentation

### render\_ui

Render Enfors data as a branded, interactive view. See [render\_ui](/mcp/render-ui).

<ParamField path="html" type="string" required>HTML for the document body (the branded shell wraps it).</ParamField>
<ParamField path="title" type="string">Optional short title for the preview tab.</ParamField>
