56 results available
Sign in
Skills directory

llm-context

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: 3. Classified findings closed: 0. Classified findings remaining: 3. Unclassified scanner findings remaining: 0. Review findings closed: 0. Review findings remaining: 19.


Open before hardening

1

Medium

2

Low
Open after hardening

1

Medium

2

Low

Expand
File
Group
Subtype
Severity
Status
SKILL.md

Sensitive Data & Secret Exposure

Data exfiltration

Medium
Open
SKILL.md

Tool & MCP Manipulation

MCP configuration abuse

Low
Open
SKILL.md

Prompt Injection

Third-party content as instructions

Low
Open

3 findings


SKILL.md

LLM Context

Brave LLM Context API delivers pre-extracted, relevance-ranked web content optimized for grounding LLM responses in real-time search results. Unlike traditional web search APIs that return links and snippets, LLM Context extracts the actual page content—text chunks, tables, code blocks, and structured data—so your LLM or AI agent can reason over it directly.

LLM Context vs AI Grounding

FeatureLLM Context (this)AI Grounding (answers)

Output

Raw extracted content for YOUR LLM

End-to-end AI answers with citations

Interface

REST API (GET/POST)

OpenAI-compatible /chat/completions

Searches

Single search per request

Multi-search (iterative research)

Speed

Fast (<1s)

Slower

Plan

Search

Answers

Endpoint

/res/v1/llm/context

/res/v1/chat/completions

Best for

AI agents, RAG pipelines, tool calls

Chat interfaces, research mode

Endpoint

GET  https://api.search.brave.com/res/v1/llm/context
POST https://api.search.brave.com/res/v1/llm/context

Authentication: X-Subscription-Token: <API_KEY> header

Optional Headers:

  • Accept-Encoding: gzip — Enable gzip compression

Quick Start

GET Request

curl -s "https://api.search.brave.com/res/v1/llm/context?q=tallest+mountains+in+the+world" \
  -H "Accept: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"

POST Request (JSON body)

curl -s --compressed -X POST "https://api.search.brave.com/res/v1/llm/context" \
  -H "Accept: application/json" \
  -H "Accept-Encoding: gzip" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"q": "tallest mountains in the world"}'

With Goggles (Inline)

curl -s "https://api.search.brave.com/res/v1/llm/context" \
  -H "Accept: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -G \
  --data-urlencode "q=rust programming" \
  --data-urlencode 'goggles=$discard
$site=docs.rs
$site=rust-lang.org'

Parameters

Query Parameters

ParameterTypeRequiredDefaultDescription

q

string

Yes

-

Search query (1-400 chars, max 50 words)

country

string

No

US

Search country (2-letter country code or ALL)

search_lang

string

No

en

Language preference (2+ char language code)

count

int

No

20

Max search results to consider (1-50)

spellcheck

bool

No

true

Whether to spellcheck the query before searching

freshness

string

No

""

Filters search results by page age. The age of a page is determined by the most relevant date reported by the content, such as its published or last modified date. Supported values: pd (24h or less), pw (7 days or less), pm (31 days or less), py (365 days or less), or a custom date range YYYY-MM-DDtoYYYY-MM-DD (e.g. 2022-04-01to2022-07-30).

Context Size Parameters

ParameterTypeRequiredDefaultDescription

maximum_number_of_urls

int

No

20

Max URLs in response (1-50)

maximum_number_of_tokens

int

No

8192

Approximate max tokens in context (1024-32768)

maximum_number_of_snippets

int

No

50

Max snippets across all URLs (1-256)

maximum_number_of_tokens_per_url

int

No

4096

Max tokens per individual URL (512-8192)

maximum_number_of_snippets_per_url

int

No

50

Max snippets per individual URL (1-100)

Filtering & Local Parameters

ParameterTypeRequiredDefaultDescription

context_threshold_mode

string

No

null

Relevance threshold for including content (strict/balanced/lenient/disabled)

safesearch

string

No

null

Adult content filter (off/moderate/strict); not set means no filtering, except local recall which stays strict

enable_local

bool

No

null

Local recall control (true/false/null, see below)

goggles

string/list

No

null

Goggle URL or inline definition for custom re-ranking

enable_source_metadata

bool

No

false

Adds site_name, favicon, thumbnail and description to each sources[url] entry

Context Size Guidelines

Task Typecountmax_tokensExample

Simple factual

5

2048

"What year was Python created?"

Standard queries

20

8192

"Best practices for React hooks"

Complex research

50

16384

"Compare AI frameworks for production"

Larger context windows provide more information but increase latency and cost (of your inference). Start with defaults and adjust.

Threshold Modes

ModeBehavior

null (not set)

Default — resolves to lenient on the current API version

strict

Higher threshold — fewer but more relevant results

balanced

Good balance between coverage and relevance

lenient

Lower threshold — more results, may include less relevant content

disabled

No threshold filtering — return all extracted content

Local Recall

The enable_local parameter controls location-aware recall:

ValueBehavior

null (not set)

Auto-detect — local recall enabled when any location header is provided

true

Force local — always use local recall, even without location headers

false

Force standard — always use standard web ranking, even with location headers

For most use cases, omit enable_local and let the API auto-detect from location headers.

Location Headers

HeaderTypeDescription

X-Loc-Lat

float

Latitude (-90.0 to 90.0)

X-Loc-Long

float

Longitude (-180.0 to 180.0)

X-Loc-City

string

City name

X-Loc-State

string

State/region code (ISO 3166-2)

