56 results available
Sign in
Skills directory

answers

brave

·

Last changed
Hardened

This skill has been hardened by Chainguard

Last changed

This version passed the hardening gate. The skill content was retained without changes. Classified findings before hardening: 1. Classified findings closed: 0. Classified findings remaining: 1. Unclassified scanner findings remaining: 0. Review findings closed: 0. Review findings remaining: 11.


Open before hardening

1

Medium
Open after hardening

1

Medium

Expand
File
Group
Subtype
Severity
Status
SKILL.md

Sensitive Data & Secret Exposure

Data exfiltration

Medium
Open

1 finding


SKILL.md

Answers — AI Grounding

When to Use

Use CaseSkillWhy

Quick factual answer (raw context)

llm-context

Single search, returns raw context for YOUR LLM

Fast AI answer with citations

answers (single-search)

streaming, citations

Thorough multi-search deep research

answers (research mode)

Iterative deep research, synthesized cited answer

This endpoint (/res/v1/chat/completions) supports two modes:

  • Single-search (default): Fast AI-grounded answer from a single search. Supports enable_citations.
  • Research (enable_research=true): Multi-iteration deep research with progress events and synthesized cited answer.

Quick Start (cURL)

curl -X POST "https://api.search.brave.com/res/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -d '{
    "messages": [{"role": "user", "content": "How does the James Webb Space Telescope work?"}],
    "stream": false
  }'
curl -X POST "https://api.search.brave.com/res/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -d '{
    "messages": [{"role": "user", "content": "What are recent breakthroughs in fusion energy?"}],
    "stream": true,
    "enable_citations": true
  }'

Research Mode

curl -X POST "https://api.search.brave.com/res/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -d '{
    "messages": [{"role": "user", "content": "Compare quantum computing approaches"}],
    "stream": true,
    "enable_research": true,
    "research_maximum_number_of_iterations": 3,
    "research_maximum_number_of_seconds": 120
  }'

Endpoint

POST https://api.search.brave.com/res/v1/chat/completions

Authentication: X-Subscription-Token: <API_KEY> header (or Authorization: Bearer <API_KEY>)

SDK Compatible: Works with OpenAI SDK via base_url="https://api.search.brave.com/res/v1"

Two Modes

FeatureSingle-Search (default)Research (enable_research=true)

Speed

Fast

Slow

Searches

1

Multiple (iterative)

Streaming

Optional (stream=true/false)

Required (stream=true)

Citations

enable_citations=true (streaming only)

Built-in (in <answer> tag)

Progress events

No

Yes (<progress> tags)

Blocking response

Yes (stream=false)

No

Parameters

Standard Parameters

ParameterTypeRequiredDefaultDescription

messages

array

Yes

-

Single user message (exactly 1 message)

stream

bool

No

true

Enable SSE streaming

country

string

No

"US"

Search country (2-letter country code or ALL)

language

string

No

"en"

Response language

safesearch

string

No

"moderate"

Search safety level (off, moderate, strict)

max_completion_tokens

int

No

null

Upper bound on completion tokens

enable_citations

bool

No

false

Include inline citation tags (single-search streaming only)

web_search_options

object

No

null

OpenAI-compatible; search_context_size: low, medium, high

Research Parameters

ParameterTypeRequiredDefaultDescription

enable_research

bool

No

false

Enable research mode

research_allow_thinking

bool

No

true

Enable extended thinking

research_maximum_number_of_tokens_per_query

int

No

8192

Max tokens per query (1024-16384)

research_maximum_number_of_queries

int

No

20

Max total search queries (1-50)

research_maximum_number_of_iterations

int

No

4

Max research iterations (1-5)

research_maximum_number_of_seconds

int

No

180

Time budget in seconds (1-300)

research_maximum_number_of_results_per_query

int

No

60

Results per search query (1-60)

Constraints (IMPORTANT)

ConstraintError

enable_research=true requires stream=true

"Blocking response doesn't support 'enable_research' option"

enable_research=true incompatible with enable_citations=true

"Research mode doesn't support 'enable_citations' option"

enable_citations=true requires stream=true

"Blocking response doesn't support 'enable_citations' option"

OpenAI SDK Usage

Blocking (Single-Search)

