fetch_external is Reacher’s general-purpose HTTP proxy. It forwards requests to external APIs, automatically injecting the right authentication token based on the target domain. Tokens stay on the server — Claude never sees them.
This is the core insight behind Reacher’s design: Claude already knows REST APIs. It doesn’t need a dedicated tool for GitHub, Linear, or Notion. It needs a way to call those APIs with your credentials. fetch_external is that mechanism.
Prerequisites
- The target domain must be listed in
PROXY_ALLOWED_DOMAINS(comma-separated) - For authenticated APIs, add the domain-to-token mapping in
FETCH_EXTERNAL_TOKEN_MAP
api.github.com, the tool looks up "api.github.com" in FETCH_EXTERNAL_TOKEN_MAP, finds "GITHUB_TOKEN", reads that env var, and injects Authorization: Bearer ghp_xxx automatically.
Parameters
string
required
The full URL to fetch. Must be a valid URL including scheme (e.g.
https://api.github.com/user).string
HTTP method. Accepted values:
GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS. Defaults to GET.object
Request body for
POST, PUT, and PATCH requests. Serialized as JSON. Content-Type: application/json is added automatically if not already present.object
Additional headers to include in the request. Merged with any injected auth headers. If you specify
Authorization here it will be overridden by the injected token for the domain.Return value
boolean
true if the HTTP response status was in the 2xx range (response.ok).number
HTTP status code returned by the upstream server.
string
HTTP status text (e.g.
"OK", "Not Found").object
Response headers as a key-value object.
object | string
Parsed response body. JSON responses are returned as a parsed object. All other content types are returned as a string.
string
The URL that was fetched.
Security
When a request targets a domain not inPROXY_ALLOWED_DOMAINS, the tool returns immediately without making any network request: