Dingo Verify
MigoXLab/dingo
A skill your agent uses when the user wants to fact-check an article or verify factual claims in a document.
Calls the Brave Search Answers endpoint for AI-grounded, cited answers, either a fast single-search reply or a slower multi-search deep research run.
$ npx skills add brave/brave-search-skills --skill answers -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install brave/brave-search-skills answers --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/brave/brave-search-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/answers .claude/skills/answers && 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 "answers" agent skill from https://github.com/brave/brave-search-skills/tree/main/skills/answers into .claude/skills/answers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "answers", 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/brave/brave-search-skills/tree/main/skills/answersType 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 brave/brave-search-skills --skill answers -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install brave/brave-search-skills answers --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brave/brave-search-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/answers .agents/skills/answers && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "answers" agent skill from https://github.com/brave/brave-search-skills/tree/main/skills/answers into .agents/skills/answers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "answers", 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 brave/brave-search-skills --skill answers -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install brave/brave-search-skills answers --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brave/brave-search-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/answers .cursor/skills/answers && 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 "answers" agent skill from https://github.com/brave/brave-search-skills/tree/main/skills/answers into .cursor/skills/answers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "answers", 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/brave/brave-search-skills.git --path skills/answers--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 brave/brave-search-skills --skill answers -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install brave/brave-search-skills answers --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brave/brave-search-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/answers .gemini/skills/answers && 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 "answers" agent skill from https://github.com/brave/brave-search-skills/tree/main/skills/answers into .gemini/skills/answers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "answers", 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 brave/brave-search-skills answersInstalls 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 brave/brave-search-skills --skill answers -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/brave/brave-search-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/answers .github/skills/answers && 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 "answers" agent skill from https://github.com/brave/brave-search-skills/tree/main/skills/answers into .github/skills/answers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "answers", 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 brave/brave-search-skills --skill answers -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install brave/brave-search-skills answers --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brave/brave-search-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/answers .opencode/skills/answers && 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 "answers" agent skill from https://github.com/brave/brave-search-skills/tree/main/skills/answers into .opencode/skills/answers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "answers", 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.
answersCalls the Brave Search Answers endpoint for AI-grounded, cited answers, either a fast single-search reply or a slower multi-search deep research run.
The skill documents Brave's OpenAI-compatible chat completions endpoint, which also works with the OpenAI SDK when its base URL points at Brave. A request carries exactly one user message and authenticates with an X-Subscription-Token header or a bearer token. Single-search mode is the default: it is fast, can stream or block, and can return citations when streaming.
Setting enable_research switches to research mode, which runs iterative searches, requires streaming, emits progress events and returns a synthesized answer with built-in citations. The skill includes cURL quick starts for blocking, streaming and research calls and a parameter reference, and it points to a separate llm-context skill when you only want raw search context for your own model. It needs a Brave Search API key on the Answers plan.
Read from SKILL.md and the folder at commit 62793e0. 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:
curlFrom 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:
api.search.brave.comAlso links to:
api-dashboard.search.brave.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYBRAVE_SEARCH_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Brave Answers API loads about 2.3k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 566 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 brave/brave-search-skills at commit 62793e0, republished under its MIT licence (© brave). 566 words, ~2,335 tokens.
.claude/skills/answers/SKILL.md (or your agent's skills folder).Requires API Key: Get one at https://api.search.brave.com
Plan: Included in the Answers plan. See https://api-dashboard.search.brave.com/app/subscriptions/subscribe
| Use Case | Skill | Why |
|---|---|---|
| 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:
enable_citations.enable_research=true): Multi-iteration deep research with progress events and synthesized cited answer.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
}'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
}'POST https://api.search.brave.com/res/v1/chat/completionsAuthentication: 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"
| Feature | Single-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 |
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
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 |
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
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) |
| Constraint | Error |
|---|---|
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" |
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)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="")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)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}
}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]enable_citations=true)| Tag | Purpose |
|---|---|
<citation> | Inline citation references |
<usage> | JSON cost/billing data |
| Tag | Purpose | Keep? |
|---|---|---|
<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 |
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>base_url="https://api.search.brave.com/res/v1".enable_research=true) for complex questions needing multi-source synthesis (e.g., "Compare approaches to nuclear fusion").base_url and api_key. Works with both sync and async clients.enable_citations=true in single-search mode for inline citation tags, or use research mode which automatically includes citations in its answer.messages array must contain exactly 1 user message<usage> tag from streaming responses to track costs© brave, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/answers of brave/brave-search-skills.
Open the folder on GitHubat commit 62793e0
Brave Answers API 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 Answers API this skillbrave/brave-search-skills | 183 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Dingo VerifyMigoXLab/dingo | 757 | — | ~833 | Automated safety check: Pass | Apache-2.0 | |
| Venice Responsesveniceai/skills | 144 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Venice Chatveniceai/skills | 144 | — | ~5.9k | Automated safety check: Pass | MIT | |
| Bmad Deep Recondelorenj/mcp-server-trello | 445 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Deep Researchjuanandresgs/claude-ctrl | 193 | — | ~3.1k | Automated safety check: Notes | None |
MigoXLab/dingo
A skill your agent uses when the user wants to fact-check an article or verify factual claims in a document.
veniceai/skills
Use Venice's Alpha POST /responses endpoint - an OpenAI-compatible, stateless Responses API with typed output blocks (reasoning, message, functioncall, websearchcall).
veniceai/skills
Call POST /chat/completions on Venice. An agent skill from veniceai/skills.
delorenj/mcp-server-trello
Decision-grade research, three ways: draft a deep-research prompt for the user to run in their own tool (ChatGPT, Gemini, Grok, Perplexity, …), process a finished research report — file it, distill…
juanandresgs/claude-ctrl
Multi-model deep research with comparative assessment (OpenAI + Perplexity + Gemini).
glebis/claude-skills
This skill should be used when conducting comprehensive research on any topic using the OpenAI Deep Research API.
brave/brave-search-skills
Searches images through the Brave Search API and returns titles, source pages, thumbnails and original image URLs, with a SafeSearch filter and up to 200 results.
brave/brave-search-skills
Documents Brave's LLM Context API, which returns pre-extracted, ranked web page content for grounding agent and RAG answers, with GET and POST calls and Goggles filters.
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.
brave/brave-search-skills
Looks up full details for local businesses and places, including ratings, hours and contact information, from Brave Search API point-of-interest IDs.
brave/brave-search-skills
A skill your agent uses FOR news search. An agent skill from brave/brave-search-skills.
Works with
Categories
Calls the Brave Search Answers endpoint for AI-grounded, cited answers, either a fast single-search reply or a slower multi-search deep research run. The skill documents Brave's OpenAI-compatible chat completions endpoint, which also works with the OpenAI SDK when its base URL points at Brave. A request carries exactly one user message and authenticates with an X-Subscription-Token header or a bearer token.
Brave Answers API fits situations like: getting a fast cited answer from live web search inside an app; running a deeper multi-search research request with progress streaming; switching an OpenAI SDK client over to Brave's endpoint.
Run `npx skills add brave/brave-search-skills --skill answers -a claude-code`. Or copy the skill folder (skills/answers in brave/brave-search-skills) into .claude/skills/answers in your project. Claude Code loads it when a task matches its description.
Run `npx skills add brave/brave-search-skills --skill answers -a codex`. Or copy the skill folder (skills/answers in brave/brave-search-skills) into .agents/skills/answers 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 brave/brave-search-skills --skill answers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/answers, .gemini/skills/answers, .github/skills/answers and .opencode/skills/answers in your project.
Going by SKILL.md and its folder, Brave Answers API needs the command-line tools its instructions call (curl) and credentials named API_KEY and BRAVE_SEARCH_API_KEY. Our summary lists: A Brave Search API key on the Answers plan.
SKILL.md names 2 domains. In commands or code: api.search.brave.com; the agent is likely to contact it when it follows the instructions. As links in the text: api-dashboard.search.brave.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 Answers API is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.3k 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 Answers API: Dingo Verify (MigoXLab/dingo, 757 stars), Venice Responses (veniceai/skills, 144 stars), Venice Chat (veniceai/skills, 144 stars) and Bmad Deep Recon (delorenj/mcp-server-trello, 445 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
brave (a GitHub organization) maintains it in brave/brave-search-skills, which has 183 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on September 23, 2026.
Source: brave/brave-search-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.