from openai import OpenAI

client = OpenAI(
    base_url="https://api.search.brave.com/res/v1",
    api_key="your-brave-api-key",
)

response = client.chat.completions.create(
    model="brave",
    messages=[{"role": "user", "content": "How does the James Webb Space Telescope work?"}],
    stream=False,
)
print(response.choices[0].message.content)

Streaming with Citations (Single-Search)

from openai import OpenAI

client = OpenAI(
    base_url="https://api.search.brave.com/res/v1",
    api_key="your-brave-api-key",
)

stream = client.chat.completions.create(
    model="brave",
    messages=[{"role": "user", "content": "What are the current trends in renewable energy?"}],
    stream=True,
    extra_body={"enable_citations": True}
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Research Mode

from openai import AsyncOpenAI

client = AsyncOpenAI(
    base_url="https://api.search.brave.com/res/v1",
    api_key="your-brave-api-key",
)

stream = await client.chat.completions.create(
    model="brave",
    messages=[{"role": "user", "content": "Compare quantum computing approaches"}],
    stream=True,
    extra_body={
        "enable_research": True,
        "research_maximum_number_of_iterations": 3,
        "research_maximum_number_of_seconds": 120
    }
)

async for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Response Format

Blocking Response (stream=false, single-search only)

Standard OpenAI-compatible JSON:

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "choices": [{"message": {"role": "assistant", "content": "The James Webb Space Telescope works by..."}, "index": 0, "finish_reason": "stop"}],
  "usage": {"prompt_tokens": 10, "completion_tokens": 50, "total_tokens": 60}
}

Streaming Response

SSE response with OpenAI-compatible chunks:

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"content":"Based on"},"index":0}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"content":" recent research"},"index":0}]}

data: [DONE]

Streaming Tags by Mode

Single-Search (with enable_citations=true)
TagPurpose

<citation>

Inline citation references

<usage>

JSON cost/billing data

Research Mode
TagPurposeKeep?

<queries>

Generated search queries

Debug

<analyzing>

URL counts (verbose)

Debug

<thinking>

URL selection reasoning

Debug

<progress>

Stats: time, iterations, queries, URLs analyzed, tokens

Monitor

<blindspots>

Knowledge gaps identified

Yes

<answer>

Final synthesized answer (only the final answer is emitted; intermediate drafts are dropped)

Yes

<usage>

JSON cost/billing data (included at end of streaming response)

Yes

Usage Tag Format

The <usage> tag contains JSON-stringified cost and token data:

<usage>{"X-Request-Requests":1,"X-Request-Queries":8,"X-Request-Tokens-In":15000,"X-Request-Tokens-Out":2000,"X-Request-Requests-Cost":0.005,"X-Request-Queries-Cost":0.032,"X-Request-Tokens-In-Cost":0.075,"X-Request-Tokens-Out-Cost":0.01,"X-Request-Total-Cost":0.122}</usage>

Use Cases

  • Chat interface integration: Drop-in OpenAI SDK replacement with web-grounded answers. Set base_url="https://api.search.brave.com/res/v1".
  • Deep research / comprehensive topic research: Use research mode (enable_research=true) for complex questions needing multi-source synthesis (e.g., "Compare approaches to nuclear fusion").
  • OpenAI SDK drop-in: Same SDK, same streaming format — just change base_url and api_key. Works with both sync and async clients.
  • Cited answers: Enable enable_citations=true in single-search mode for inline citation tags, or use research mode which automatically includes citations in its answer.

Notes

  • Timeout: Set client timeout to at least 30s for single-search, 300s (5 min) for research
  • Single message: The messages array must contain exactly 1 user message
  • Cost monitoring: Parse the <usage> tag from streaming responses to track costs

Install

Install with chainctl
chainctl skill install public/brave/answers:latest
Get started with chainctl
View source

Harden your own skills

Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.

Provenance

Upstream sourcehttps://github.com/brave/brave-search-skills
Upstream commit62793e0c49ed2fc7c8f0c99a8ab8898abdf32a1d
OCI reference

skills.cgr.dev/public/github.com/brave/skills/answers:latest

License

MIT

Files

HARDENING.md

LICENSE

SKILL.md


The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.