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/ask

Synchronous — returns the full answer once the agent finishes.

Request body

FieldTypeDescription
questionstring (2–2000)Required. The natural-language question.
session_idstringOptional client UUID; replays prior turns for follow-ups. Omit for a one-off.
dashboard_rangestringOptional default window (e.g. 7d) used when the question names no time range.
context_call_sidstringOptional call to anchor an "ask about this call" question.
context_chart_idstringOptional 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-stream

Same 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}/v2

Rehydrate a conversation's prior turns (scoped to your org).

DELETE/api/agent/session/{session_id}/v2

Clear 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)