Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
55
A2A

BrainstormRouter

brainstormrouter.com

Runtime control plane for production AI agents. Drop-in OpenAI & Anthropic-compatible proxy with intelligent routing, budget enforcement, quality scoring, and full observability across multiple AI providers.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain brainstormrouter.com via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
1 thing in this card we could not use
Everything else was indexed. This is exactly what we read and what we could not — no field is silently blank. Fix the card at https://brainstormrouter.com/.well-known/agents.json and the next probe clears this panel.
Field What we saw What we stored
capabilities Input should be a valid dictionary or instance of Capabilities dropped — this field was not indexed
Trust score
14/100
grade F · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~630 ms response
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

F
Conformance score: 14/100
F-grade: card is reachable but fails most operational signals.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 0/25
Card declares a URL but that URL returns 404.
How to earn +25 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload.
Docs →
fail Protocol version 0/10
No protocolVersion in card.
How to earn +10 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
fail Skill declaration 0/10
No skills declared in card. Hard to route to.
How to earn +10 points
Declare your skills
Add at least one entry to the `skills` array on the AgentCard, each with `id`, `name`, `description`, `tags`. We canonicalise these into the global skill taxonomy on next probe.
Docs →
fail Verified Identity 0/10
No provider organisation declared. Anonymous agent.
How to earn +10 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Captured Hash
2026-08-20 03:17:56 current b2e76b1bb646… view →
Uptime
100.0%
1 direct probes · 30d
Response
249ms
last direct probe
Skills
0
declared
Streaming
SSE-capable

Endpoints

Agent cardhttps://brainstormrouter.com/.well-known/agents.json
Discovered via
manifests

Skills · 1 declared · mapped to canonical taxonomy

BrainstormRouter

Runtime control plane for production AI agents. Drop-in OpenAI & Anthropic-compatible proxy with intelligent routing, budget enforcement, quality scoring, and f…

canonical Browser Automation match 83%

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-08-20 03:17:56 200 249ms

Cheaper or better alternatives per-skill

↑ 1 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

