---
type: "firecrawl-provider"
description: "Official Claude Code documentation from code.claude.com: semantic docs search through Anthropic's public docs MCP server, any page as clean Markdown with an outline and section reads, the full page index, the release changelog by version, and the configuration reference tables (settings keys, hook events, environment variables, skill and subagent frontmatter). Public agent-facing sources only; no login or key."
use_when: "Official Claude Code documentation from code.claude.com: semantic docs search through Anthropic's public docs MCP server, any page as clean Markdown with an outline and section reads, the full page index, the release changelog by version, and the configuration reference tables (settings keys, hook events, environment variables, skill and subagent frontmatter). Public agent-facing sources only; no login or key."
categories: "Developer"
capabilities: 5
credits_per_call: 5
---
# Claude Code Docs on Firecrawl Alexandria

Official Claude Code documentation from code.claude.com: semantic docs search through Anthropic's public docs MCP server, any page as clean Markdown with an outline and section reads, the full page index, the release changelog by version, and the configuration reference tables (settings keys, hook events, environment variables, skill and subagent frontmatter). Public agent-facing sources only; no login or key.

- Categories: Developer
- Category index: [Developer category](https://firecrawl.dev/alexandria/agents/categories/developer)
- Provider key: `code-claude-com`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/code-claude-com)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/openapi.json)

## Capabilities

