brime

Changelog

What's new in the Brime API and SDKs.

2026-10-12 — Docs corrections

  • /v1/extract charges only successfully extracted URLs; failed URLs are free.
  • Pricing plans updated to match brime.dev/pricing.

2026-05-21 — mcp-server-brime 0.2.0 — A-tier rebuild + hosted endpoint

  • Hosted endpoint at https://mcp.brime.dev/mcp. Streamable HTTP transport — zero install for new clients. The stdio binary stays as the advanced/local option.
  • 2025-11-25 spec parity: outputSchema + structuredContent on every tool, annotations (readOnlyHint, idempotentHint, openWorldHint), read-only resources (brime://credentials/status, brime://account/*), in-band notifications/message logging, logging/setLevel honored.
  • URL elicitation for first-time API key onboarding (hosted): the agent gets back a one-time /auth/connect URL, the user pastes the key in the browser, the key never enters the LLM transcript.
  • Per-result _meta with request_id, latency_ms, credits_used, cache_hit — dashboards build off this without parsing prose.
  • Retry + exponential backoff on transient 5xx, toolset gating via BRIME_TOOLSETS / BRIME_READ_ONLY env, MCP registry id io.brime/mcp-server-brime, OCI Dockerfile with MCP labels.
  • brime_set_key tool marked [Legacy in v0.2]; will be removed in v0.3. Use the hosted endpoint for the canonical onboarding flow.
  • Fully additive — v0.1.x clients keep working.

2026-05-21 — mcp-server-brime 0.1.1 — zero-config setup

  • No BRIME_API_KEY env required at startup. The MCP server now stays alive without a key and asks for one on first use via the new brime_set_key tool.
  • First tool call without a key returns a structured "no_api_key" envelope. The agent reads it, asks the user, calls brime_set_key, then retries — the user never has to touch a config file.
  • The key is persisted to ~/.brime/credentials (0600 permissions) and reused on every subsequent call across reboots.
  • Env var still wins when set, so staging / CI overrides keep working unchanged.
  • One new tool (brime_set_key), 14 new unit tests (vitest), updated install snippets in the MCP guide drop the env block.

2026-05-21 — Public launch — brime.dev

  • Primary domain switched from brime.ai to brime.dev. SDK metadata, base URLs, and contact email all point to brime.dev.
  • Source repositories opened at github.com/brime-dev: brime-node, brime-python, brime-mcp, brime-langchain.
  • SDKs published: @brime-ai/brime (npm), mcp-server-brime (npm), brime (PyPI), langchain-brime (PyPI) — all at 0.1.0.
  • Free-tier monthly credit refill cron is live (every month, 00:00 UTC on the 1st, 1,000 credits flat).

2026-05-20 — /v1/search — single instant tier

  • The depth selector is gone. Search now runs one tuned instant flow for every call: SERP snippets + a short synthesised answer in ~500 ms p50.
  • Flat 0.5 credits per call. The old multi-row pricing (instant 0.5 / basic 1 / advanced 2) is collapsed.
  • Semantic intent filters (topic, time_range, start_date, end_date, domains, exclude_domains, max_results, include_answer, include_images) are still honoured.
  • LLM tuning knobs (depth, model, token_mode, ranking) are accepted but ignored — clients sending them will not break.
  • Compat adapters (/tavily/v1/search, /exa/v1/search, /parallel/v1/search) keep their vendor-shaped depth knobs.

2026-05-20 — /v1/research — single tuned flow

  • The depth (basic vs deep) and max_rounds knobs are gone. Research now runs one tuned multi-round flow (5 rounds max, ~30–90 s wall-clock).
  • Flat 5 credits per call. The old basic=2 / deep=5 split is collapsed.
  • Default model is a tuned production LLM picked for the research workload. Advanced users can still override via the model parameter against a server-managed allowlist.
  • Prompt-level discipline removes residual model artefacts that were occasionally bleeding into final answers.
  • Synthesis token budget raised so long answers no longer truncate mid-word.
  • Streaming (SSE) is still available via Accept: text/event-stream or stream: true.
  • Legacy GET endpoints (/v1/research/{job_id}, /v1/research/{job_id}/stream) remain for in-flight jobs but new POSTs always return sync JSON.

2026-05-20 — brime-extract — smart-clean default-ON

  • HTML → markdown now runs a six-phase readability pipeline by default (linkedom DOM parse → noise selector strip → semantic content cascade → density fallback → htmd → markdown post-process).
  • +21pt mean F1 vs the previous htmd-only pipeline on a 9-URL benchmark (52.1% → 73.1% against Mozilla Readability as ground truth).
  • Fixes SAP/AEM CMS template leak (style, tags, limit N, publicationDate, document-footer tokens), Wikipedia 67-language sidebar, arXiv inline [1] citations.
  • New request field clean?: boolean (default true). Set false to opt out and use the pre-refactor pipeline (~180 ms faster, noisier output).
  • Latency cost of the new default: +180 ms mean on the static path. Bundle: 7.93 MB → 8.43 MB upload, 2.48 MB → 2.60 MB gzip.
  • Smart-clean also runs on chrome_render output (post container).

2026-05-19 — /v1/extract — unified metadata pass-through

  • Every successful extract now returns a stable metadata object: title, description, author, published_date, canonical, og_image, language — each a string or null.
  • DOCX results have all fields null (deferred capability — ZIP core.xml parsing not yet wired).
  • PDF results derive metadata via unpdf (info.Title/Author/Subject/CreationDate).
  • Backward-compat: additive change. Old SDKs ignore the new fields. metadata is always an object or undefined, never null or a string.
  • Node and Python SDKs gained typed ExtractMetadata shapes; LangChain integration picks up the change transitively.
  • rust_md request flag dropped from the gateway → worker payload (was a no-op upstream). The worker_rust_md method enum value is kept for defensive parse of cached responses.
  • New gateway guard: chrome_render results with text_len < 100 are demoted to failed[] with code: "render_failed" instead of returning empty results[].

2026-05-06 — P15 — Public docs site

  • First public release of docs.brime.dev (this site!)
  • Mintlify-powered, OpenAPI playground, Ask AI, dark/light toggle
  • Three top-level tabs: Documentation, API Reference, Changelog
  • 23 pages live across getting-started, endpoints, SDKs, drop-in compat, and recipes

2026-05-06 — P13 — Node.js SDK (brime npm)

  • New: npm install @brime-ai/brime — official TypeScript SDK
  • Single Brime class (alias BrimeClient) covering /v1/* via async methods
  • Overloaded research() return type narrows on depth + wait
  • AsyncIterable<ResearchSseEvent> — for await (const evt of client.researchStream(...))
  • Auto-generated Idempotency-Key for extract and deep research
  • Dual ESM + CJS build (Node 18+, Bun, Deno, Cloudflare Workers, modern browsers)
  • Zero external HTTP dependencies (native fetch, AbortController, crypto.randomUUID)
  • 29 unit + 8 live e2e tests green

2026-05-06 — P12 — LangChain integration (langchain-brime)

  • New: pip install langchain-brime — drop-in for any LangChain agent or chain
  • Three BaseTools: BrimeSearch, BrimeExtract, BrimeResearch
  • One BaseRetriever: BrimeRetriever (returns Document objects)
  • Sync + async parity throughout
  • Backed by the brime Python SDK — single HTTP client, single error tree
  • Passes the official langchain-tests ToolsUnitTests compliance suite (18/18)

2026-05-06 — P11 — Python SDK (brime)

  • New: pip install brime — official Python SDK
  • Sync (Brime) and async (AsyncBrime) clients with symmetric APIs
  • Methods: search, extract, research, research_status, research_stream
  • research(depth="deep", wait=True) blocking polling with exponential backoff
  • SSE parser handles fragmented chunks, [DONE] terminator, multiline data
  • Seven-class error hierarchy with code → class registry
  • Pydantic v2 response models with full type hints (py.typed)
  • 14 unit + 9 live e2e tests green

2026-05-06 — P14 — MCP server (mcp-server-brime)

  • New: npx -y mcp-server-brime — official Model Context Protocol server
  • Four tools: brime_search, brime_extract, brime_research, brime_research_status
  • Stdio transport; works in Claude Code, Codex, Cursor, VS Code, any MCP client
  • Deep-research polling pattern (server returns job_id, agent polls status)
  • Friendly error messages with isError: true MCP convention

2026-05-06 — P10 — Parallel.ai compatibility adapter

  • New: /parallel/v1/{search,extract} — drop-in for Parallel SDK
  • Point your existing client at https://api.brime.dev/parallel
  • Field mapping: objective + search_queries → Brime query; mode → depth
  • Native Authorization: Bearer and Parallel x-api-key both accepted
  • Tasks / FindAll / Monitor / Chat APIs are on the roadmap

2026-05-06 — P9b — Exa SSE streaming

  • /exa/v1/search and /exa/v1/answer now support stream: true
  • OpenAI-style chat.completion.chunk envelope frames
  • Synthesised stream (sync call → SSE chunks); real LLM token streaming on the roadmap

2026-05-06 — P9 — Exa compatibility adapter

  • New: /exa/v1/{search,answer,contents} — drop-in for Exa SDK
  • Point Exa(base_url="https://api.brime.dev/exa") at us
  • Both Authorization: Bearer and Exa x-api-key headers accepted
  • costDollars synthesised from Brime credits
  • findSimilar (vector retrieval) on the roadmap

2026-05-06 — P8c — Tavily research adapter

  • /tavily/v1/research (sync + stream + poll) — full Tavily research wire compatibility
  • SSE wrap: Brime native events → Tavily Pro nested research format
  • Status poll endpoint with 200 (terminal) / 202 (running)

2026-05-06 — P8b — Tavily extract adapter

  • /tavily/v1/extract — fetch URLs and return Tavily-shaped result + failed_results
  • markdown field renamed to raw_content to match Tavily SDK

2026-05-06 — P8 — Tavily search adapter

  • First drop-in adapter shipped: /tavily/v1/search
  • One-line migration: TavilyClient(api_base_url="https://api.brime.dev/tavily")

2026-04-27 — P7 — Deep research (multi-round async)

  • /v1/research with depth="deep" — multi-round async research
  • Per-job stateful coordinator with alarm-based 10-min cap
  • SSE streaming with Last-Event-ID resume support

2026-04-22 — P6 — Research basic mode

  • /v1/research with depth="basic" — single-shot iterative agent
  • Inline citations + sources; max_rounds 1–3; optional SSE streaming

2026-04-15 — P5 — Extract V2

  • /v1/extract — multi-URL fan-out, PDF/DOCX/HTML/SPA support
  • Static-tier + browser-tier auto-escalation under the hood

2026-04-08 — P3 + P4 — Search

  • /v1/search with three depth presets: instant, basic, advanced
  • SERP + chunk + ranking + LLM answer pipeline; edge cache with topic-aware TTL

2026-04-01 — P0–P2 — Foundation, auth, rate limits

  • Core edge gateway scaffolded
  • sk-brime- API keys with sha256 storage and hot-path key cache
  • Per-key sliding-window rate limiter, Idempotency-Key middleware