Brave Search
badlogic/pi-skills
Web search and content extraction via Brave Search API. An agent skill from badlogic/pi-skills.
Brave Search API integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills.
$ npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills brave-search --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/brave-search-api .claude/skills/brave-search && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "brave-search" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/brave-search-api into .claude/skills/brave-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brave-search", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/brave-search-apiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills brave-search --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/brave-search-api .agents/skills/brave-search && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "brave-search" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/brave-search-api into .agents/skills/brave-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brave-search", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills brave-search --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/brave-search-api .cursor/skills/brave-search && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "brave-search" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/brave-search-api into .cursor/skills/brave-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brave-search", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/brave-search-api--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills brave-search --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/brave-search-api .gemini/skills/brave-search && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "brave-search" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/brave-search-api into .gemini/skills/brave-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brave-search", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills brave-searchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/brave-search-api .github/skills/brave-search && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "brave-search" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/brave-search-api into .github/skills/brave-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brave-search", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills brave-search --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/brave-search-api .opencode/skills/brave-search && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "brave-search" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/brave-search-api into .opencode/skills/brave-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brave-search", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
brave-searchBrave Search API integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills.
Brave Search is an agent skill from LeoYeAI/openclaw-master-skills. Brave Search API integration with managed authentication. Search the web, images, news, and videos with privacy-focused search. Use this skill when users want to search the web, find images, get news, or search videos using Brave Search. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `_meta.json`). Compatibility notes: Requires network access and valid Maton API key
It sits in Productivity & Automation, covering Web search. It works with Brave Search API. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
gateway.maton.aictrl.maton.aiimgs.search.brave.comconnect.maton.aien.wikipedia.orgtechnews.comyoutube.comAlso links to:
maton.aiapi-dashboard.search.brave.comdiscord.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
MATON_API_KEYAPI_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires network access and valid Maton API key
From compatibility in the SKILL.md frontmatter.
Brave Search loads about 4.6k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 747 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 747 words, ~4,583 tokens.
.claude/skills/brave-search/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Access the Brave Search API with managed authentication. Search the web, images, news, and videos with a privacy-focused search engine.
# Web search
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/web/search?q=python+programming&count=5')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFhttps://gateway.maton.ai/brave-search/{native-api-path}Replace {native-api-path} with the actual Brave Search API endpoint path. The gateway proxies requests to api.search.brave.com and automatically injects your API key.
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEYEnvironment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"Manage your Brave Search connections at https://ctrl.maton.ai.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=brave-search&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFpython <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'brave-search'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFpython <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"connection": {
"connection_id": "1472d925-86d6-4cbb-8f2f-17e18f6bc0c7",
"status": "ACTIVE",
"creation_time": "2026-03-10T11:12:30.963141Z",
"last_updated_time": "2026-03-10T11:13:55.282885Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "brave-search",
"metadata": {},
"method": "API_KEY"
}
}python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFIf you have multiple Brave Search connections, specify which one to use with the Maton-Connection header:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/web/search?q=test')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '1472d925-86d6-4cbb-8f2f-17e18f6bc0c7')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFIf omitted, the gateway uses the default (oldest) active connection.
GET /brave-search/res/v1/web/search?q={query}Required Parameters:
q (string): Search query (1-400 characters, max 50 words)Optional Parameters:
country (string): 2-letter country code (default: "US")search_lang (string): Search language code (default: "en")ui_lang (string): UI language in RFC 9110 format (default: "en-US")count (integer): Results per page, 1-20 (default: 20)offset (integer): Page offset, 0-9 (default: 0)safesearch (string): Filter level - "off", "moderate", "strict" (default: "moderate")freshness (string): Time filter - "pd" (past day), "pw" (past week), "pm" (past month), "py" (past year), or date rangetext_decorations (boolean): Include highlighting markers (default: true)result_filter (string): Comma-separated result types (discussions, faq, infobox, news, videos, web)extra_snippets (boolean): Get up to 5 alternative excerptssummary (boolean): Enable summarizerExample:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/web/search?q=machine+learning&count=10&freshness=pw')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "search",
"query": {
"original": "machine learning",
"show_strict_warning": false,
"is_navigational": false,
"country": "us",
"more_results_available": true
},
"web": {
"type": "search",
"results": [
{
"title": "Machine Learning - Wikipedia",
"url": "https://en.wikipedia.org/wiki/Machine_learning",
"description": "Machine learning is a subset of artificial intelligence...",
"language": "en",
"family_friendly": true
}
]
},
"discussions": {...},
"faq": {...},
"videos": {...}
}GET /brave-search/res/v1/images/search?q={query}Required Parameters:
q (string): Search queryOptional Parameters:
country (string): 2-letter country codesearch_lang (string): Search language codecount (integer): Results per page, 1-20safesearch (string): Filter level - "off", "moderate", "strict"Example:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/images/search?q=sunset&count=5')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "images",
"results": [
{
"title": "Beautiful Sunset",
"url": "https://example.com/sunset.jpg",
"source": "https://example.com/gallery",
"thumbnail": {
"src": "https://imgs.search.brave.com/..."
},
"properties": {
"width": 1920,
"height": 1080,
"format": "jpeg"
}
}
]
}GET /brave-search/res/v1/news/search?q={query}Required Parameters:
q (string): Search queryOptional Parameters:
country (string): 2-letter country codesearch_lang (string): Search language codecount (integer): Results per page, 1-20freshness (string): Time filter - "pd", "pw", "pm", "py"safesearch (string): Filter levelExample:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/news/search?q=technology&count=5&freshness=pd')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "news",
"results": [
{
"title": "Latest Tech News",
"url": "https://example.com/news/tech",
"description": "Breaking technology news...",
"age": "2 hours ago",
"source": {
"name": "Tech News",
"url": "https://technews.com"
},
"thumbnail": {
"src": "https://imgs.search.brave.com/..."
}
}
]
}GET /brave-search/res/v1/videos/search?q={query}Required Parameters:
q (string): Search queryOptional Parameters:
country (string): 2-letter country codesearch_lang (string): Search language codecount (integer): Results per page, 1-20safesearch (string): Filter levelExample:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/videos/search?q=tutorial&count=5')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "videos",
"results": [
{
"title": "Python Tutorial for Beginners",
"url": "https://www.youtube.com/watch?v=...",
"description": "Learn Python programming...",
"age": "1 year ago",
"duration": "3:45:00",
"thumbnail": {
"src": "https://imgs.search.brave.com/..."
},
"meta_url": {
"hostname": "www.youtube.com"
}
}
]
}GET /brave-search/res/v1/local/pois?ids={poi_ids}Get details about local points of interest by their IDs (obtained from web search results).
Required Parameters:
ids (string): Comma-separated POI IDsExample:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/local/pois?ids=poi_123,poi_456')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "local_pois",
"results": [
{
"id": "poi_123",
"name": "Coffee Shop",
"address": "123 Main St",
"phone": "+1-555-1234",
"rating": 4.5,
"reviews": 128
}
]
}GET /brave-search/res/v1/local/descriptions?ids={poi_ids}Get detailed descriptions for local points of interest.
Required Parameters:
ids (string): Comma-separated POI IDsExample:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/local/descriptions?ids=poi_123')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "local_descriptions",
"results": [
{
"id": "poi_123",
"description": "A cozy coffee shop known for artisanal brews..."
}
]
}Note: Requires Autosuggest subscription plan.
GET /brave-search/res/v1/suggest/search?q={query}Get search suggestions as users type.
Required Parameters:
q (string): Partial search queryOptional Parameters:
country (string): 2-letter country codecount (integer): Number of suggestions to returnrich (boolean): Enable enhanced metadataExample:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/suggest/search?q=how+to&count=5&rich=true')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "suggest",
"query": {
"original": "how to"
},
"results": [
{
"query": "how to learn python",
"is_entity": false
},
{
"query": "how to code",
"is_entity": false
}
]
}Note: Requires Spellcheck subscription plan.
GET /brave-search/res/v1/spellcheck/search?q={query}Check spelling and get corrections.
Required Parameters:
q (string): Query to check for spelling errorscountry (string): Country code for localized correctionsExample:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/spellcheck/search?q=helo+wrold&country=US')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFResponse:
{
"type": "spellcheck",
"query": {
"original": "helo wrold"
},
"results": [
{
"query": "hello world"
}
]
}Note: Requires Summarizer subscription plan.
First, perform a web search with summary=1 to get a summarizer key, then use that key to fetch the summary.
GET /brave-search/res/v1/web/search?q={query}&summary=1GET /brave-search/res/v1/summarizer/search?key={summarizer_key}Optional Parameters:
entity_info (boolean): Include entity detailsinline_references (boolean): Include citation markersExample:
python <<'EOF'
import urllib.request, os, json
# Step 1: Get summarizer key from web search
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/web/search?q=what+is+python&summary=1')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
data = json.load(urllib.request.urlopen(req))
summarizer_key = data.get('summarizer', {}).get('key')
# Step 2: Fetch summary using the key
if summarizer_key:
req = urllib.request.Request(f'https://gateway.maton.ai/brave-search/res/v1/summarizer/search?key={summarizer_key}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFGET /brave-search/res/v1/summarizer/summary?key={key} # Summary only
GET /brave-search/res/v1/summarizer/title?key={key} # Title only
GET /brave-search/res/v1/summarizer/enrichments?key={key} # Enrichment data
GET /brave-search/res/v1/summarizer/followups?key={key} # Follow-up suggestions
GET /brave-search/res/v1/summarizer/entity_info?key={key} # Entity informationUse count and offset for pagination:
# First page (results 1-10)
GET /brave-search/res/v1/web/search?q=test&count=10&offset=0
# Second page (results 11-20)
GET /brave-search/res/v1/web/search?q=test&count=10&offset=1Note: offset ranges from 0-9, giving access to up to 200 results (20 results × 10 pages).
Check query.more_results_available in the response to determine if more results exist.
For location-aware results, include location headers:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/brave-search/res/v1/web/search?q=restaurants+near+me&count=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('x-loc-lat', '37.7749')
req.add_header('x-loc-long', '-122.4194')
req.add_header('x-loc-city', 'San Francisco')
req.add_header('x-loc-state', 'CA')
req.add_header('x-loc-country', 'US')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFAvailable Location Headers:
x-loc-lat: Latitude (-90 to 90)x-loc-long: Longitude (-180 to 180)x-loc-timezone: IANA timezone identifierx-loc-city: City namex-loc-state: State/provincex-loc-country: 2-letter country codex-loc-postal-code: ZIP/postal codeconst response = await fetch(
'https://gateway.maton.ai/brave-search/res/v1/web/search?q=javascript&count=10',
{
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
}
}
);
const data = await response.json();
console.log(data.web.results);import os
import requests
response = requests.get(
'https://gateway.maton.ai/brave-search/res/v1/web/search',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
params={'q': 'python programming', 'count': 10}
)
data = response.json()
for result in data.get('web', {}).get('results', []):
print(f"{result['title']}: {result['url']}")jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments| Status | Meaning |
|---|---|
| 400 | Missing Brave Search connection |
| 401 | Invalid or missing Maton API key |
| 404 | Subscription not found |
| 422 | Invalid subscription token |
| 429 | Rate limited or quota exceeded |
| 4xx/5xx | Passthrough error from Brave Search API |
MATON_API_KEY environment variable is set:echo $MATON_API_KEYpython <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFbrave-search. For example:https://gateway.maton.ai/brave-search/res/v1/web/search?q=testhttps://gateway.maton.ai/res/v1/web/search?q=test© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in skills/brave-search-api of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Brave Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Brave Search this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Brave Searchbadlogic/pi-skills | 2.6k | 5 repos | ~592 | Automated safety check: Pass | MIT | |
| Web Searchtmustier/pi-for-excel | 434 | — | ~410 | Automated safety check: Pass | MIT | |
| Brave Local Place Descriptionsbrave/brave-search-skills | 183 | — | ~1k | Automated safety check: Pass | MIT | |
| Brave Local Place Searchbrave/brave-search-skills | 183 | — | ~3.4k | Automated safety check: Pass | MIT | |
| Web Search Bravejwynia/agent-skills | 170 | — | ~2k | Automated safety check: Pass | MIT |
badlogic/pi-skills
Web search and content extraction via Brave Search API. An agent skill from badlogic/pi-skills.
tmustier/pi-for-excel
Search the public web for up-to-date facts. An agent skill from tmustier/pi-for-excel.
brave/brave-search-skills
Fetches AI-written text descriptions for local places from the Brave Search API, using place IDs returned by an earlier local search.
brave/brave-search-skills
Looks up businesses, points of interest, addresses and streets through the Brave Search place endpoint, returning contact details, ratings and hours in one call.
jwynia/agent-skills
Search the web using Brave Search API for fast, privacy-respecting results with localization, freshness filtering, and extra snippets.
Anil-matcha/awesome-muse-connectors
Independent web search from Brave's own index. An agent skill from Anil-matcha/awesome-muse-connectors.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Works with
Categories
Brave Search API integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills. Brave Search is an agent skill from LeoYeAI/openclaw-master-skills. Brave Search API integration with managed authentication.
Brave Search fits situations like: users want to search the web; search videos using Brave Search.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a claude-code`. Or copy the skill folder (skills/brave-search-api in LeoYeAI/openclaw-master-skills) into .claude/skills/brave-search in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a codex`. Or copy the skill folder (skills/brave-search-api in LeoYeAI/openclaw-master-skills) into .agents/skills/brave-search in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill brave-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/brave-search, .gemini/skills/brave-search, .github/skills/brave-search and .opencode/skills/brave-search in your project.
Going by SKILL.md and its folder, Brave Search needs the command-line tools its instructions call (python) and credentials named MATON_API_KEY and API_KEY. Our summary lists: Python 3; A credential in MATON_API_KEY; A credential in YOUR_API_KEY. Compatibility (from SKILL.md): Requires network access and valid Maton API key.
SKILL.md names 10 domains. In commands or code: gateway.maton.ai, ctrl.maton.ai, imgs.search.brave.com, connect.maton.ai, en.wikipedia.org, technews.com and youtube.com; the agent is likely to contact these when it follows the instructions. As links in the text: maton.ai, api-dashboard.search.brave.com and discord.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Brave Search is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Brave Search: Brave Search (badlogic/pi-skills, 2.6k stars), Web Search (tmustier/pi-for-excel, 434 stars), Brave Local Place Descriptions (brave/brave-search-skills, 183 stars) and Brave Local Place Search (brave/brave-search-skills, 183 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.