X-Loc-State-Name

string

State/region name

X-Loc-Country

string

2-letter country code

X-Loc-Postal-Code

string

Postal code

Example: With Coordinates

curl -s "https://api.search.brave.com/res/v1/llm/context" \
  -H "Accept: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -H "X-Loc-Lat: 37.7749" \
  -H "X-Loc-Long: -122.4194" \
  -G \
  --data-urlencode "q=best coffee shops near me"

Example: With Place Name

curl -s "https://api.search.brave.com/res/v1/llm/context" \
  -H "Accept: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -H "X-Loc-City: San Francisco" \
  -H "X-Loc-State: CA" \
  -H "X-Loc-Country: US" \
  -G \
  --data-urlencode "q=best coffee shops near me"

Goggles (Custom Ranking) — Unique to Brave

Goggles let you control which sources ground your LLM — essential for RAG quality.

Use CaseGoggle Rules

Official docs only

$discard\n$site=docs.python.org

Exclude user content

$discard,site=reddit.com\n$discard,site=stackoverflow.com

Academic sources

$discard\n$site=arxiv.org\n$site=scholar.google.com

No paywalls

$discard,site=medium.com

MethodExample

Hosted

--data-urlencode "goggles=https://raw.githubusercontent.com/brave/goggles-quickstart/main/goggles/1k_short.goggle"

Inline

--data-urlencode 'goggles=$discard\n$site=example.com'

Syntax: Rules start with $ + comma-separated options. Actions (pick one): discard, boost[=N], downrank[=N] — N is an integer 1–10. Site filter: site=DOMAIN. Example: $site=example.com,boost=3. Separate rules with \n (%0A).

Allow list: $discard\n$site=docs.python.org\n$site=developer.mozilla.org — Block list: $discard,site=pinterest.com\n$discard,site=quora.com

Resources: Discover · Syntax · Quickstart

Response Format

Standard Response

{
  "grounding": {
    "generic": [
      {
        "url": "https://example.com/page",
        "title": "Page Title",
        "snippets": [
          "Relevant text chunk extracted from the page...",
          "Another relevant passage from the same page..."
        ]
      }
    ],
    "map": []
  },
  "sources": {
    "https://example.com/page": {
      "title": "Page Title",
      "hostname": "example.com",
      "age": ["Wednesday, January 15, 2025", "2025-01-15", "392 days ago", "2025-01-15T13:45:02Z"]
    }
  }
}

Local Response (with enable_local)

{
  "grounding": {
    "generic": [...],
    "poi": {
      "name": "Business Name",
      "url": "https://business.com",
      "title": "Title of business.com website",
      "snippets": ["Business details and information..."]
    },
    "map": [
      {
        "name": "Place Name",
        "url": "https://place.com",
        "title": "Title of place.com website",
        "snippets": ["Place information and details..."]
      }
    ]
  },
  "sources": {
    "https://business.com": {
      "title": "Business Name",
      "hostname": "business.com",
      "age": []
    }
  }
}

Response Fields

FieldTypeDescription

grounding

object

Container for all grounding content by type

grounding.generic

array

Array of URL objects with extracted content (main grounding data)

grounding.generic[].url

string

Source URL

grounding.generic[].title

string

Page title

grounding.generic[].snippets

array

Extracted smart chunks relevant to the query

grounding.poi

object/null

Point of interest data (only with local recall)

grounding.poi.name

string/null

Point of interest name

grounding.poi.url

string/null

POI source URL

grounding.poi.title

string/null

POI page title

grounding.poi.snippets

array/null

POI text snippets

grounding.map

array

Map/place results (only with local recall)

grounding.map[].name

string/null

Place name

grounding.map[].url

string/null

Place source URL

grounding.map[].title

string/null

Place page title

grounding.map[].snippets

array/null

Place text snippets

sources

object

Metadata for all referenced URLs, keyed by URL

sources[url].title

string

Page title

sources[url].hostname

string

Source hostname

sources[url].age

array

The page's date in four fixed positions: full date, YYYY-MM-DD, relative age, ISO 8601 timestamp. Empty when the page has no known date

sources[url].description

string

The page's own description, independent of the query. Requires enable_source_metadata

sources[url].site_name

string

Site name. Requires enable_source_metadata

sources[url].favicon

string

Favicon URL. Requires enable_source_metadata

sources[url].thumbnail

object/null

Page thumbnail (src, original). Requires enable_source_metadata

sources[url].snippet

string?

Best snippet for the page

Note: Snippets may contain plain text OR JSON-serialized structured data (tables, schemas, code blocks). LLMs handle this mixed format well.

Use Cases

  • AI Agents: Give your agent a web search tool that returns ready-to-use content in a single call
  • RAG Pipelines: Ground LLM responses in fresh, relevant web content
  • AI Assistants & Chatbots: Provide factual answers backed by real sources
  • Question Answering: Retrieve focused context for specific queries
  • Fact Checking: Verify claims against current web content
  • Content Research: Gather source material on any topic with one API call

Best Practices

  • Token budget: Start with defaults (maximum_number_of_tokens=8192, count=20). Reduce for simple lookups, increase for complex research.
  • Source quality: Use Goggles to restrict to trusted sources. Set context_threshold_mode=strict when precision > recall.
  • Performance: Use smallest count and maximum_number_of_tokens that meet your needs. For local queries, provide location headers.

Install

Install with chainctl
chainctl skill install public/brave/llm-context: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/llm-context: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.