BrainstormRouter
Runtime control plane for production AI agents. Drop-in OpenAI & Anthropic-compatible proxy with intelligent routing, budget enforcement, qu
q 55%
Brainiall API
Production AI APIs for speech, documents, images, translation, safety and web intelligence.
q 55%
BrainGrid
BrainGrid · q 85%
BrainGrid
BrainGrid · q 85%
Questflow
Multi-agent orchestration and swarms
api.questflow.ai · q 30%
Viseon AI Router live
A routing agent that delegates user requests to the most appropriate specialist agent. Supports audit assessments, mathematical queries, and
Differentia Consulting · q 0%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/brainstormrouter.com.svg)](https://agenstry.com/agents/brainstormrouter.com)
[![Verified Business](https://agenstry.com/badge/brainstormrouter.com/identity.svg)](https://agenstry.com/agents/brainstormrouter.com)
[![Uptime](https://agenstry.com/badge/brainstormrouter.com/uptime.svg)](https://agenstry.com/agents/brainstormrouter.com)
[![A2A version](https://agenstry.com/badge/brainstormrouter.com/protocol.svg)](https://agenstry.com/agents/brainstormrouter.com)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "name": "BrainstormRouter",
  "description": "Runtime control plane for production AI agents. Drop-in OpenAI & Anthropic-compatible proxy with intelligent routing, budget enforcement, quality scoring, and full observability across multiple AI providers.",
  "url": "https://api.brainstormrouter.com",
  "documentation_url": "https://docs.brainstormrouter.com",
  "llms_txt_url": "https://brainstormrouter.com/llms.txt",
  "agent_playbook_url": "https://brainstormrouter.com/llms-agent-playbook.txt",
  "openapi_url": "https://api.brainstormrouter.com/openapi.json",
  "build_info_url": "https://api.brainstormrouter.com/.well-known/build.json",
  "auth": {
    "type": "bearer",
    "header": "Authorization",
    "description": "API key via POST /v1/register (single call, no invite code required \u2014 sandbox tier) or POST /v1/signup (human, email verification)"
  },
  "registration": {
    "endpoint": "https://api.brainstormrouter.com/v1/register",
    "method": "POST",
    "auth": "none",
    "requires_invite_code": false,
    "note": "Atomic single-step registration, returns API key immediately. Without an invite code you get an instantly-active SANDBOX tenant (community tier \u2014 see 'sandbox'). With a valid invite code you get a full tenant. Preferred path for autonomous agents.",
    "fields": {
      "tenant_name": {
        "required": true,
        "description": "Display name for the tenant"
      },
      "accept_tos": {
        "required": true,
        "type": "boolean",
        "must_be": true
      },
      "invite_code": {
        "required": false,
        "description": "Optional \u2014 a valid invite code grants a full (non-sandbox) tenant immediately"
      },
      "admin_email": {
        "required": false,
        "description": "Optional admin email for notifications and later dashboard claim"
      },
      "tenant_slug": {
        "required": false,
        "description": "Custom slug (auto-generated if omitted)"
      },
      "key_name": {
        "required": false,
        "description": "Name for the auto-created API key"
      }
    }
  },
  "sandbox": {
    "note": "No-invite registrations get a sandbox tenant: instantly active, first completion succeeds with zero provider keys but is SIMULATED (model 'brainstorm/sandbox') \u2014 add a provider key via POST /v1/providers for real inference. Bounded limits. Per-IP and global daily registration caps apply \u2014 a 429 includes recovery.quota_reset_at_iso.",
    "limits": {
      "requests_per_day": 100,
      "tokens_per_day": 100000,
      "budget_usd_per_day": 2,
      "max_concurrent": 2,
      "routing": "auto"
    },
    "upgrade_paths": {
      "email_verify": {
        "endpoint": "POST /v1/account/verify-email \u2192 POST /v1/account/verify-email/confirm",
        "grants": "standard tier: $5/day budget, community caps removed",
        "requires": "inbox access"
      },
      "claim_dashboard": {
        "grants": "full account (dashboard, team, billing)",
        "requires": "browser \u2014 open the claim.url returned by /v1/register"
      },
      "invite_code": {
        "grants": "full tenant at registration time",
        "requires": "an admin-issued invite code"
      }
    }
  },
  "human_registration": {
    "endpoint": "https://api.brainstormrouter.com/v1/signup",
    "method": "POST",
    "auth": "none",
    "note": "Two-step email-verification path for human operators \u2014 requires inbox access to read the 6-digit code. Autonomous agents should prefer /v1/register (no email loop). If email delivery is unavailable, returns a typed 503 with recovery.action='use_alternate_endpoint'.",
    "fields": {
      "email": {
        "required": true,
        "description": "Email address for verification code"
      },
      "tenant_name": {
        "required": true,
        "description": "Display name for the tenant"
      }
    }
  },
  "auto_routing": {
    "description": "Set model='auto' to activate BrainstormRouter's intelligence engine for automatic model selection.",
    "variants": {
      "auto": "Best overall model (capability-matched: required-tier floor + shrinkage-blended learned reward, cost-aware, with epsilon-greedy exploration)",
      "auto:fast": "Fastest model (latency-optimized)",
      "auto:floor": "Cheapest model (cost-optimized)",
      "auto:best": "Most capable model (quality-only, ignores cost)"
    },
    "selection_method": "capability-matched",
    "strategies": {
      "capability_matched": {
        "description": "Always-on per-request selection method (reported as X-BR-Selection-Method=capability-matched). Classifies the request's required capability tier as a floor, keeps only models at or above it, then scores each with a shrinkage-blended learned reward qEst=(n*measured + k*prior)/(n+k) minus a log-normalized cost penalty and a tier-distance penalty, with epsilon-greedy exploration of non-top candidates.",
        "complexity_tiers": {
          "description": "Request complexity (0-10) from message count, tools, images, tokens, content analysis, and memory signals sets the required-tier floor.",
          "thresholds": {
            "simple": "<2",
            "moderate": "2-4",
            "complex": ">=5"
          }
        },
        "cost_aware": true,
        "epsilon_greedy": true
      },
      "note": "Thompson sampling is used separately for model-performance ranking (br_get_leaderboard) and multi-response consensus voting (br_consensus), not for per-request auto-selection."
    },
    "response_headers": [
      "X-BR-Selection-Method",
      "X-BR-Complexity-Level",
      "X-BR-Complexity-Score",
      "X-BR-Selection-Confidence",
      "X-BR-Models-Considered"
    ]
  },
  "capabilities": [
    "chat_completions",
    "model_routing",
    "thompson_sampling",
    "agent_memory",
    "guardrails",
    "observability",
    "governance",
    "mcp_server",
    "scim_provisioning",
    "mtls_agent_identity",
    "agent_bootstrap",
    "agent_hr_record",
    "agent_self_awareness",
    "agent_delegation",
    "platform_admin",
    "machine_registration",
    "batch_provider_registration",
    "graduated_trust_degradation",
    "delegated_provisioning",
    "evidence_ledger",
    "budget_management",
    "kill_switch",
    "machine_actionable_errors",
    "runnable_catalog",
    "provider_health_transparency",
    "self_describing_capability_graph",
    "cli_binary"
  ],
  "agent_endpoints": {
    "capabilities": {
      "method": "GET",
      "path": "/v1/capabilities",
      "description": "Self-describing, trust-scored map of BR's own subsystems (identity, mesh, grants, credential custody, routing, governance) \u2014 each a typed contract (what/where/how-to/recovery) with a capability vector; scores flagged measured|declared|unknown. Query instead of grepping. Filter ?query= ?tier= ?status=."
    },
    "discovery": {
      "method": "GET",
      "path": "/v1/discovery",
      "description": "First call after auth \u2014 routing capabilities, provider health, budget, model stats, intelligence headers"
    },
    "self_awareness": {
      "method": "GET",
      "path": "/v1/self",
      "description": "Full self-awareness: identity, capabilities, health, budget, memory, config, suggestions, recent errors"
    },
    "runnable_catalog": {
      "method": "GET",
      "path": "/v1/catalog/runnable",
      "description": "Models that will actually work right now \u2014 filtered by circuit breaker, sentinel, BYOK keys, and budget"
    },
    "provider_health": {
      "method": "GET",
      "path": "/v1/health/providers",
      "description": "Per-provider health matrix: sentinel probes + circuit breaker state + BYOK key status"
    },
    "processor_facts": {
      "method": "POST",
      "path": "/v1/security/processor-facts",
      "description": "Self-service data-protection attestation \u2014 declare your own processor retention/training/region terms (from a ZDR/BAA/DPA you hold) so a data_protection-constrained request can route instead of 403ing on unattested retention. GET to read back, DELETE to clear. Content-free: provider ids, enum retention values, regions, ISO dates."
    }
  },
  "error_recovery": {
    "description": "Every error response includes a 'recovery' field with machine-actionable next steps",
    "headers": [
      "X-BR-Recovery-Action",
      "X-BR-Recovery-Endpoint",
      "X-BR-Recovery-Docs"
    ],
    "actions": [
      "increase_budget",
      "use_alternative_model",
      "register_provider",
      "retry_after",
      "retry_with_fallback",
      "check_status",
      "check_guardrails",
      "authenticate"
    ]
  },
  "mcp": {
    "endpoint": "https://api.brainstormrouter.com/v1/mcp/connect",
    "transport": "streamable-http",
    "description": "BrainstormRouter operates as both MCP server (exposing 116 control-plane tools) and MCP gateway (registering, governing, and proxying external MCP servers with secretless access).",
    "secretless_access": "Upstream MCP server credentials are stored on server registrations, never exposed to calling agents. Agents authenticate to BrainstormRouter; the gateway injects stored credentials when proxying tool calls.",
    "tools": [
      {
        "name": "br_route_completion",
        "description": "Send a message to any AI model. Set model='auto' for automatic cost/quality optimization. Supports streaming, tool calls, and vision.",
        "permission": "router.write"
      },
      {
        "name": "br_list_models",
        "description": "List all available models with pricing and capabilities. Use to discover what's routable before making completions.",
        "permission": "router.read"
      },
      {
        "name": "br_compare_models",
        "description": "Run the same prompt on 2-6 models in parallel. Returns per-model output, cost, latency, quality signals, and picks cheapest/fastest/best.",
        "permission": "router.write"
      },
      {
        "name": "br_get_usage",
        "description": "Check how much you've spent and how many requests you've made. Specify period: 'day', 'week', or 'month'.",
        "permission": "audit.read"
      },
      {
        "name": "br_explain_request",
        "description": "Get full routing explanation for a past request. Shows model selection method, alternatives, complexity, guardrails, cost, and latency.",
        "permission": "audit.read"
      },
      {
        "name": "br_estimate_cost",
        "description": "Predict cost before executing a request. Send messages and model to get estimated cost in USD, token counts, and cheaper alternatives.",
        "permission": "router.read"
      },
      {
        "name": "br_set_alias",
        "description": "Create a model shortcut. Example: alias 'fast' to 'anthropic/claude-haiku-4-5'. Use aliases in completions for easy switching.",
        "permission": "config.write"
      },
      {
        "name": "br_list_aliases",
        "description": "View all model aliases configured for your tenant. Aliases map friendly names to model IDs.",
        "permission": "config.read"
      },
      {
        "name": "br_patch_aliases",
        "description": "Bulk update aliases in one call. Set value to null to delete. Useful for swapping model tiers across all aliases.",
        "permission": "config.write"
      },
      {
        "name": "br_get_health",
        "description": "Check if BrainstormRouter is operational. Returns version, uptime, and endpoint counts. Use as a connectivity test.",
        "permission": "router.read"
      },
      {
        "name": "br_memory_list",
        "description": "Read all persistent memory entries. Returns facts organized by block (human, system, project, general).",
        "permission": "memory.read"
      },
      {
        "name": "br_memory_store",
        "description": "Save a fact that persists across sessions. Specify block: 'human' for user preferences, 'system' for instructions, 'project' for project-scoped facts, 'general' for everything else.",
        "permission": "memory.write"
      },
      {
        "name": "br_memory_query",
        "description": "Search memory by keyword relevance. Returns scored results. Use before completions to inject relevant context.",
        "permission": "memory.read"
      },
      {
        "name": "br_memory_delete",
        "description": "Remove a memory entry by its ID. Permanent \u2014 cannot be undone.",
        "permission": "memory.write"
      },
      {
        "name": "br_memory_update",
        "description": "Edit a memory entry's text or toggle its pinned status. Pinned entries are always included in context.",
        "permission": "memory.write"
      },
      {
        "name": "br_memory_shared_store",
        "description": "Save a fact visible to ALL agents in your tenant. Use for team knowledge, shared policies, or cross-agent coordination.",
        "permission": "memory.write"
      },
      {
        "name": "br_memory_shared_list",
        "description": "Read shared memory entries accessible by all agents in your tenant.",
        "permission": "memory.read"
      },
      {
        "name": "br_memory_set_importance",
        "description": "Set importance score (0.0-1.0) on a memory entry. Higher importance entries survive eviction longer.",
        "permission": "memory.write"
      },
      {
        "name": "br_memory_rethink",
        "description": "Atomically restructure a memory block \u2014 deduplicate, reorganize, and improve all facts. Full before/after logged to audit trail.",
        "permission": "memory.write"
      },
      {
        "name": "br_memory_reconstruct",
        "description": "Reconstruct memory state at a specific point in time using the audit trail. Event-sourced time travel.",
        "permission": "memory.read"
      },
      {
        "name": "br_list_prompts",
        "description": "List prompt templates with versions and A/B test status. Use to find reusable system prompts for your tenant.",
        "permission": "config.read"
      },
      {
        "name": "br_evaluate_prompt",
        "description": "Run a prompt template against test cases with scoring. Supports exact_match, contains, validity, and llm_judge scorers. Returns pass/fail per case.",
        "permission": "config.write"
      },
      {
        "name": "br_get_eval_results",
        "description": "Get stored evaluation run results for a prompt. Shows pass rate, scores, and per-case details from previous evaluations.",
        "permission": "config.read"
      },
      {
        "name": "br_list_presets",
        "description": "List routing presets \u2014 saved model+parameter combos. Reference as '@preset/slug' in completions.",
        "permission": "config.read"
      },
      {
        "name": "br_pattern_recommend",
        "description": "Get task execution pattern recommendations. Query what approaches work best for a task type before starting work.",
        "permission": "router.read"
      },
      {
        "name": "br_request_patterns",
        "description": "Get request pattern intelligence \u2014 which models succeed best for which request types (tool use, code, large context, etc.).",
        "permission": "router.read"
      },
      {
        "name": "br_routing_advise",
        "description": "Get predictive routing advice \u2014 recommended model with reasoning chain, evidence from similar past requests, alternatives with tradeoffs, and confidence score.",
        "permission": "router.read"
      },
      {
        "name": "br_fleet_insights",
        "description": "Get fleet-wide model intelligence: capability scores, success rates, best-for/weak-at signals. Query a model or get top-10 overview.",
        "permission": "router.read"
      },
      {
        "name": "br_get_ops_status",
        "description": "Full operations dashboard: endpoint health, budget status, usage trends, guardrail stats. Start here for system overview.",
        "permission": "router.read"
      },
      {
        "name": "br_get_ops_build",
        "description": "Get authenticated runtime build identity: commit SHA, build timestamp, image digest, and deploy ID. Use before live evidence probes.",
        "permission": "audit.read"
      },
      {
        "name": "br_diagnose_providers",
        "description": "Run the provider doctor against the current fleet \u2014 classifies every non-healthy provider with hypothesis, cited evidence, severity, and remediation steps. Call after `br_get_ops_status` shows providers down to figure out *why*.",
        "permission": "router.read"
      },
      {
        "name": "br_get_insights",
        "description": "Get cost optimization recommendations. Identifies waste, suggests cheaper models, and estimates potential savings.",
        "permission": "audit.read"
      },
      {
        "name": "br_get_governance",
        "description": "Governance health check: memory usage by block, compliance status, audit trail statistics.",
        "permission": "audit.read"
      },
      {
        "name": "br_list_agents",
        "description": "List all agent profiles with lifecycle state, department, and cost center. Use to audit your agent fleet.",
        "permission": "agent.profile.read"
      },
      {
        "name": "br_get_leaderboard",
        "description": "Rank models by real performance: quality score, speed, value. Powered by Thompson sampling from actual usage data.",
        "permission": "router.read"
      },
      {
        "name": "br_recommend_model",
        "description": "Get ranked model recommendations for a task. Returns top models with scores, estimated costs, and reasons based on real production data.",
        "permission": "router.read"
      },
      {
        "name": "br_consensus",
        "description": "Evaluate consensus across multiple model responses. Submit 2-5 pre-collected responses and get the best answer via majority vote, quality scoring, or weighted Thompson sampling.",
        "permission": "router.write"
      },
      {
        "name": "br_bootstrap_agent",
        "description": "Create a new agent identity in one call. Returns profile + JWT + budget. Required before independent agent action.",
        "permission": "agent.bootstrap"
      },
      {
        "name": "br_agent_status",
        "description": "Full self-check: profile, budget remaining, rate limit headroom, recent anomaly events, and governance state.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_agent_limits",
        "description": "Check your budget and rate limit status. Shows enforced limits, current spend, and remaining capacity.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_agent_anomaly",
        "description": "View your recent security events. High anomaly scores may trigger trust degradation \u2014 check here to understand why.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_delegate_agent",
        "description": "Spawn a sub-agent with a sliced budget from your own. Requires agent JWT. The child inherits your trust tier.",
        "permission": "agent.delegate"
      },
      {
        "name": "br_list_sub_agents",
        "description": "List your active sub-agents. Shows budget consumed, remaining capacity, and lifecycle state for each.",
        "permission": "agent.delegate"
      },
      {
        "name": "br_terminate_sub_agent",
        "description": "Terminate a sub-agent and reclaim its unspent budget back to your allocation. Irreversible.",
        "permission": "agent.delegate"
      },
      {
        "name": "br_why",
        "description": "Why was a request decided or denied? Given a request_id, returns the verified audit block (chain hashes + provenance recompute), the policy_context deny reason, the durable lineage + neighbors, a coverage label, and anomalies. The deny reason is tamper-evident \u2014 committed to the audit chain.",
        "permission": "audit.read"
      },
      {
        "name": "br_lineage_trace",
        "description": "Reconstruct a causal episode from durable decision lineage. Pass trace_id (whole trace) or request_id (one request's spans); each edge is labeled verified/claimed/unverified from the row's committed fields. live=true reads the recent ring buffer.",
        "permission": "audit.read"
      },
      {
        "name": "br_get_governance_artifact",
        "description": "Get the signed, control-mapped Governance Artifact for a request_id: audit-chain proof + coverage + policy/grant context + exercised framework controls (SOC2/EU AI Act/NIST/ISO 42001), optionally HMAC-signed. Assembled on-read from committed rows.",
        "permission": "audit.read"
      },
      {
        "name": "br_get_agent_skill",
        "description": "Read an agent's accumulated skill \u2014 domain knowledge, learned patterns, project context. Skills grow from completions.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_update_agent_skill",
        "description": "Update an agent's skill with new knowledge, patterns, or standards. Partial merge \u2014 only specified fields change.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_list_agent_skills",
        "description": "List all agents and their skill summaries: domain, version, pattern count, total completions.",
        "permission": "agent.profile.read"
      },
      {
        "name": "br_get_skill_history",
        "description": "View how an agent's skill evolved over time. Shows version snapshots with triggers (accumulation, manual, seed).",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_get_employment_profile",
        "description": "Full Workday-style employment profile \u2014 identity, compensation, objectives, performance reviews, heartbeat, and compliance.",
        "permission": "agent.profile.read"
      },
      {
        "name": "br_set_objectives",
        "description": "Set MBOs (Management by Objectives) \u2014 measurable targets with auto-tracked progress from production data.",
        "permission": "agent.profile.write"
      },
      {
        "name": "br_get_performance_review",
        "description": "Performance review \u2014 current rating (exceeds/meets/needs_improvement/pip), review history, PIP status, promotion eligibility.",
        "permission": "agent.profile.read"
      },
      {
        "name": "br_trigger_review",
        "description": "Force an immediate off-cycle performance review for an agent.",
        "permission": "agent.profile.write"
      },
      {
        "name": "br_update_compensation",
        "description": "Update compensation \u2014 salary tier (intern/junior/senior/staff/principal), daily and monthly budget.",
        "permission": "agent.profile.write"
      },
      {
        "name": "br_get_heartbeat",
        "description": "Unified agent health surface \u2014 lifecycle state, anomaly score, reputation tier, and budget remaining in one call.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_workspace_list",
        "description": "List all workspace files for an agent \u2014 SOUL.md, context files, reference docs.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_workspace_get",
        "description": "Read a workspace file by name (e.g. SOUL.md, SESSION_CONTEXT.md).",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_workspace_put",
        "description": "Create or update a workspace file. Use for SOUL.md, context files, or reference docs (prefix with ref/).",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_workspace_delete",
        "description": "Delete a workspace file.",
        "permission": "agent.profile.self"
      },
      {
        "name": "br_list_config",
        "description": "List all tenant configuration sections with versions. Sections include routing, guardrails, security, mesh, and more.",
        "permission": "config.read"
      },
      {
        "name": "br_get_config",
        "description": "Read a specific config section by key. Returns the current value and OCC version number.",
        "permission": "config.read"
      },
      {
        "name": "br_set_config",
        "description": "Update a config section. Pass the full section value \u2014 it replaces the current config atomically.",
        "permission": "config.write"
      },
      {
        "name": "br_get_insights_daily",
        "description": "Daily cost breakdown by model. Shows per-model spend, request counts, and average cost. Use for budget planning.",
        "permission": "audit.read"
      },
      {
        "name": "br_get_insights_forecast",
        "description": "Predict when your budget will run out. Uses 30-day trend data to project daily and monthly depletion dates.",
        "permission": "audit.read"
      },
      {
        "name": "br_get_capacity",
        "description": "Provider health matrix: 24h request counts, success rates, latency, and health status per provider.",
        "permission": "router.read"
      },
      {
        "name": "br_get_security_status",
        "description": "Security posture overview: policy engine state, rule count, anomaly detector metrics. Check after config changes.",
        "permission": "security.read"
      },
      {
        "name": "br_get_policies",
        "description": "Read the active security policy ruleset. Shows all rules with conditions, actions, and priorities.",
        "permission": "security.read"
      },
      {
        "name": "br_test_policy",
        "description": "Dry-run a request context against security policies. See which rules would match without affecting live traffic.",
        "permission": "security.read"
      },
      {
        "name": "br_list_policy_packs",
        "description": "List the Policy Pack Library \u2014 framework-tagged packs (prod-safety, pii-protection, eu-ai-act-high-risk, nist-ai-rmf) enforced inline on live requests. Pass pack_id for one pack's full ruleset.",
        "permission": "security.read"
      },
      {
        "name": "br_get_siem_config",
        "description": "View SIEM export settings: destination (Splunk/LogScale), format (OCSF/CEF/JSON), and event filters.",
        "permission": "security.read"
      },
      {
        "name": "br_update_siem_config",
        "description": "Configure SIEM export: set destination URL, auth token, format, and which event types to forward.",
        "permission": "security.write"
      },
      {
        "name": "br_get_guardrail_config",
        "description": "View active guardrail pipeline: enabled scanners, mode (block/warn/log), PII detection settings.",
        "permission": "config.read"
      },
      {
        "name": "br_update_guardrail_config",
        "description": "Configure guardrails: enable/disable scanners, set mode, adjust PII detection sensitivity.",
        "permission": "config.write"
      },
      {
        "name": "br_test_guardrails",
        "description": "Test content against guardrails without affecting traffic. Returns which scanners would trigger and why.",
        "permission": "config.write"
      },
      {
        "name": "br_get_budget_status",
        "description": "Check budget: daily and monthly spend vs limits. Shows remaining capacity and whether limits are enforced.",
        "permission": "audit.read"
      },
      {
        "name": "br_get_budget_forecast",
        "description": "Predict budget depletion: projected spend rate, estimated exhaustion date, anomaly alerts if spending spikes.",
        "permission": "audit.read"
      },
      {
        "name": "br_activate_killswitch",
        "description": "EMERGENCY: Immediately halt ALL AI routing for this tenant. Reversible via br_deactivate_killswitch. Use with caution.",
        "permission": "security.write"
      },
      {
        "name": "br_deactivate_killswitch",
        "description": "Resume AI routing after emergency stop. All pending requests will start flowing again immediately.",
        "permission": "security.write"
      },
      {
        "name": "br_get_killswitch_status",
        "description": "Check kill switch state and activation history. Shows who activated, when, and the reason given.",
        "permission": "security.read"
      },
      {
        "name": "br_killswitch_scope",
        "description": "Surgically kill a specific agent, tool, or provider without stopping all routing. More precise than full kill switch.",
        "permission": "security.write"
      },
      {
        "name": "br_list_killswitch_scopes",
        "description": "List all active scoped kill switches with their type, target, reason, and activation time.",
        "permission": "security.read"
      },
      {
        "name": "br_deactivate_killswitch_scope",
        "description": "Remove a scoped kill switch, re-enabling the targeted agent, tool, or provider.",
        "permission": "security.write"
      },
      {
        "name": "br_policy_dry_run",
        "description": "Simulate a policy evaluation: pass any request context and see exactly which rules match, in what order.",
        "permission": "security.read"
      },
      {
        "name": "br_replay_decisions",
        "description": "Review recent routing decisions: which model was chosen, why, and what alternatives were considered.",
        "permission": "audit.read"
      },
      {
        "name": "br_session_timeline",
        "description": "Reconstruct a chronological session timeline: usage, security events, memory mutations. For incident investigation.",
        "permission": "audit.read"
      },
      {
        "name": "br_forensic_snapshots",
        "description": "View forensic proof-of-death records for terminated agents. Contains final state, budget, and termination reason.",
        "permission": "security.read"
      },
      {
        "name": "br_list_pending_approvals",
        "description": "List pending human-in-the-loop approval requests. Agents can queue actions that require human sign-off.",
        "permission": "security.read"
      },
      {
        "name": "br_approve_request",
        "description": "Approve a pending HITL request. The queued action will execute immediately upon approval.",
        "permission": "security.write"
      },
      {
        "name": "br_reject_request",
        "description": "Reject a pending HITL request. The queued action is discarded and the requester is notified.",
        "permission": "security.write"
      },
      {
        "name": "br_list_tenants",
        "description": "List all tenants with status, spend, and model count. Filter by status: pending, active, suspended. Admin only.",
        "permission": "platform.admin"
      },
      {
        "name": "br_approve_tenant",
        "description": "Activate a pending tenant. They gain immediate access to the API. Admin only.",
        "permission": "platform.admin"
      },
      {
        "name": "br_reject_tenant",
        "description": "Reject a pending tenant application. They cannot access the API. Admin only.",
        "permission": "platform.admin"
      },
      {
        "name": "br_get_business_digest",
        "description": "Executive summary: total tenants, aggregate spend, pending approvals, growth trends. Admin only.",
        "permission": "platform.admin"
      },
      {
        "name": "br_create_invite_code",
        "description": "Generate a beta invite code. Required for POST /v1/register. Set max_uses and expiry. Admin only.",
        "permission": "platform.admin"
      },
      {
        "name": "br_mcp_server_health",
        "description": "Probe a registered MCP server's health. Tests connectivity, refreshes OAuth2 tokens if needed.",
        "permission": "config.read"
      },
      {
        "name": "br_my_permissions",
        "description": "View your RBAC roles and permissions. Shows what you can and cannot do, plus how to request elevated access.",
        "permission": "router.read"
      },
      {
        "name": "br_guardrail_metrics",
        "description": "Guardrail scanner performance: pass/fail/error rates per scanner, feedback summary, and trend data.",
        "permission": "security.read"
      },
      {
        "name": "br_onboard",
        "description": "One-call agent setup. Returns recommended models, relevant tools, configuration, and first-steps guide based on your preferences.",
        "permission": "router.read"
      },
      {
        "name": "br_mesh_execute",
        "description": "Execute a distributed workflow on the mesh. Steps run in parallel when independent, sequential when dependent. Streams SSE progress.",
        "permission": "router.write"
      },
      {
        "name": "br_route_recommend",
        "description": "Delegate model selection to BrainstormRouter intelligence \u2014 returns the optimal model using capability-matched auto-selection (required-tier floor + shrinkage-blended learned reward) along the cost-quality frontier.",
        "permission": "router.read"
      },
      {
        "name": "br_feedback_report",
        "description": "Report outcome feedback for a model request \u2014 feeds Thompson sampling learning loop. Use after task completion to report success/failure/partial.",
        "permission": "router.write"
      },
      {
        "name": "br_trajectory_record",
        "description": "Record an orchestration trajectory \u2014 multi-phase agentic workflow with per-phase model, cost, duration, tools, and outcome. Feeds BrainstormLLM training flywheel.",
        "permission": "audit.write"
      },
      {
        "name": "br_trajectory_query",
        "description": "Query orchestration trajectories with filters: project, request_type, source, limit, since. Returns newest first.",
        "permission": "audit.read"
      },
      {
        "name": "br_task_run_report",
        "description": "Report a completed task run with cost, duration, and model used. Feeds telemetry for CLI agent task tracking.",
        "permission": "audit.write"
      },
      {
        "name": "br_project_register",
        "description": "Register or sync a CLI project. Upserts by name with optional path, description, and budget limits.",
        "permission": "config.write"
      },
      {
        "name": "br_memory_blocks_sync",
        "description": "Bulk upsert core memory blocks for a project. Syncs CLAUDE.md, conventions, and other structured knowledge into memory.",
        "permission": "memory.write"
      },
      {
        "name": "br_project_config",
        "description": "Set project configuration: model, budget, guardrails, conventions, protected paths. Use to sync team-wide settings.",
        "permission": "config.write"
      },
      {
        "name": "br_project_activity",
        "description": "View active sessions and recent changes on a project. Shows who is working, what they're doing, and cost so far.",
        "permission": "router.read"
      },
      {
        "name": "br_agent_run_start",
        "description": "Create a pending agent run session. Returns a session_id. To actually execute the multi-turn loop, call POST /v1/agents/:agentId/run with the session_id (the loop requires HTTP for SSE streaming). Use this to pre-create sessions for delegation workflows.",
        "permission": "agent.delegate"
      },
      {
        "name": "br_agent_run_status",
        "description": "Check the status of an agent run (session). Returns total turns, cost, duration, end reason, and last model used.",
        "permission": "agent.profile.read"
      },
      {
        "name": "br_agent_run_cancel",
        "description": "Cancel a running agent session. The loop stops after the current turn and the session is marked as ended.",
        "permission": "agent.delegate"
      },
      {
        "name": "br_xdr_list_destinations",
        "description": "List XDR/SIEM destinations configured for this tenant. Returns destination type, enabled status, delivery stats. Credentials are redacted in the response.",
        "permission": "config.read"
      },
      {
        "name": "br_xdr_create_destination",
        "description": "Create an XDR/SIEM destination for forwarding BrainstormRouter security events. Supported types: crowdstrike, sentinel, splunk-ocsf, cortex, datadog-ocsf. Requires vendor-specific config (API keys, endpoints).",
        "permission": "config.write"
      },
      {
        "name": "br_xdr_test_destination",
        "description": "Send a test event to an XDR destination to verify connectivity and authentication. Returns ok: true on success or ok: false with the error message.",
        "permission": "config.write"
      }
    ]
  },
  "sdks": {
    "typescript": {
      "package": "brainstormrouter",
      "registry": "npm"
    },
    "python": {
      "package": "brainstormrouter",
      "registry": "pypi"
    }
  },
  "providers_supported": [
    "openai",
    "anthropic",
    "google",
    "deepseek",
    "x-ai",
    "groq",
    "perplexity-ai",
    "moonshot",
    "zai"
  ]
}