Intel Agent
Ask natural-language questions over the entire corpus. The agent calls the same underlying data tools and returns a grounded answer with a source trace. pro
The agent is rate-limited to 30 requests / 5 minutes per principal
(separate from the general 600/min limit). It respects your entitlements — a
scoped key's agent only sees its permitted slice.
Ask a question
POST
/api/agent/askSynchronous — returns the full answer once the agent finishes.
Request body
| Field | Type | Description |
|---|---|---|
question | string (2–2000) | Required. The natural-language question. |
session_id | string | Optional client UUID; replays prior turns for follow-ups. Omit for a one-off. |
dashboard_range | string | Optional default window (e.g. 7d) used when the question names no time range. |
context_call_sid | string | Optional call to anchor an "ask about this call" question. |
context_chart_id | string | Optional chart context. |
curl -X POST -H "Authorization: Bearer $BBO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question":"What were the top three impersonated brands last week?","dashboard_range":"7d"}' \
"https://dashboard.martha-honeypot.com/api/agent/ask"
Response
{ "question": "…", "answer": "The top three were Medicare, the IRS, and Apple…",
"tool_calls": [ { "name": "get_top_impersonated_brands",
"args": { "range": "7d", "n": 3 }, "result_preview": "…" } ],
"referenced_call_sids": ["CA…"],
"sources": [ { "type": "metric", "label": "Top brands · last 7 days",
"ref": { "tool": "get_top_impersonated_brands" } } ],
"tokens_used": { "input": 4200, "output": 380 }, "duration_ms": 5120 }
The sources array traces each claim: type is
metric (a KPI/tool call), transcript (a specific
call_sid you can deep-link), or none (a conversational
reply needing no data).
Streamed events
POST
/api/agent/ask-streamSame request body; returns the agent's event list (tool calls and answer chunks) for progressive UIs.
curl -X POST -H "Authorization: Bearer $BBO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question":"How much was asked via gift cards this month?","dashboard_range":"30d"}' \
"https://dashboard.martha-honeypot.com/api/agent/ask-stream"
# → { "events": [ {…tool_call…}, {…answer…} ] }
Conversations (memory)
Pass a stable session_id to make follow-ups coherent. Manage a
conversation's stored turns:
GET
/api/agent/session/{session_id}/v2Rehydrate a conversation's prior turns (scoped to your org).
DELETE
/api/agent/session/{session_id}/v2Clear a conversation.
import uuid, requests
sid = str(uuid.uuid4())
BASE, H = "https://dashboard.martha-honeypot.com", {"Authorization": f"Bearer {KEY}"}
requests.post(f"{BASE}/api/agent/ask",
json={"question": "Top brands last week?", "session_id": sid}, headers=H)
# follow-up remembers context:
requests.post(f"{BASE}/api/agent/ask",
json={"question": "And how much money did the first one ask for?", "session_id": sid}, headers=H)
Support: brianley@silversentinel.ai