- [Changelog](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/changelog): Claude Code release notes from the official changelog page (GET /docs/en/changelog.md), newest first: version, date and each change item with its category. Filter by exact `version`, `since_version` (strictly newer) or `q` (items containing the text); paginated with `limit`/`offset`. An unknown `version` is `not_found`.
- [Config reference](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/config_reference): Claude Code configuration surfaces as records, parsed from the official reference tables: every settings key (settings-reference: key, description, topic, scope), hook event (hooks: event, when it fires), environment variable (env-vars: variable, purpose), skill frontmatter field (skills) and subagent frontmatter field (sub-agents). Each record links to its section when the page has one.
- [Get page](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/get_page): One Claude Code docs page as clean Markdown (GET /docs/{language}/{path}.md, the docs' agent-facing rendering) with title, description, an outline of headings with anchors, and the content. `section` (heading text or anchor, case-insensitive) returns only that heading and its subsections. Accepts a page path or a docs URL; an anchor in the URL selects that section. Unknown pages and sections are `not_found`.
- [List pages](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/list_pages): The Claude Code docs page index (llms.txt) as records: title, page path, URL, Markdown URL, description and navigation group. Filter by `q` (title, path or description) and `group`; paginated with `limit`/`offset`.
- [Search docs](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/search_docs): Search the official Claude Code docs through Anthropic's public Mintlify docs MCP server (`search_claude_code_docs`). Returns ranked hits in the vendor's order with title, URL, page path, section anchor and a Markdown snippet. The search is semantic, so it can return loosely related hits for unusual queries.

## 1. Choose this provider when

Official Claude Code documentation from code.claude.com: semantic docs search through Anthropic's public docs MCP server, any page as clean Markdown with an outline and section reads, the full page index, the release changelog by version, and the configuration reference tables (settings keys, hook events, environment variables, skill and subagent frontmatter). Public agent-facing sources only; no login or key.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "code-claude-com",
  "capability": "developer-documentation/changelog",
  "options": {
    "version": "2.1.300"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `limit` (number): Releases per page. Defaults to 10. Example: `10`
- `offset` (number): Defaults to 0. Example: `10`
- `q` (string): Keep only items containing this text (case-insensitive) and the releases that have one. Example: `<q>`
- `since_version` (string): Only releases newer than this version. Pattern: ^v?[0-9]+(\.[0-9]+)*$. Example: `<since_version>`
- `version` (string): Exact version, e.g. `2.1.300`. Pattern: ^v?[0-9]+(\.[0-9]+)*$. Example: `2.1.300`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "code-claude-com",
    capability: "developer-documentation/changelog",
    options: {
      version: "2.1.300",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "code-claude-com",
  "capability": "developer-documentation/changelog",
  "options": {
    "version": "2.1.300"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "code-claude-com",
    "capability": "developer-documentation/changelog",
    "options": {
      "version": "2.1.300"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'code-claude-com/developer-documentation/changelog' \
  --options '{"version":"2.1.300"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "code-claude-com",
  "capability": "developer-documentation/changelog",
  "options": {
    "version": "2.1.300"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "code-claude-com",
  "capability": "developer-documentation/changelog",
  "options": {
    "version": "2.1.300"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "count": 1,
  "entries": [
    {
      "date": "2026-10-14",
      "date_text": "October 14, 2026",
      "item_count": 88,
      "items": [
        {
          "category": "Added",
          "text": "Added `virtualText` to a mod's prompt decorations: text drawn in the prompt box that never enters the draft or the submitted prompt"
        },
        {
          "category": "Added",
          "text": "Added `cache_creation_5m_tokens` and `cache_creation_1h_tokens` to the OpenTelemetry `api_request` event, splitting cache writes by lifetime"
        },
        {
          "category": "Added",
          "text": "Added `$.ui.view({ agentId })` for mods: shows an agent's transcript in the main view when you ask, and `$.ui.view({})` goes back"
        },
        {
          "category": "Added",
          "text": "Added a `dir` prop on a mod's `Text` for right-to-left text: on Windows and in VS Code's terminal its rows read in that direction and sit flush right"
        },
        {
          "category": "Added",
          "text": "Added `/advisor` on Claude Platform on AWS; no advisor runs until you pick one with `/advisor`, `advisorModel` or `--advisor`, and `CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1` turns it off"
        },
        {
          "category": "Added",
          "text": "Added OpenTelemetry GenAI semantic-convention attributes to trace spans, such as `gen_ai.provider.name`, `gen_ai.conversation.id`, `gen_ai.tool.name` and `error.type`"
        },
        {
          "category": "Added",
          "text": "Added support for rewriting a workflow agent's `prompt` and `model` in the `agent.spawn` mod hook, which could only refuse workflow agents before"
        },
        {
          "category": "Added",
          "text": "Added the `prompt.change` mod hook, raised when the prompt box's text changes without a typed edit: a recalled history entry, a clear, an undo, or a plugin's fill"
        },
        {
          "category": "Added",
          "text": "[VSCode] Added the `claudeCode.attachSelection` setting to stop text selected in the editor from being added to your messages"
        },
        {
          "category": "Added",
          "text": "[Claude Tag] Added support for Slack Connect channels: an Owner or Claude Tag admin can let Claude in Slack answer in channels shared with another organization; it's off by default"
        },
        {
          "category": "Added",
          "text": "[Claude Tag] Added a private Allow once / Deny card in Slack threads for connector actions that need your approval, so Claude asks instead of refusing; others only see that it's waiting on you"
        },
        {
          "category": "Added",
          "text": "[Claude Tag] Added support for Slack voice clips in Claude in Slack: Claude reads Slack's transcript of a clip when Slack has one"
        },
        {
          "category": "Changed",
          "text": "Changed `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` sessions to ignore CA-bundle, tool-proxy, git TLS and git config variables like `SSL_CERT_FILE` in settings; under Claude Desktop, only in project settings"
        },
        {
          "category": "Changed",
          "text": "Changed exit to force-kill background commands still running 1.5 seconds after being asked to stop; in fullscreen mode they could previously be left running"
        },
        {
          "category": "Changed",
          "text": "Changed Claude Desktop's Code tab to apply managed settings when `forceLoginGatewayUrl` names an Anthropic-operated gateway that serves the session's hostname; that gateway must be reachable at start"
        },
        {
          "category": "Changed",
          "text": "Changed `claude gateway` to stop at start, naming the key, on a `desktop:` policy key that Claude Desktop cannot use from a gateway, where it earlier started with a warning"
        },
        {
          "category": "Changed",
          "text": "Changed large requests to api.anthropic.com to use gzip compression even when telemetry is disabled; set `CLAUDE_CODE_GZIP_REQUEST_BODIES=0` to turn it off"
        },
        {
          "category": "Changed",
          "text": "Changed the `claude-api` skill to leave Managed Agents sessions in place unless you ask to archive or delete them"
        },
        {
          "category": "Changed",
          "text": "Changed background sessions to resume a carried workflow through the Workflow tool's approval instead of running it from the handoff file"
        },
        {
          "category": "Changed",
          "text": "Changed local session transcripts to also record each API request's system prompt, tools and parameters, so a transcript you choose to share can reproduce a request exactly"
        },
        {
          "category": "Changed",
          "text": "Changed the `/sandbox` mode options to read \"Sandbox commands\" instead of \"Sandbox BashTool\""
        },
        {
          "category": "Changed",
          "text": "Changed `PermissionRequest` hooks in Cowork cloud sessions: a `setMode` update in a hook's allow is now ignored; the rest of the approval still applies"
        },
        {
          "category": "Changed",
          "text": "Changed hooks: `updatedInput` from PreToolUse and PermissionRequest hooks is now validated like Claude's own input: unknown keys are dropped, and input the tool rejects denies the call"
        },
        {
          "category": "Changed",
          "text": "Removed the `--sandbox` and `--no-sandbox` flags from `claude remote-control`, which had no effect; passing either now exits with an error. Set `sandbox.enabled` in settings to sandbox sessions"
        },
        {
          "category": "Changed",
          "text": "[Claude Tag] Changed access bundles an admin attached to a Slack channel to keep applying once the channel becomes a Slack Connect channel, with no need to remove and re-attach them"
        },
        {
          "category": "Improved",
          "text": "Improved WebFetch in Cowork cloud sessions to tell Claude that a page failed moments ago instead of fetching it again"
        },
        {
          "category": "Improved",
          "text": "Improved mod sharing in the built-in `plugin-authoring` skill: Claude scans a mod's files for keys before opening them, and asks before scanning a folder outside the project"
        },
        {
          "category": "Improved",
          "text": "Improved the note Claude 3 models get about an @-mentioned PDF, so they less often answer without reading it"
        },
        {
          "category": "Improved",
          "text": "Improved artifact updates: Claude now applies a small change and republishes the artifact in one call, and makes larger edits and republishes within a single response"
        },
        {
          "category": "Fixed",
          "text": "Fixed cloud sessions telling Claude that an organization policy blocked a host when the session's own network settings did"
        },
        {
          "category": "Fixed",
          "text": "Fixed `/autocompact` warning about high token usage when you choose a smaller auto-compact window"
        },
        {
          "category": "Fixed",
          "text": "Fixed SessionEnd hooks sometimes not running when you exit while a background command is still running"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude --help` naming a removed tool in its description of `--restricted`"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude agents` not refreshing any pull request's status when the data for one of them came back incomplete"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude being told a background agent was lost, not resumable, after a cloud session's container was replaced, when the agent had already been resumed once"
        },
        {
          "category": "Fixed",
          "text": "Fixed subagents you had typed messages to disappearing from `/tasks` shortly after finishing, leaving no way back to the conversation"
        },
        {
          "category": "Fixed",
          "text": "Fixed a completed parent agent dropping off the breadcrumb (its child shown re-rooted at top level) while you were viewing the child"
        },
        {
          "category": "Fixed",
          "text": "Fixed the agents view taking a typed word such as \"up\", \"down\" or \"escape\" for that key when input arrived in a burst, which could move the peek mid-reply or clear a draft"
        },
        {
          "category": "Fixed",
          "text": "Fixed automatic tool search (`ENABLE_TOOL_SEARCH=auto`) turning off part-way through a conversation, for example while MCP servers reconnect after a resume"
        },
        {
          "category": "Fixed",
          "text": "Fixed a login refused by `forceLoginOrgUUID` leaving the refused organization's token stored, or live after `/login`"
        },
        {
          "category": "Fixed",
          "text": "Fixed the diff view in Claude Desktop and Remote Control sessions not noticing a conflicted cherry-pick or revert in reftable repositories"
        },
        {
          "category": "Fixed",
          "text": "Fixed the Artifact tool's verbose and ctrl+o line reading `Artifact(\"(unprintable path)\")` while a call's input arrives; its row now shows \"Waiting…\" and \"Running…\" as Bash's does"
        },
        {
          "category": "Fixed",
          "text": "Fixed the first transcript entry written after resuming a session being lost when a crash had cut the transcript's last line short"
        },
        {
          "category": "Fixed",
          "text": "Fixed `/branch` dropping messages, and `claude purge` skipping subfolder projects, when they contain a Unicode line or paragraph separator (U+2028, U+2029)"
        },
        {
          "category": "Fixed",
          "text": "Fixed plugin `WorktreeCreate` and `WorktreeRemove` hooks not running when Claude Code starts with `--worktree` (not yet with `--tmux`)"
        },
        {
          "category": "Fixed",
          "text": "Fixed OpenTelemetry `tool_result` events missing `git_commit_id` after `git commit -q` in repositories using reftable ref storage"
        },
        {
          "category": "Fixed",
          "text": "Fixed a prompt that a mod's `prompt.submit` hook rewrote or dropped still being recorded as typed in the OpenTelemetry `user_prompt` event and interaction span, and in session title requests"
        },
        {
          "category": "Fixed",
          "text": "Fixed a note meant for Claude about mod hot-reloading appearing in the transcript as if you had typed it"
        },
        {
          "category": "Fixed",
          "text": "Fixed agent hooks ignoring their `model`: aliases like `haiku` now resolve, a subagent's model no longer overrides it, and an unavailable model falls back to the caller's instead of allowing the action"
        },
        {
          "category": "Fixed",
          "text": "Fixed `--worktree` sessions sometimes starting from the wrong commit when a tag or branch was named like a commit ID, and their starting git status naming a branch other than the new worktree's"
        },
        {
          "category": "Fixed",
          "text": "Fixed the branch showing as \".invalid\" and `--worktree` failing to reopen a worktree in repositories using git's reftable ref storage"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude naming files in the session scratchpad by a bare filename or relative path instead of their full path"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude remote-control` servers giving up on renewing their connection after a brief sign-in error, such as a locked keychain; they now retry, and warn when you need to run `claude /login`"
        },
        {
          "category": "Fixed",
          "text": "Fixed `--worktree` failing in a worktree of a bare repository when origin's default branch can't be fetched; the fallback base is now the current checkout's HEAD, not the main repository's"
        },
        {
          "category": "Fixed",
          "text": "Fixed starting Claude Code in a VS Code, Cursor or Devin Desktop integrated terminal launching the editor's command-line tool twice to check for the extension; it now launches it once"
        },
        {
          "category": "Fixed",
          "text": "Fixed a mod's `prompt.edit` hook not being raised for a newline entered with the `chat:newline` keybinding (Ctrl+J, or a rebound Enter)"
        },
        {
          "category": "Fixed",
          "text": "Fixed a conversation failing on every turn with a 400 error when the API rejected an MCP tool's input schema; Claude Code now sends that tool without parameters for the rest of the conversation"
        },
        {
          "category": "Fixed",
          "text": "Fixed resuming a headless or Agent SDK session losing the recent messages a compaction had kept, when the compaction followed a reply cut at the output token limit (compactions from this version on)"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude not being told about an MCP server's tools and instructions until its next tool call, when the server finished connecting after a compaction"
        },
        {
          "category": "Fixed",
          "text": "Fixed Remote Control sessions being marked stopped while still running, on a computer serving several sessions at once"
        },
        {
          "category": "Fixed",
          "text": "Fixed resuming a headless or Agent SDK session losing its compaction summary or bringing back pre-compaction history, when the compaction followed a retried or unfinished reply in the same turn"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude polling a background command's output file or sleeping while it runs"
        },
        {
          "category": "Fixed",
          "text": "Fixed feature flags and staged rollouts staying stale behind a TLS-inspecting proxy whose certificate is trusted only through the OS certificate store"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude daemon stop --any` printing \"stopped\" while a stuck background service kept running: it now waits, force-kills the service, and says so with exit 1 if it is still there"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude daemon stop` exiting with no output, and leaving sessions listed as running, when telemetry is turned off"
        },
        {
          "category": "Fixed",
          "text": "Fixed Write, Edit and NotebookEdit in Cowork cloud sessions reporting success for a path on your own computer, where the file never arrived"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude searching for deferred tools already loaded earlier in the conversation when a session resumes a history that never listed them"
        },
        {
          "category": "Fixed",
          "text": "Fixed secondary (dim) text looking the same as normal text under the dark ANSI theme and on 16-color terminals"
        },
        {
          "category": "Fixed",
          "text": "Fixed cloud sessions hanging 5 minutes per turn when the organization's policy can't be read; the turn now ends promptly and says why"
        },
        {
          "category": "Fixed",
          "text": "Fixed a cloud session sometimes running an already answered message a second time after the session restarted during a long reply"
        },
        {
          "category": "Fixed",
          "text": "Self-hosted runner: Fixed the runner and orchestrator freezing (no polls, `/healthz` or `SIGTERM` shutdown) while nobody reads their output; logs keep the latest 256 KiB and count drops (not on Windows)"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed fast mode staying on after usage credits ran out, which made each request be refused and re-sent; it now turns off until you turn it back on, with an error notice"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed the Thinking toggle switching to Off on models that always think; the toggle is no longer shown for those models"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed \"Edit prompt\" on a flagged message opening the file or command menu over the restored prompt; Enter now sends it as written"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed Shift+dragging a file onto the prompt on Windows inserting an unreadable `/c:/…` path instead of a mention relative to the working directory"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed changes to VS Code's chat font size settings needing a window reload or being undone by a theme change; diffs and the plan preview now follow them too"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed \"Resume session\" and tabs restored after a reload opening an empty new conversation instead of one that had moved into a git worktree"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed ↑ then Enter on a recalled slash command running it without its arguments; the command and file menus no longer open over a recalled prompt until you edit it"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed Shift+dragging a file from the Explorer or an editor tab onto the prompt inserting nothing in WSL, SSH and Dev Container windows"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed Ctrl+Alt+F toggling Focus view instead of opening Find in the Explorer, other tree views, or the Debug Console on Windows and Linux"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed the check for sessions open in other windows or terminals creating extra processes on macOS: it now starts `/bin/ps` directly instead of searching PATH for `ps` on every check"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Windows: Fixed a conversation showing \"still open somewhere else\" after a crash or power loss, when Windows had since restarted and given the old process ID to another program"
        },
        {
          "category": "Fixed",
          "text": "[Cloud sessions] Fixed \"Allow for this task\" missing from Cowork's approval prompts for connector tools where an organization turns off \"Always allow\" (regression in 2.1.292)"
        },
        {
          "category": "Fixed",
          "text": "[Cloud sessions] Fixed most commands in the / menu losing their descriptions in cloud sessions once you sent a second message"
        },
        {
          "category": "Fixed",
          "text": "[Remote Control] Fixed the diff view in Remote Control sessions on claude.ai and the desktop app showing deleted and renamed files as modified; requires Claude Code v2.1.296 or later on your machine"
        },
        {
          "category": "Fixed",
          "text": "[Claude Tag] Fixed Claude in Slack not answering another app that tags it in a thread under a message Claude itself posted to the channel"
        },
        {
          "category": "Fixed",
          "text": "[Code Review] Fixed Code Review ignoring `@claude review` comments from people with write access whose GitHub organization membership is private; their comments now start a review"
        },
        {
          "category": "Fixed",
          "text": "[Code Review] Fixed Code Review's \"paused for this repository\" comment sending admins to Code Review settings; it now says who can fix it and links the Git providers page"
        }
      ],
      "url": "https://code.claude.com/docs/en/changelog#2-1-300",
      "version": "2.1.300"
    }
  ],
  "latest_version": "2.1.304",
  "next_offset": null,
  "observed_at_ms": 1792515875795,
  "query": {
    "limit": 10,
    "offset": 0,
    "q": null,
    "since_version": null,
    "version": "2.1.300"
  },
  "source_url": "https://code.claude.com/docs/en/changelog.md",
  "total_count": 1
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Changelog

- Capability: `developer-documentation/changelog`
- Description: Claude Code release notes from the official changelog page (GET /docs/en/changelog.md), newest first: version, date and each change item with its category. Filter by exact `version`, `since_version` (strictly newer) or `q` (items containing the text); paginated with `limit`/`offset`. An unknown `version` is `not_found`.
- Instructions: To check when a Claude Code feature, flag or fix shipped, or what changed since a given version.
- Cost: 5 credits per call
- Capability file: [Changelog](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/changelog)

Accepted options:
- `limit` (number): Releases per page. Defaults to 10. Example: `10`
- `offset` (number): Defaults to 0. Example: `10`
- `q` (string): Keep only items containing this text (case-insensitive) and the releases that have one. Example: `<q>`
- `since_version` (string): Only releases newer than this version. Pattern: ^v?[0-9]+(\.[0-9]+)*$. Example: `<since_version>`
- `version` (string): Exact version, e.g. `2.1.300`. Pattern: ^v?[0-9]+(\.[0-9]+)*$. Example: `2.1.300`

Response schema example:
```json
{
  "count": 1,
  "entries": [
    {
      "date": "2026-10-14",
      "date_text": "October 14, 2026",
      "item_count": 88,
      "items": [
        {
          "category": "Added",
          "text": "Added `virtualText` to a mod's prompt decorations: text drawn in the prompt box that never enters the draft or the submitted prompt"
        },
        {
          "category": "Added",
          "text": "Added `cache_creation_5m_tokens` and `cache_creation_1h_tokens` to the OpenTelemetry `api_request` event, splitting cache writes by lifetime"
        },
        {
          "category": "Added",
          "text": "Added `$.ui.view({ agentId })` for mods: shows an agent's transcript in the main view when you ask, and `$.ui.view({})` goes back"
        },
        {
          "category": "Added",
          "text": "Added a `dir` prop on a mod's `Text` for right-to-left text: on Windows and in VS Code's terminal its rows read in that direction and sit flush right"
        },
        {
          "category": "Added",
          "text": "Added `/advisor` on Claude Platform on AWS; no advisor runs until you pick one with `/advisor`, `advisorModel` or `--advisor`, and `CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1` turns it off"
        },
        {
          "category": "Added",
          "text": "Added OpenTelemetry GenAI semantic-convention attributes to trace spans, such as `gen_ai.provider.name`, `gen_ai.conversation.id`, `gen_ai.tool.name` and `error.type`"
        },
        {
          "category": "Added",
          "text": "Added support for rewriting a workflow agent's `prompt` and `model` in the `agent.spawn` mod hook, which could only refuse workflow agents before"
        },
        {
          "category": "Added",
          "text": "Added the `prompt.change` mod hook, raised when the prompt box's text changes without a typed edit: a recalled history entry, a clear, an undo, or a plugin's fill"
        },
        {
          "category": "Added",
          "text": "[VSCode] Added the `claudeCode.attachSelection` setting to stop text selected in the editor from being added to your messages"
        },
        {
          "category": "Added",
          "text": "[Claude Tag] Added support for Slack Connect channels: an Owner or Claude Tag admin can let Claude in Slack answer in channels shared with another organization; it's off by default"
        },
        {
          "category": "Added",
          "text": "[Claude Tag] Added a private Allow once / Deny card in Slack threads for connector actions that need your approval, so Claude asks instead of refusing; others only see that it's waiting on you"
        },
        {
          "category": "Added",
          "text": "[Claude Tag] Added support for Slack voice clips in Claude in Slack: Claude reads Slack's transcript of a clip when Slack has one"
        },
        {
          "category": "Changed",
          "text": "Changed `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` sessions to ignore CA-bundle, tool-proxy, git TLS and git config variables like `SSL_CERT_FILE` in settings; under Claude Desktop, only in project settings"
        },
        {
          "category": "Changed",
          "text": "Changed exit to force-kill background commands still running 1.5 seconds after being asked to stop; in fullscreen mode they could previously be left running"
        },
        {
          "category": "Changed",
          "text": "Changed Claude Desktop's Code tab to apply managed settings when `forceLoginGatewayUrl` names an Anthropic-operated gateway that serves the session's hostname; that gateway must be reachable at start"
        },
        {
          "category": "Changed",
          "text": "Changed `claude gateway` to stop at start, naming the key, on a `desktop:` policy key that Claude Desktop cannot use from a gateway, where it earlier started with a warning"
        },
        {
          "category": "Changed",
          "text": "Changed large requests to api.anthropic.com to use gzip compression even when telemetry is disabled; set `CLAUDE_CODE_GZIP_REQUEST_BODIES=0` to turn it off"
        },
        {
          "category": "Changed",
          "text": "Changed the `claude-api` skill to leave Managed Agents sessions in place unless you ask to archive or delete them"
        },
        {
          "category": "Changed",
          "text": "Changed background sessions to resume a carried workflow through the Workflow tool's approval instead of running it from the handoff file"
        },
        {
          "category": "Changed",
          "text": "Changed local session transcripts to also record each API request's system prompt, tools and parameters, so a transcript you choose to share can reproduce a request exactly"
        },
        {
          "category": "Changed",
          "text": "Changed the `/sandbox` mode options to read \"Sandbox commands\" instead of \"Sandbox BashTool\""
        },
        {
          "category": "Changed",
          "text": "Changed `PermissionRequest` hooks in Cowork cloud sessions: a `setMode` update in a hook's allow is now ignored; the rest of the approval still applies"
        },
        {
          "category": "Changed",
          "text": "Changed hooks: `updatedInput` from PreToolUse and PermissionRequest hooks is now validated like Claude's own input: unknown keys are dropped, and input the tool rejects denies the call"
        },
        {
          "category": "Changed",
          "text": "Removed the `--sandbox` and `--no-sandbox` flags from `claude remote-control`, which had no effect; passing either now exits with an error. Set `sandbox.enabled` in settings to sandbox sessions"
        },
        {
          "category": "Changed",
          "text": "[Claude Tag] Changed access bundles an admin attached to a Slack channel to keep applying once the channel becomes a Slack Connect channel, with no need to remove and re-attach them"
        },
        {
          "category": "Improved",
          "text": "Improved WebFetch in Cowork cloud sessions to tell Claude that a page failed moments ago instead of fetching it again"
        },
        {
          "category": "Improved",
          "text": "Improved mod sharing in the built-in `plugin-authoring` skill: Claude scans a mod's files for keys before opening them, and asks before scanning a folder outside the project"
        },
        {
          "category": "Improved",
          "text": "Improved the note Claude 3 models get about an @-mentioned PDF, so they less often answer without reading it"
        },
        {
          "category": "Improved",
          "text": "Improved artifact updates: Claude now applies a small change and republishes the artifact in one call, and makes larger edits and republishes within a single response"
        },
        {
          "category": "Fixed",
          "text": "Fixed cloud sessions telling Claude that an organization policy blocked a host when the session's own network settings did"
        },
        {
          "category": "Fixed",
          "text": "Fixed `/autocompact` warning about high token usage when you choose a smaller auto-compact window"
        },
        {
          "category": "Fixed",
          "text": "Fixed SessionEnd hooks sometimes not running when you exit while a background command is still running"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude --help` naming a removed tool in its description of `--restricted`"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude agents` not refreshing any pull request's status when the data for one of them came back incomplete"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude being told a background agent was lost, not resumable, after a cloud session's container was replaced, when the agent had already been resumed once"
        },
        {
          "category": "Fixed",
          "text": "Fixed subagents you had typed messages to disappearing from `/tasks` shortly after finishing, leaving no way back to the conversation"
        },
        {
          "category": "Fixed",
          "text": "Fixed a completed parent agent dropping off the breadcrumb (its child shown re-rooted at top level) while you were viewing the child"
        },
        {
          "category": "Fixed",
          "text": "Fixed the agents view taking a typed word such as \"up\", \"down\" or \"escape\" for that key when input arrived in a burst, which could move the peek mid-reply or clear a draft"
        },
        {
          "category": "Fixed",
          "text": "Fixed automatic tool search (`ENABLE_TOOL_SEARCH=auto`) turning off part-way through a conversation, for example while MCP servers reconnect after a resume"
        },
        {
          "category": "Fixed",
          "text": "Fixed a login refused by `forceLoginOrgUUID` leaving the refused organization's token stored, or live after `/login`"
        },
        {
          "category": "Fixed",
          "text": "Fixed the diff view in Claude Desktop and Remote Control sessions not noticing a conflicted cherry-pick or revert in reftable repositories"
        },
        {
          "category": "Fixed",
          "text": "Fixed the Artifact tool's verbose and ctrl+o line reading `Artifact(\"(unprintable path)\")` while a call's input arrives; its row now shows \"Waiting…\" and \"Running…\" as Bash's does"
        },
        {
          "category": "Fixed",
          "text": "Fixed the first transcript entry written after resuming a session being lost when a crash had cut the transcript's last line short"
        },
        {
          "category": "Fixed",
          "text": "Fixed `/branch` dropping messages, and `claude purge` skipping subfolder projects, when they contain a Unicode line or paragraph separator (U+2028, U+2029)"
        },
        {
          "category": "Fixed",
          "text": "Fixed plugin `WorktreeCreate` and `WorktreeRemove` hooks not running when Claude Code starts with `--worktree` (not yet with `--tmux`)"
        },
        {
          "category": "Fixed",
          "text": "Fixed OpenTelemetry `tool_result` events missing `git_commit_id` after `git commit -q` in repositories using reftable ref storage"
        },
        {
          "category": "Fixed",
          "text": "Fixed a prompt that a mod's `prompt.submit` hook rewrote or dropped still being recorded as typed in the OpenTelemetry `user_prompt` event and interaction span, and in session title requests"
        },
        {
          "category": "Fixed",
          "text": "Fixed a note meant for Claude about mod hot-reloading appearing in the transcript as if you had typed it"
        },
        {
          "category": "Fixed",
          "text": "Fixed agent hooks ignoring their `model`: aliases like `haiku` now resolve, a subagent's model no longer overrides it, and an unavailable model falls back to the caller's instead of allowing the action"
        },
        {
          "category": "Fixed",
          "text": "Fixed `--worktree` sessions sometimes starting from the wrong commit when a tag or branch was named like a commit ID, and their starting git status naming a branch other than the new worktree's"
        },
        {
          "category": "Fixed",
          "text": "Fixed the branch showing as \".invalid\" and `--worktree` failing to reopen a worktree in repositories using git's reftable ref storage"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude naming files in the session scratchpad by a bare filename or relative path instead of their full path"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude remote-control` servers giving up on renewing their connection after a brief sign-in error, such as a locked keychain; they now retry, and warn when you need to run `claude /login`"
        },
        {
          "category": "Fixed",
          "text": "Fixed `--worktree` failing in a worktree of a bare repository when origin's default branch can't be fetched; the fallback base is now the current checkout's HEAD, not the main repository's"
        },
        {
          "category": "Fixed",
          "text": "Fixed starting Claude Code in a VS Code, Cursor or Devin Desktop integrated terminal launching the editor's command-line tool twice to check for the extension; it now launches it once"
        },
        {
          "category": "Fixed",
          "text": "Fixed a mod's `prompt.edit` hook not being raised for a newline entered with the `chat:newline` keybinding (Ctrl+J, or a rebound Enter)"
        },
        {
          "category": "Fixed",
          "text": "Fixed a conversation failing on every turn with a 400 error when the API rejected an MCP tool's input schema; Claude Code now sends that tool without parameters for the rest of the conversation"
        },
        {
          "category": "Fixed",
          "text": "Fixed resuming a headless or Agent SDK session losing the recent messages a compaction had kept, when the compaction followed a reply cut at the output token limit (compactions from this version on)"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude not being told about an MCP server's tools and instructions until its next tool call, when the server finished connecting after a compaction"
        },
        {
          "category": "Fixed",
          "text": "Fixed Remote Control sessions being marked stopped while still running, on a computer serving several sessions at once"
        },
        {
          "category": "Fixed",
          "text": "Fixed resuming a headless or Agent SDK session losing its compaction summary or bringing back pre-compaction history, when the compaction followed a retried or unfinished reply in the same turn"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude polling a background command's output file or sleeping while it runs"
        },
        {
          "category": "Fixed",
          "text": "Fixed feature flags and staged rollouts staying stale behind a TLS-inspecting proxy whose certificate is trusted only through the OS certificate store"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude daemon stop --any` printing \"stopped\" while a stuck background service kept running: it now waits, force-kills the service, and says so with exit 1 if it is still there"
        },
        {
          "category": "Fixed",
          "text": "Fixed `claude daemon stop` exiting with no output, and leaving sessions listed as running, when telemetry is turned off"
        },
        {
          "category": "Fixed",
          "text": "Fixed Write, Edit and NotebookEdit in Cowork cloud sessions reporting success for a path on your own computer, where the file never arrived"
        },
        {
          "category": "Fixed",
          "text": "Fixed Claude searching for deferred tools already loaded earlier in the conversation when a session resumes a history that never listed them"
        },
        {
          "category": "Fixed",
          "text": "Fixed secondary (dim) text looking the same as normal text under the dark ANSI theme and on 16-color terminals"
        },
        {
          "category": "Fixed",
          "text": "Fixed cloud sessions hanging 5 minutes per turn when the organization's policy can't be read; the turn now ends promptly and says why"
        },
        {
          "category": "Fixed",
          "text": "Fixed a cloud session sometimes running an already answered message a second time after the session restarted during a long reply"
        },
        {
          "category": "Fixed",
          "text": "Self-hosted runner: Fixed the runner and orchestrator freezing (no polls, `/healthz` or `SIGTERM` shutdown) while nobody reads their output; logs keep the latest 256 KiB and count drops (not on Windows)"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed fast mode staying on after usage credits ran out, which made each request be refused and re-sent; it now turns off until you turn it back on, with an error notice"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed the Thinking toggle switching to Off on models that always think; the toggle is no longer shown for those models"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed \"Edit prompt\" on a flagged message opening the file or command menu over the restored prompt; Enter now sends it as written"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed Shift+dragging a file onto the prompt on Windows inserting an unreadable `/c:/…` path instead of a mention relative to the working directory"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed changes to VS Code's chat font size settings needing a window reload or being undone by a theme change; diffs and the plan preview now follow them too"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed \"Resume session\" and tabs restored after a reload opening an empty new conversation instead of one that had moved into a git worktree"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed ↑ then Enter on a recalled slash command running it without its arguments; the command and file menus no longer open over a recalled prompt until you edit it"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed Shift+dragging a file from the Explorer or an editor tab onto the prompt inserting nothing in WSL, SSH and Dev Container windows"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed Ctrl+Alt+F toggling Focus view instead of opening Find in the Explorer, other tree views, or the Debug Console on Windows and Linux"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Fixed the check for sessions open in other windows or terminals creating extra processes on macOS: it now starts `/bin/ps` directly instead of searching PATH for `ps` on every check"
        },
        {
          "category": "Fixed",
          "text": "[VSCode] Windows: Fixed a conversation showing \"still open somewhere else\" after a crash or power loss, when Windows had since restarted and given the old process ID to another program"
        },
        {
          "category": "Fixed",
          "text": "[Cloud sessions] Fixed \"Allow for this task\" missing from Cowork's approval prompts for connector tools where an organization turns off \"Always allow\" (regression in 2.1.292)"
        },
        {
          "category": "Fixed",
          "text": "[Cloud sessions] Fixed most commands in the / menu losing their descriptions in cloud sessions once you sent a second message"
        },
        {
          "category": "Fixed",
          "text": "[Remote Control] Fixed the diff view in Remote Control sessions on claude.ai and the desktop app showing deleted and renamed files as modified; requires Claude Code v2.1.296 or later on your machine"
        },
        {
          "category": "Fixed",
          "text": "[Claude Tag] Fixed Claude in Slack not answering another app that tags it in a thread under a message Claude itself posted to the channel"
        },
        {
          "category": "Fixed",
          "text": "[Code Review] Fixed Code Review ignoring `@claude review` comments from people with write access whose GitHub organization membership is private; their comments now start a review"
        },
        {
          "category": "Fixed",
          "text": "[Code Review] Fixed Code Review's \"paused for this repository\" comment sending admins to Code Review settings; it now says who can fix it and links the Git providers page"
        }
      ],
      "url": "https://code.claude.com/docs/en/changelog#2-1-300",
      "version": "2.1.300"
    }
  ],
  "latest_version": "2.1.304",
  "next_offset": null,
  "observed_at_ms": 1792515875795,
  "query": {
    "limit": 10,
    "offset": 0,
    "q": null,
    "since_version": null,
    "version": "2.1.300"
  },
  "source_url": "https://code.claude.com/docs/en/changelog.md",
  "total_count": 1
}
```

### Config reference

- Capability: `developer-documentation/config_reference`
- Description: Claude Code configuration surfaces as records, parsed from the official reference tables: every settings key (settings-reference: key, description, topic, scope), hook event (hooks: event, when it fires), environment variable (env-vars: variable, purpose), skill frontmatter field (skills) and subagent frontmatter field (sub-agents). Each record links to its section when the page has one.
- Instructions: To enumerate settings keys, hook events, environment variables or SKILL.md / subagent frontmatter fields, then read details with get_page.
- Cost: 5 credits per call
- Capability file: [Config reference](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/config_reference)

Accepted options:
- `kind` (string, required): Which reference table to return. Example: `settings`
- `limit` (number): Defaults to 500. Example: `10`
- `offset` (number): Defaults to 0. Example: `10`
- `q` (string): Case-insensitive substring matched against name and description. Example: `<q>`

Response schema example:
```json
{
  "count": 33,
  "entries": [
    {
      "anchor": "sessionstart",
      "description": "When a session begins or resumes",
      "name": "SessionStart",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#sessionstart"
    },
    {
      "anchor": "setup",
      "description": "When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts",
      "name": "Setup",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#setup"
    },
    {
      "anchor": "userpromptsubmit",
      "description": "When a prompt is submitted, before Claude processes it. Also fires on [turns Claude Code starts on its own](/docs/en/hooks#userpromptsubmit)",
      "name": "UserPromptSubmit",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#userpromptsubmit"
    },
    {
      "anchor": "userpromptexpansion",
      "description": "When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion",
      "name": "UserPromptExpansion",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#userpromptexpansion"
    },
    {
      "anchor": "pretooluse",
      "description": "Before a tool call executes. Can block it",
      "name": "PreToolUse",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#pretooluse"
    },
    {
      "anchor": "permissionrequest",
      "description": "When a tool call needs a permission decision",
      "name": "PermissionRequest",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#permissionrequest"
    },
    {
      "anchor": "permissiondenied",
      "description": "When auto mode denies a tool call, including denials without a classifier verdict. Use JSON `hookSpecificOutput.retry: true` to tell the model it may retry the denied tool call. Claude Code ignores `retry` when the classifier produced no verdict",
      "name": "PermissionDenied",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#permissiondenied"
    },
    {
      "anchor": "posttooluse",
      "description": "After a tool call succeeds",
      "name": "PostToolUse",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#posttooluse"
    },
    {
      "anchor": "posttoolusefailure",
      "description": "After a tool call fails",
      "name": "PostToolUseFailure",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#posttoolusefailure"
    },
    {
      "anchor": "posttoolbatch",
      "description": "After a full batch of parallel tool calls resolves, before the next model call",
      "name": "PostToolBatch",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#posttoolbatch"
    },
    {
      "anchor": "notification",
      "description": "When Claude Code sends a notification",
      "name": "Notification",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#notification"
    },
    {
      "anchor": "messagedisplay",
      "description": "While assistant message text is displayed",
      "name": "MessageDisplay",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#messagedisplay"
    },
    {
      "anchor": "subagentstart",
      "description": "When a subagent is spawned",
      "name": "SubagentStart",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#subagentstart"
    },
    {
      "anchor": "subagentstop",
      "description": "When a subagent finishes",
      "name": "SubagentStop",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#subagentstop"
    },
    {
      "anchor": "taskcreated",
      "description": "When a task is being created via `TaskCreate`",
      "name": "TaskCreated",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#taskcreated"
    },
    {
      "anchor": "taskcompleted",
      "description": "When a task is being marked as completed",
      "name": "TaskCompleted",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#taskcompleted"
    },
    {
      "anchor": "stop",
      "description": "When Claude finishes responding",
      "name": "Stop",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#stop"
    },
    {
      "anchor": "stopfailure",
      "description": "When the turn ends due to an API error",
      "name": "StopFailure",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#stopfailure"
    },
    {
      "anchor": "teammateidle",
      "description": "When an [agent team](/docs/en/agent-teams) teammate is about to go idle",
      "name": "TeammateIdle",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#teammateidle"
    },
    {
      "anchor": "instructionsloaded",
      "description": "When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session",
      "name": "InstructionsLoaded",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#instructionsloaded"
    },
    {
      "anchor": "configchange",
      "description": "When a configuration file changes during a session",
      "name": "ConfigChange",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#configchange"
    },
    {
      "anchor": "cwdchanged",
      "description": "When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv",
      "name": "CwdChanged",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#cwdchanged"
    },
    {
      "anchor": "directoryadded",
      "description": "When a working directory is added mid-session via `/add-dir` or the SDK `register_repo_root` control request",
      "name": "DirectoryAdded",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#directoryadded"
    },
    {
      "anchor": "filechanged",
      "description": "When a watched file changes on disk. The `matcher` field specifies which filenames to watch",
      "name": "FileChanged",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#filechanged"
    },
    {
      "anchor": "worktreecreate",
      "description": "When a worktree is being created via `--worktree`, `isolation: \"worktree\"`, or for a background session. Replaces default git behavior",
      "name": "WorktreeCreate",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#worktreecreate"
    },
    {
      "anchor": "worktreeremove",
      "description": "When a worktree that a `WorktreeCreate` hook created is being removed",
      "name": "WorktreeRemove",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#worktreeremove"
    },
    {
      "anchor": "precompact",
      "description": "Before context compaction",
      "name": "PreCompact",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#precompact"
    },
    {
      "anchor": "postcompact",
      "description": "After context compaction completes",
      "name": "PostCompact",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#postcompact"
    },
    {
      "anchor": "premodelswitch",
      "description": "Before Claude Code applies a model switch that you or a client requested. Can block the switch",
      "name": "PreModelSwitch",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#premodelswitch"
    },
    {
      "anchor": "postmodelswitch",
      "description": "After the session's model changes, including changes Claude Code makes on its own, such as restoring the model when you resume a session",
      "name": "PostModelSwitch",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#postmodelswitch"
    },
    {
      "anchor": "elicitation",
      "description": "When an MCP server requests user input during a tool call",
      "name": "Elicitation",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#elicitation"
    },
    {
      "anchor": "elicitationresult",
      "description": "After a user responds to an MCP elicitation, before the response is sent back to the server",
      "name": "ElicitationResult",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#elicitationresult"
    },
    {
      "anchor": "sessionend",
      "description": "When a session terminates",
      "name": "SessionEnd",
      "required": null,
      "scope": null,
      "topic": null,
      "url": "https://code.claude.com/docs/en/hooks#sessionend"
    }
  ],
  "kind": "hook_events",
  "listed_count": 33,
  "next_offset": null,
  "observed_at_ms": 1792515875863,
  "page": {
    "markdown_url": "https://code.claude.com/docs/en/hooks.md",
    "path": "hooks",
    "title": "Hooks reference",
    "url": "https://code.claude.com/docs/en/hooks"
  },
  "query": {
    "limit": 60,
    "offset": 0,
    "q": null
  },
  "source_url": "https://code.claude.com/docs/en/hooks.md",
  "total_count": 33
}
```

### Get page

- Capability: `developer-documentation/get_page`
- Description: One Claude Code docs page as clean Markdown (GET /docs/{language}/{path}.md, the docs' agent-facing rendering) with title, description, an outline of headings with anchors, and the content. `section` (heading text or anchor, case-insensitive) returns only that heading and its subsections. Accepts a page path or a docs URL; an anchor in the URL selects that section. Unknown pages and sections are `not_found`.
- Instructions: To read primary Claude Code documentation such as hooks, memory (CLAUDE.md), skills, settings, permissions, headless mode and authentication. Call without `section` (with a small `max_chars`) to see the outline, then fetch the section you need.
- Cost: 5 credits per call
- Capability file: [Get page](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/get_page)

Accepted options:
- `language` (string): Docs language as it appears in page paths. Defaults to `en`. Example: `en`
- `max_chars` (number): Cut `content` to this many characters. The whole page or section is returned when omitted. Example: `200`
- `path` (string): Page path such as `hooks`, `agent-sdk/overview` or `en/hooks.md#pretooluse`. A leading language segment and `.md` are accepted. Example: `<path>`
- `section` (string): Heading text or anchor of the section to return, e.g. `PreToolUse decision control` or `pretooluse-decision-control`. Example: `PreToolUse decision control`
- `url` (string): Alternatively a page URL, e.g. https://code.claude.com/docs/en/hooks#pretooluse-decision-control. Legacy docs.claude.com/en/docs/claude-code/... URLs are mapped to code.claude.com. Pattern: ^https?://. Example: `<url>`

Response schema example:
```json
{
  "chars": 3750,
  "content": "#### PreToolUse decision control\n\n`PreToolUse` hooks can control whether a tool call proceeds. Unlike other hooks that use a top-level `decision` field, PreToolUse returns its decision inside a `hookSpecificOutput` object. This gives it richer control: four outcomes (allow, deny, ask, or defer) plus the ability to modify tool input before execution.\n\n| Field | Description |\n| :- | :- |\n| `permissionDecision` | `\"allow\"` skips the permission prompt, except for [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves) and [reads from network paths](/docs/en/permissions#network-paths). `AskUserQuestion` and `ExitPlanMode` need [`updatedInput` paired with `\"allow\"`](#allow-with-updatedinput). For plan mode, see [Hook approvals in plan mode](/docs/en/permissions#hook-approvals-in-plan-mode). `\"deny\"` prevents the tool call. `\"ask\"` prompts the user to confirm. `\"defer\"` exits gracefully so the tool can be resumed later. [Deny and ask rules](/docs/en/permissions#manage-permissions) are still evaluated regardless of what the hook returns |\n| `permissionDecisionReason` | For `\"ask\"`, shown to the user in the permission prompt. When Claude Code [denies the call](/docs/en/headless#turn-off-permission-prompts-in-unattended-runs) in a `-p` run where no one can answer that prompt, Claude reads the reason in the tool result instead. For `\"deny\"`, shown to Claude. For `\"allow\"` and `\"defer\"`, written to the [debug log](#debug-hooks) only |\n| `updatedInput` | M",
  "description": "Reference for Claude Code hook events, configuration schema, JSON input/output formats, exit codes, async hooks, HTTP hooks, prompt hooks, and MCP tool hooks.",
  "language": "en",
  "markdown_url": "https://code.claude.com/docs/en/hooks.md",
  "observed_at_ms": 1792515875889,
  "outline": [
    {
      "anchor": "pretooluse-decision-control",
      "level": 4,
      "text": "PreToolUse decision control"
    }
  ],
  "path": "hooks",
  "section": {
    "anchor": "pretooluse-decision-control",
    "level": 4,
    "text": "PreToolUse decision control",
    "url": "https://code.claude.com/docs/en/hooks#pretooluse-decision-control"
  },
  "title": "Hooks reference",
  "truncated": true,
  "url": "https://code.claude.com/docs/en/hooks"
}
```

### List pages

- Capability: `developer-documentation/list_pages`
- Description: The Claude Code docs page index (llms.txt) as records: title, page path, URL, Markdown URL, description and navigation group. Filter by `q` (title, path or description) and `group`; paginated with `limit`/`offset`.
- Instructions: To discover every Claude Code docs page, or the pages of one area such as Agent SDK, Plugins or Configuration, before reading them with get_page.
- Cost: 5 credits per call
- Capability file: [List pages](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/list_pages)

Accepted options:
- `group` (string): Case-insensitive substring matched against navigation group names, e.g. `Agent SDK`. Example: `Agent SDK`
- `language` (string): Docs language as it appears in page paths. Defaults to `en`. Example: `en`
- `limit` (number): Defaults to 100. Example: `10`
- `offset` (number): Defaults to 0. Example: `10`
- `q` (string): Case-insensitive substring matched against title, path and description. Example: `<q>`

Response schema example:
```json
{
  "count": 20,
  "language": "en",
  "next_offset": null,
  "observed_at_ms": 1792515875893,
  "pages": [
    {
      "description": "Understand when to use CLAUDE.md, Skills, subagents, hooks, MCP, and plugins.",
      "group": "Getting started > Overview > Core concepts",
      "group_path": [
        "Getting started",
        "Overview",
        "Core concepts"
      ],
      "markdown_url": "https://code.claude.com/docs/en/features-overview.md",
      "slug": "features-overview",
      "title": "Extend Claude Code",
      "url": "https://code.claude.com/docs/en/features-overview"
    },
    {
      "description": "Where Claude Code reads CLAUDE.md, settings.json, hooks, skills, commands, subagents, workflows, rules, and auto memory. Explore the .claude directory in your project and ~/.claude in your home directory.",
      "group": "Getting started > Overview > Core concepts",
      "group_path": [
        "Getting started",
        "Overview",
        "Core concepts"
      ],
      "markdown_url": "https://code.claude.com/docs/en/claude-directory.md",
      "slug": "claude-directory",
      "title": "Explore the .claude directory",
      "url": "https://code.claude.com/docs/en/claude-directory"
    },
    {
      "description": "An interactive simulation of how Claude Code's context window fills during a session. See what loads automatically, what each file read costs, and when rules and hooks fire.",
      "group": "Getting started > Overview > Core concepts",
      "group_path": [
        "Getting started",
        "Overview",
        "Core concepts"
      ],
      "markdown_url": "https://code.claude.com/docs/en/context-window.md",
      "slug": "context-window",
      "title": "Explore the context window",
      "url": "https://code.claude.com/docs/en/context-window"
    },
    {
      "description": "Isolate parallel Claude Code sessions in separate git worktrees so changes don't collide. Covers the `--worktree` flag, subagent isolation, `.worktreeinclude`, cleanup, and non-git VCS hooks.",
      "group": "Build with Claude Code > Agents and parallel work > Agents and parallel work",
      "group_path": [
        "Build with Claude Code",
        "Agents and parallel work",
        "Agents and parallel work"
      ],
      "markdown_url": "https://code.claude.com/docs/en/worktrees.md",
      "slug": "worktrees",
      "title": "Run parallel sessions with worktrees",
      "url": "https://code.claude.com/docs/en/worktrees"
    },
    {
      "description": "Run shell commands automatically when Claude Code edits files, finishes tasks, or needs input. Format code, send notifications, validate commands, and enforce project rules.",
      "group": "Build with Claude Code > Agents and parallel work > Automation",
      "group_path": [
        "Build with Claude Code",
        "Agents and parallel work",
        "Automation"
      ],
      "markdown_url": "https://code.claude.com/docs/en/hooks-guide.md",
      "slug": "hooks-guide",
      "title": "Automate actions with hooks",
      "url": "https://code.claude.com/docs/en/hooks-guide"
    },
    {
      "description": "Use channels to push messages, alerts, and webhooks into your Claude Code session from an MCP server. Forward CI results, chat messages, and monitoring events so Claude can react while you're away.",
      "group": "Build with Claude Code > Agents and parallel work > Automation",
      "group_path": [
        "Build with Claude Code",
        "Agents and parallel work",
        "Automation"
      ],
      "markdown_url": "https://code.claude.com/docs/en/channels.md",
      "slug": "channels",
      "title": "Push events into a running session with channels",
      "url": "https://code.claude.com/docs/en/channels"
    },
    {
      "description": "Diagnose why CLAUDE.md, settings, hooks, MCP servers, or skills aren't taking effect. Use /context, /doctor, /hooks, and /mcp to see what actually loaded.",
      "group": "Build with Claude Code > Agents and parallel work > Troubleshooting",
      "group_path": [
        "Build with Claude Code",
        "Agents and parallel work",
        "Troubleshooting"
      ],
      "markdown_url": "https://code.claude.com/docs/en/debug-your-config.md",
      "slug": "debug-your-config",
      "title": "Debug your configuration",
      "url": "https://code.claude.com/docs/en/debug-your-config"
    },
    {
      "description": "Add skills, hooks, MCP servers, and every other component type to a Claude Code plugin, with an example that validates for each.",
      "group": "Plugins > Plugins > Create plugins",
      "group_path": [
        "Plugins",
        "Plugins",
        "Create plugins"
      ],
      "markdown_url": "https://code.claude.com/docs/en/plugins/components.md",
      "slug": "plugins/components",
      "title": "Add components to a plugin",
      "url": "https://code.claude.com/docs/en/plugins/components"
    },
    {
      "description": "Complete reference for Claude Code mods: hooks module layout, events, mods API methods, render sites, elements by surface, limits, and settings.",
      "group": "Plugins > Plugins > Mods",
      "group_path": [
        "Plugins",
        "Plugins",
        "Mods"
      ],
      "markdown_url": "https://code.claude.com/docs/en/plugins/mods/reference.md",
      "slug": "plugins/mods/reference",
      "title": "Mods reference",
      "url": "https://code.claude.com/docs/en/plugins/mods/reference"
    },
    {
      "description": "Handle Claude Code events from a mod: observe, rewrite, or answer tool calls, prompts, and turns, filter which events a hook handles, and plan for other mods.",
      "group": "Plugins > Plugins > Mods > Build",
      "group_path": [
        "Plugins",
        "Plugins",
        "Mods",
        "Build"
      ],
      "markdown_url": "https://code.claude.com/docs/en/plugins/mods/events.md",
      "slug": "plugins/mods/events",
      "title": "React to events with a mod",
      "url": "https://code.claude.com/docs/en/plugins/mods/events"
    },
    {
      "description": "Track token usage, set team spend limits, and reduce Claude Code costs with context management, model selection, extended thinking settings, and preprocessing hooks.",
      "group": "Administration > Setup and access > Usage and costs",
      "group_path": [
        "Administration",
        "Setup and access",
        "Usage and costs"
      ],
      "markdown_url": "https://code.claude.com/docs/en/costs.md",
      "slug": "costs",
      "title": "Manage costs effectively",
      "url": "https://code.claude.com/docs/en/costs"
    },
    {
      "description": "Customize self-hosted environment sessions with wrapper scripts for per-session credentials, lifecycle hooks, and on-demand runner spawning.",
      "group": "Configuration > Settings > Environments > Self-hosted environments",
      "group_path": [
        "Configuration",
        "Settings",
        "Environments",
        "Self-hosted environments"
      ],
      "markdown_url": "https://code.claude.com/docs/en/self-hosted-environments-configuration.md",
      "slug": "self-hosted-environments-configuration",
      "title": "Customize sessions in self-hosted environments",
      "url": "https://code.claude.com/docs/en/self-hosted-environments-configuration"
    },
    {
      "description": "Verify a self-hosted runner image from CI: dispatch a session with the CLI, read Claude's replies through a Stop hook, and script the full loop.",
      "group": "Configuration > Settings > Environments > Self-hosted environments",
      "group_path": [
        "Configuration",
        "Settings",
        "Environments",
        "Self-hosted environments"
      ],
      "markdown_url": "https://code.claude.com/docs/en/self-hosted-environments-testing.md",
      "slug": "self-hosted-environments-testing",
      "title": "Test self-hosted environments end to end",
      "url": "https://code.claude.com/docs/en/self-hosted-environments-testing"
    },
    {
      "description": "Reference for Claude Code hook events, configuration schema, JSON input/output formats, exit codes, async hooks, HTTP hooks, prompt hooks, and MCP tool hooks.",
      "group": "Reference > Reference > Reference",
      "group_path": [
        "Reference",
        "Reference",
        "Reference"
      ],
      "markdown_url": "https://code.claude.com/docs/en/hooks.md",
      "slug": "hooks",
      "title": "Hooks reference",
      "url": "https://code.claude.com/docs/en/hooks"
    },
    {
      "description": "Build an MCP server that pushes webhooks, alerts, and chat messages into a Claude Code session. Reference for the channel contract: capability declaration, notification events, reply tools, sender gating, and permission relay.",
      "group": "Reference > Reference > Reference",
      "group_path": [
        "Reference",
        "Reference",
        "Reference"
      ],
      "markdown_url": "https://code.claude.com/docs/en/channels-reference.md",
      "slug": "channels-reference",
      "title": "Channels reference",
      "url": "https://code.claude.com/docs/en/channels-reference"
    },
    {
      "description": "Definitions for Claude Code terminology. Learn what agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP, and other core concepts mean.",
      "group": "Reference > Reference > Glossary",
      "group_path": [
        "Reference",
        "Reference",
        "Glossary"
      ],
      "markdown_url": "https://code.claude.com/docs/en/glossary.md",
      "slug": "glossary",
      "title": "Glossary",
      "url": "https://code.claude.com/docs/en/glossary"
    },
    {
      "description": "Load project instructions, skills, hooks, and other Claude Code features into your SDK agents.",
      "group": "Agent SDK > Agent SDK > Core concepts",
      "group_path": [
        "Agent SDK",
        "Agent SDK",
        "Core concepts"
      ],
      "markdown_url": "https://code.claude.com/docs/en/agent-sdk/claude-code-features.md",
      "slug": "agent-sdk/claude-code-features",
      "title": "Use Claude Code features in the SDK",
      "url": "https://code.claude.com/docs/en/agent-sdk/claude-code-features"
    },
    {
      "description": "Load custom plugins to extend Claude Code with skills, agents, hooks, and MCP servers through the Agent SDK",
      "group": "Agent SDK > Agent SDK > Customize behavior",
      "group_path": [
        "Agent SDK",
        "Agent SDK",
        "Customize behavior"
      ],
      "markdown_url": "https://code.claude.com/docs/en/agent-sdk/plugins.md",
      "slug": "agent-sdk/plugins",
      "title": "Plugins in the SDK",
      "url": "https://code.claude.com/docs/en/agent-sdk/plugins"
    },
    {
      "description": "Control how your agent uses tools with permission modes, hooks, and declarative allow/deny rules.",
      "group": "Agent SDK > Agent SDK > Control and observability",
      "group_path": [
        "Agent SDK",
        "Agent SDK",
        "Control and observability"
      ],
      "markdown_url": "https://code.claude.com/docs/en/agent-sdk/permissions.md",
      "slug": "agent-sdk/permissions",
      "title": "Configure permissions",
      "url": "https://code.claude.com/docs/en/agent-sdk/permissions"
    },
    {
      "description": "Intercept and customize agent behavior at key execution points with hooks",
      "group": "Agent SDK > Agent SDK > Control and observability",
      "group_path": [
        "Agent SDK",
        "Agent SDK",
        "Control and observability"
      ],
      "markdown_url": "https://code.claude.com/docs/en/agent-sdk/hooks.md",
      "slug": "agent-sdk/hooks",
      "title": "Intercept and control agent behavior with hooks",
      "url": "https://code.claude.com/docs/en/agent-sdk/hooks"
    }
  ],
  "query": {
    "group": null,
    "limit": 50,
    "offset": 0,
    "q": "hook"
  },
  "source_url": "https://code.claude.com/docs/llms.txt",
  "total_count": 20
}
```

### Search docs

- Capability: `developer-documentation/search_docs`
- Description: Search the official Claude Code docs through Anthropic's public Mintlify docs MCP server (`search_claude_code_docs`). Returns ranked hits in the vendor's order with title, URL, page path, section anchor and a Markdown snippet. The search is semantic, so it can return loosely related hits for unusual queries.
- Instructions: To find which Claude Code docs page and section covers a topic (hooks, permissions, settings, headless mode, authentication, the Agent SDK). Pass a hit's `path` and `anchor` to get_page as `path` and `section` for the full section.
- Cost: 5 credits per call
- Capability file: [Search docs](https://firecrawl.dev/alexandria/agents/providers/code-claude-com/developer-documentation/search_docs)

Accepted options:
- `language` (string): Docs language as it appears in page paths. Defaults to `en`. Example: `en`
- `limit` (number): Maximum hits, 1-10 (the server returns at most 10). Defaults to 10. Example: `10`
- `max_snippet_chars` (number): Cut each snippet to this many characters. Defaults to 1500. Example: `100`
- `query` (string, required): Search text, e.g. `PreToolUse permission decision`. Example: `PreToolUse permission decision`

Response schema example:
```json
{
  "count": 3,
  "language": "en",
  "observed_at_ms": 1792515875897,
  "query": "PreToolUse hook permission decision",
  "results": [
    {
      "anchor": "pretooluse-decision-control",
      "language": "en",
      "markdown_url": "https://code.claude.com/docs/en/hooks.md",
      "page": "en/hooks",
      "path": "hooks",
      "rank": 1,
      "snippet": "#### PreToolUse decision control\n\n`PreToolUse` hooks can control whether a tool call proceeds. Unlike other hooks that use a top-level `decision` field, PreToolUse returns its decision inside a `hookSpecificOutput` object. This gives it richer control: four outcomes (allow, deny, ask, or defer) plus",
      "snippet_chars": 5987,
      "snippet_truncated": true,
      "title": "PreToolUse decision control",
      "url": "https://code.claude.com/docs/en/hooks#pretooluse-decision-control"
    },
    {
      "anchor": "tool-blocked-unexpectedly",
      "language": "en",
      "markdown_url": "https://code.claude.com/docs/en/agent-sdk/hooks.md",
      "page": "en/agent-sdk/hooks",
      "path": "agent-sdk/hooks",
      "rank": 2,
      "snippet": "### Tool blocked unexpectedly\n\n* Check all `PreToolUse` hooks for `permissionDecision: 'deny'` returns\n* Add logging to your hooks to see what `permissionDecisionReason` they're returning\n* Verify matcher patterns aren't too broad: an empty matcher matches all tools",
      "snippet_chars": 266,
      "snippet_truncated": false,
      "title": "Tool blocked unexpectedly",
      "url": "https://code.claude.com/docs/en/agent-sdk/hooks#tool-blocked-unexpectedly"
    },
    {
      "anchor": "hooks-and-permission-modes",
      "language": "en",
      "markdown_url": "https://code.claude.com/docs/en/hooks-guide.md",
      "page": "en/hooks-guide",
      "path": "hooks-guide",
      "rank": 3,
      "snippet": "### Hooks and permission modes\n\nWith a hook in a settings file or a plugin's `hooks/hooks.json` you can't loosen restrictions past what permission rules allow, and a hook's `\"deny\"` holds in every permission mode:\n\n* **What still holds over `\"allow\"`**: a hook returning `\"allow\"` doesn't bypass deny",
      "snippet_chars": 2200,
      "snippet_truncated": true,
      "title": "Hooks and permission modes",
      "url": "https://code.claude.com/docs/en/hooks-guide#hooks-and-permission-modes"
    }
  ],
  "source_url": "https://code.claude.com/docs/mcp"
}
```
