Meet Maggie · ThreatMinder AI

Ship Maggie into your client's workflow.

Maggie is the ThreatMinder AI agent. Pick an integration surface — MCP for tool-driven clients, Batch API for CSV operations, Batch Analytics for scored documents — and move from first call to working rollout with live examples.

base URL

3 integration surfaces Examples included Production URL visible
Copilots and agents CSV processing Document scoring

Quick examples

Switch surfaces and inspect the first call.

MCP

Tool-first clients

X-API-Key JSON-RPC Session or stateless
01 Initialize
02 List tools
03 Create batch
POST /api/v2/mcp
curl -X POST "__PRODUCTION_URL__/api/v2/mcp" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_batch"}}'
Return a batch UUID, then fetch the processed result through the same MCP surface.

Batch API

CSV-driven operations

X-API-Key multipart upload UUID polling
01 Upload CSV
02 Store UUID
03 Poll result
POST /api/v2/batch
curl -X POST "__PRODUCTION_URL__/api/v2/batch" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "file=@customers.csv" \
  -F "name=customer-rollout"
Best for operational teams moving CSV payloads through a predictable async contract.

Batch Analytics

Scored document workflows

Bearer document ingest query by intent
01 Ingest docs
02 Run scoring
03 Query batch
POST /api/v2/score-data/batch
curl -X POST "__PRODUCTION_URL__/api/v2/score-data/batch" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"intent":"vendor-risk","documents":[{"uri":"s3://bucket/doc.pdf"}]}'
Use this path when the customer needs scored document outputs instead of raw batch CSV.

Integration Studio

Work inside the surface you are actually implementing.

The primary tabs switch between product surfaces. The nested tabs switch between workflow, examples, and operational reference. That keeps the first screen compact while still putting real payloads one click away.

Step 01

Initialize or go stateless.

Open a stateful session when your client maintains context. Use a single POST when each call is independent.

Step 02

List tools dynamically.

Call tools/list to inspect the current runtime schemas before your client issues tool calls.

Step 03

Create the batch, then retrieve the result.

The current tool set exposes create_batch and get_batch_result so job creation and retrieval stay explicit.

POST /api/v2/mcp
curl -X POST "__PRODUCTION_URL__/api/v2/mcp" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "clientInfo": { "name": "your-client", "version": "1.0.0" },
      "capabilities": {}
    }
  }'
POST tools/list
curl -X POST "__PRODUCTION_URL__/api/v2/mcp" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list",
    "params": {}
  }'
POST tools/call
curl -X POST "__PRODUCTION_URL__/api/v2/mcp" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "create_batch",
      "arguments": {
        "entityType": "BUSINESS",
        "useCase": "RESTAURANT-ONBOARD",
        "csvContent": "name,address,city,state,zip\nTaco Palace,123 Main St,Austin,TX,78701"
      }
    }
  }'

Available tools

create_batch

Accepts entityType, useCase, and csvContent. Returns the batch identity.

Available tools

get_batch_result

Accepts a UUID id and returns the processed CSV when the result is ready.

Step 01

Choose entity type and use case.

Batch validation depends on both, so map your source schema before upload.

Step 02

Upload the file and persist the UUID.

Treat the response ID as your job identity for retries, polling, and audit state inside your own system.

Step 03

Poll until the processed CSV is ready.

When the result exists, ThreatMinder returns CSV content containing the enriched output.

PERSON template

first_name,last_name,address,city,state,zip,phone1,email,dob,external_id
Jane,Doe,123 Main St,Austin,TX,78701,5125550199,jane@example.com,1989-08-03,person-001

BUSINESS template

name,address,city,state,zip,phone1,email,external_id
Taco Palace,123 Main St,Austin,TX,78701,5125550148,ops@tacopalace.com,business-001
POST /api/v2/batch
curl -X POST "__PRODUCTION_URL__/api/v2/batch" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "entityType=PERSON" \
  -F "useCase=PARTNER-PERSONNEL" \
  -F "file=@./people.csv;type=text/csv"
GET /api/v2/batch/:id
curl "__PRODUCTION_URL__/api/v2/batch/550e8400-e29b-41d4-a716-446655440000" \
  -H "X-API-Key: YOUR_API_KEY"
201 Created
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "entityType": "PERSON",
  "useCase": "PARTNER-PERSONNEL"
}
POST /api/v2/score-data
curl -X POST "__PRODUCTION_URL__/api/v2/score-data" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -d '{
    "usecase": "partner-personnel",
    "batchId": "9edbab6e-7d52-4383-b813-cee40345877f",
    "metadata": { "customerId": "acme-42" },
    "docs": [
      {
        "id": "1745029250154",
        "title": "Open source finding",
        "content": "Subject appears in several posts describing threats and fraud.",
        "type": "WEB",
        "source": "https://example.com/report",
        "language": "en"
      }
    ],
    "options": {
      "priority": "sync"
    }
  }'
GET /api/v2/score-data/:batchId/summary
curl "__PRODUCTION_URL__/api/v2/score-data/9edbab6e-7d52-4383-b813-cee40345877f/summary" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
GET /api/v2/score-data/:batchId/risk-keys
curl "__PRODUCTION_URL__/api/v2/score-data/9edbab6e-7d52-4383-b813-cee40345877f/risk-keys?limit=50&offset=0&sortBy=count&sortOrder=desc" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
GET /api/v2/score-data/:batchId/documents
curl "__PRODUCTION_URL__/api/v2/score-data/9edbab6e-7d52-4383-b813-cee40345877f/documents?limit=25&offset=0&sortBy=risk&sortOrder=desc" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Readable views

/summary and /text-summary

Use these endpoints when the consumer needs fast narrative or executive context.

Operational views

/documents and /risk-keys

Use these when the consumer needs sortable, filterable, or queue-oriented batch views.

Need the public site?

ThreatMinder.com is one click away.

Use the official site when the reader needs the external brand story. Use the studio above when the reader needs working integration detail, live payloads, and reference context.