buzzabout docs
MCPTools

Tools reference

Every buzzabout__* MCP tool — name, group, required parameters, returned shape.

The MCP server exposes 32 tools across 9 groups. Each tool's description in the live tools/list response opens with a [<Group>] prefix so in-host pickers stay scannable even before any filtering.

All tools require auth — see Authentication. The single exception is buzzabout__ask, which requires OAuth/JWT and rejects api-key callers with a forbidden error.

Group: datasets (8)

ToolRequired parametersReturns
buzzabout__list_datasets{ content: Dataset[], cursor }
buzzabout__get_datasetdataset_idDataset or { error }
buzzabout__create_datasetname{ id, name, created_at }
buzzabout__update_datasetdataset_id, nameDataset
buzzabout__delete_datasetdataset_id{ ok: true } (soft delete)
buzzabout__create_dataset_rundataset_id, search_query{ run_id, dataset_id, status: "pending", next_step, created_at }
buzzabout__list_dataset_runsdataset_id{ content: DatasetRun[], cursor }
buzzabout__get_dataset_rundataset_id, run_idDatasetRun or { error }

search_query is a discriminated union — { type: "prompt", sources, search_query } for keyword search, or { type: "url", source_urls } for direct URL scraping. Optional parameters mirror POST /v1/datasets/{id}/runs.

Group: mentions (1)

ToolRequired parametersReturns
buzzabout__list_mentions{ content: Mention[], cursor }

Defaults to all account-owned datasets. Pass dataset_ids to narrow. Filters, sort, order, cursor, limit mirror the REST mentions endpoint.

Group: audience_datasets (8)

ToolRequired parametersReturns
buzzabout__list_audience_datasets{ content: AudienceDataset[], cursor }
buzzabout__get_audience_datasetaudience_dataset_idAudienceDataset
buzzabout__create_audience_datasetname{ id, name, created_at }
buzzabout__update_audience_datasetaudience_dataset_id, nameAudienceDataset
buzzabout__delete_audience_datasetaudience_dataset_id{ ok: true }
buzzabout__create_audience_dataset_runaudience_dataset_id, source_dataset_id{ run_id, ..., status: "pending", next_step, created_at }
buzzabout__list_audience_dataset_runsaudience_dataset_id{ content: AudienceDatasetRun[], cursor }
buzzabout__get_audience_dataset_runaudience_dataset_id, run_idAudienceDatasetRun

total_profile_count defaults to 850 (range 1–2000) on create_audience_dataset_run.

Group: audience_profiles (1)

ToolRequired parametersReturns
buzzabout__list_audience_profiles{ content: Profile[], cursor }

Mirrors POST /v1/audience_profiles. Defaults to scoping by all account-owned audience datasets.

Group: tracking_agents (8)

ToolRequired parametersReturns
buzzabout__create_tracking_agentname, instructionsTrackingAgent
buzzabout__list_tracking_agents{ content: TrackingAgent[], cursor }
buzzabout__get_tracking_agentagent_idTrackingAgent
buzzabout__pause_tracking_agentagent_id{ ok: true }
buzzabout__resume_tracking_agentagent_id{ ok: true }
buzzabout__delete_tracking_agentagent_id{ ok: true }
buzzabout__trigger_tracking_agent_runagent_id{ run_id, status: "pending", next_step }
buzzabout__list_tracking_agent_messagesagent_id{ content: TrackingAgentMessage[], cursor }

PATCH is deliberately not exposed via MCP — uncommon admin op; do it via the REST endpoint.

Group: patterns (4)

ToolRequired parametersReturns
buzzabout__create_pattern_detectiondataset_id, research_question, name{ run_id, status: "pending", next_step, created_at }
buzzabout__get_pattern_detection_runrun_id{ run_id, status, pattern_id } (polling shape)
buzzabout__get_patternpattern_idPattern
buzzabout__get_pattern_itempattern_id, item_idPatternItem

Group: custom_parameters (9)

