DAVA Agent.

Two modes from one engine. Chat — conversational access for business users, with citations on every turn. MCP server — DAVA's tools exposed over the Model Context Protocol so customer agents (Claude Desktop, custom) can call them.

Agent is how non-technical stakeholders interact with the cleaned data. Every chat turn is hash-chained: who asked what, what tools were called, what data was returned. In Decisioning mode, write tools require human approval.

Product · 04

What Agent ships with.

Each capability runs in the shared engine — the Norm pipeline, the Trust audit chain, the Decisioning mode toggle. Same substrate as the other four products.

01

Citations on every turn

Agent never claims a number without naming the row + column it came from. Click the citation, jump to the row in the dataset.

02

Vertical profiles

Default analytical assistant or one of three specialized profiles: medical-icu (deterioration risk), finance-fund-anomaly (NAV/performance), public-sector-irregularity (tax/permit flagging). Each tunes the system prompt + tool selection.

03

MCP server

DAVA's read tools exposed over the Model Context Protocol. Plug into Claude Desktop or a custom agent. Six tools today: trust events, lineage, policies, norm preview, connect results, agent sessions.

04

Assistive vs Decisioning

Assistive (default): the agent suggests, the human acts. Decisioning: write tools execute under contract amendment. Mode toggle is a per-org setting; every session inherits and audits the mode.

SDK · python

Wire it in under a minute.

The Python SDK is the most mature. TypeScript follows the same shape. Both ship with strict types and async-first APIs.

Install
pip install dava-agent
main.py
import asyncio
from dava_agent import Client

async def main():
    async with Client(api_key="dava_live_…") as c:
        sess = await c.create_session(title="Friday import review")
        turn = await c.send_message(
            sess.id,
            "Were there rows over threshold last night?",
        )
        print(turn.assistant_message.content)

asyncio.run(main())
API surface

Endpoints you'll actually hit.

Same auth as the rest of DAVA: bearer API key on Authorization: Bearer dava_live_… or session cookie + CSRF for browser flows.

MethodEndpointPurpose
GET/v1/agent/profilesList vertical-use-case profiles.
POST/v1/agent/sessionsCreate a new chat session. Body: {title?, profile?}.
GET/v1/agent/sessionsList sessions for the active org.
POST/v1/agent/sessions/{id}/messagesSend a user turn → returns persisted user + assistant messages.

Bring us a agent problem we can prove.

We'll run your hardest dataset through DAVA Agent during a 5-day pilot. You keep the cleaned output and the evidence pack either way.