Skip to main content
Use titan_fetch when your agent already has URLs and needs their content. Pages render in real browsers before extraction, so JavaScript-driven sites return content rather than an empty shell. Required scope: mcp:fetch

Parameters

string[]
required
URLs to fetch, up to 100 per call. Each is validated before the run starts.
string
default:"markdown"
markdown or text. Markdown preserves headings, lists, and links; text is flat prose.
boolean
default:"true"
Strip navigation, headers, footers, and sidebars, keeping the article body. Set false when you need the full page.
Include the page’s outbound links as a structured links array.
Include image URLs and alt text as a structured image_links array.
integer
default:"12000"
Character cap per page. Content is truncated on a character boundary, so multibyte text is never cut mid-character.
string
default:"cache_ok"
How current the content must be.
  • cache_ok — a recent cached copy is acceptable, and fastest
  • prefer_live — try live, fall back to cache
  • live_only — always fetch live
boolean
default:"true"
Wait for results inside the call. Set false for large URL batches.
integer
default:"30"
Seconds to wait, capped at 30.
string
Deduplicate repeated calls for 24 hours. See Idempotency and retries.

Example

Response

Successful pages and failures come back separately, so an agent never has to infer which URLs worked.

Page fields

Failure entries

Each entry in failed carries the requested url, a code, and a message. Common codes:

URL safety

URLs are validated before any work begins. The server rejects:
  • Non-HTTP schemes such as file://, ftp://, and data:
  • localhost and loopback addresses
  • Private IP ranges and link-local addresses
  • Cloud metadata endpoints
Rejected URLs land in failed with code unsafe_url and cost nothing. If every URL is rejected, the call returns an unsafe_url error and starts no run. Redirects are re-checked at each hop, so a public URL cannot redirect into a private address. See Limits and safety.

Credits

One credit per successfully extracted page. URLs that fail are not billed. In the example above, two URLs were requested, one succeeded, and one credit was consumed. credits_estimated reflects what you requested; credits_consumed reflects what was delivered.

Partial results

With many URLs, expect status: "partial"—some pages extracted, others failed. This is normal and usually still useful. Read pages for what worked and failed for what did not, then decide whether to retry the failures.

Tuning content size

max_chars_per_url is the main lever on how much context a fetch consumes: Combine a small max_chars_per_url with only_main_content: true when you are triaging many pages and will re-fetch the good ones in full.

Next steps