ToolRequired parametersReturns
buzzabout__list_custom_parameters{ content: CustomParameter[], cursor }
buzzabout__create_custom_parametername, instructions, value_typeCustomParameter
buzzabout__get_custom_parameterparameter_idCustomParameter
buzzabout__update_custom_parameterparameter_id, bodyCustomParameter
buzzabout__delete_custom_parameterparameter_id{ ok: true }
buzzabout__preview_custom_parameterinstructions, value_type, post_refs (1–5)preview rows (no charge)
buzzabout__trigger_custom_parameter_runparameter_id, scope: { kind: "dataset", id }{ run_id, status: "pending", next_step }
buzzabout__list_custom_parameter_runsparameter_id{ content: CustomParameterRun[], cursor }
buzzabout__get_custom_parameter_runparameter_id, run_idCustomParameterRun with mentions_total / done / error

scope stays a tagged union with one variant in v1 so additional scopes can land additively.

Group: chat (3)

ToolRequired parametersReturns
buzzabout__askprompt{ chat_id, message_id, text, references } (OAuth/JWT only — API-key callers get forbidden)
buzzabout__get_chatchat_id{ id, name, tracking_agent_id, created_at }
buzzabout__list_chat_messageschat_id{ content: ChatMessage[], cursor } — ascending by created_at, default limit=25, max 100

buzzabout__ask — the assistant tool

Hand a prompt to the AI assistant; get a markdown reply, an optional chat_id to continue the conversation, and a references[] array of typed pointers into buzzabout resources.

Input:

FieldTypeRequiredNotes
promptstringyesFree-form question.
chat_idstringnoContinue a prior chat. KSUID, no prefix. Omit to start fresh.
context.datasetsstring[]noScope the assistant to one or more dataset_ids.
context.audience_datasetsstring[]noScope to one or more audience_dataset_ids.

Output:

{
  "chat_id": "01H...",
  "message_id": "01H...",
  "text": "...markdown body with inline [post links](post:reddit:t3_1...)...",
  "references": [
    { "type": "pattern", "id": "pt_..." },
    { "type": "dataset", "id": "ds_..." }
  ]
}

The text is markdown; inline post citations use the [label](post:source:id) scheme. references[] is a flat list of typed pointers — see Reference types for the six types and their resolution endpoints.

Pass the returned chat_id back as the chat_id argument to continue the same chat across turns.

Group: account (2)

ToolRequired parametersReturns
buzzabout__get_meUser with account, plan, members, teams
buzzabout__list_usage_history{ content: UsageItem[], cursor }

Pagination model

All list_* tools return:

{
  "content": [ /* rows */ ],
  "cursor": "eyJ...="
}

Pass the cursor back as the cursor argument to fetch the next page. A null cursor means you've hit the end. Cursors on filtered list endpoints (mentions, audience profiles) encode the sort dimension, so don't reuse a cursor across sort changes.

Polling async runs

create_dataset_run, create_audience_dataset_run, create_pattern_detection, trigger_custom_parameter_run, and trigger_tracking_agent_run all return:

{
  "run_id": "dr_01H...",
  "status": "pending",
  "next_step": "Call buzzabout__get_dataset_run with this run_id to poll completion."
}

Poll the corresponding get_*_run until status.type is completed or failed. Each tool's response carries the same status envelope as the REST API:

{
  "status": {
    "type": "working",
    "steps": [
      { "name": "scraping", "completed_at": 1714564890 }
    ]
  }
}

Error shape

Tool errors come back as a JSON object with an error field:

{
  "error": {
    "code": "dataset_not_found",
    "message": "Dataset not found",
    "status": 404
  }
}

The code is stable — match on it. The message is for humans. status mirrors the HTTP status the equivalent REST call would return.

PATCH and DELETE tools exist for datasets, audience_datasets, custom_parameters, and tracking_agents — but PATCH for tracking_agents intentionally stays REST-only (uncommon admin op).

Next steps

On this page