Search the official docs of Claude Code, Cursor, OpenAI Codex and MCP, refreshed daily.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your own Cohere API key (free trial at dashboard.cohere.com). Provide this or Authorization.
Bearer token from the owner. Provide this or X-Cohere-Api-Key.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Read a page found by search_docs. Without a heading: the page's description and outline (top-level sections with subsection counts). With a heading: that section's full text, including its subsections; continue long sections with next_offset. outline_depth=3 also lists subsections; use it only on long pages to find one specific subsection.
Page URL exactly as search_docs returned it.
Character offset into the section; pass the previous next_offset to continue a long section.
Heading to read, as listed in the outline (leading #s optional). Exact text first, case-insensitive, then a unique partial match; use 'Parent > Heading' when two headings share a name. Leave unset to get the page's outline.
Outline depth when no heading is given: 2 lists top-level sections with subsection counts, 3 also lists the subsections.
Read a page found by search_docs. Without a heading: the page's description and outline (top-level sections with subsection counts). With a heading: that section's full text, including its subsections; continue long sections with next_offset. outline_depth=3 also lists subsections; use it only on long pages to find one specific subsection.
| Argument | Type | Description |
|---|---|---|
| url* | string | Page URL exactly as search_docs returned it. |
| offset | integer | Character offset into the section; pass the previous next_offset to continue a long section. |
| heading | any | Heading to read, as listed in the outline (leading #s optional). Exact text first, case-insensitive, then a unique partial match; use 'Parent > Heading' when two headings share a name. Leave unset to get the page's outline. |
| outline_depth | integer | Outline depth when no heading is given: 2 lists top-level sections with subsection counts, 3 also lists the subsections. |
{
"type": "object",
"title": "read_sectionArguments",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"maxLength": 500,
"minLength": 1,
"description": "Page URL exactly as search_docs returned it."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Character offset into the section; pass the previous next_offset to continue a long section."
},
"heading": {
"anyOf": [
{
"type": "string",
"maxLength": 300
},
{
"type": "null"
}
],
"title": "Heading",
"default": null,
"description": "Heading to read, as listed in the outline (leading #s optional). Exact text first, case-insensitive, then a unique partial match; use 'Parent > Heading' when two headings share a name. Leave unset to get the page's outline."
},
"outline_depth": {
"enum": [
2,
3
],
"type": "integer",
"title": "Outline Depth",
"default": 2,
"description": "Outline depth when no heading is given: 2 lists top-level sections with subsection counts, 3 also lists the subsections."
}
}
}Search the official documentation of Claude Code, Cursor, OpenAI Codex and MCP. Use it before answering any question about using, configuring or administering these products. Not for other products or general programming. If the answer could differ between products and the user hasn't said which one, ask. Returns one passage per page, with the page's one-line description and a relevance score; under ~0.5 means the docs probably don't cover it. One topic per call: split multi-part questions. Need more than the passage? Call read_section(url), or read_section(url, heading) for one of the passage's other_sections.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Pages to return, 1-20 (default 8). |
| query* | string | What to find, in English: keywords or a short question, e.g. "<product> <feature> <what you need>". |
| product | any | Only this product. Set it when the user has named the product, now or earlier in the conversation. Otherwise leave it empty: an unfiltered search still finds product-specific pages, while a wrong product hides the right ones. |
| response_format | string | `concise` (default): first 300 characters of each passage, enough to choose. `detailed`: full passages, about 800 tokens each. Start concise; re-run detailed with a small limit for the pages you need. |
{
"type": "object",
"title": "search_docsArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 8,
"maximum": 20,
"minimum": 1,
"description": "Pages to return, 1-20 (default 8)."
},
"query": {
"type": "string",
"title": "Query",
"maxLength": 500,
"minLength": 1,
"description": "What to find, in English: keywords or a short question, e.g. \"<product> <feature> <what you need>\"."
},
"product": {
"anyOf": [
{
"enum": [
"claude-code",
"cursor",
"codex",
"mcp"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Product",
"default": null,
"description": "Only this product. Set it when the user has named the product, now or earlier in the conversation. Otherwise leave it empty: an unfiltered search still finds product-specific pages, while a wrong product hides the right ones."
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"title": "Response Format",
"default": "concise",
"description": "`concise` (default): first 300 characters of each passage, enough to choose. `detailed`: full passages, about 800 tokens each. Start concise; re-run detailed with a small limit for the pages you need."
}
}
}