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.boolean
default:"true"
Include the page’s outbound links as a structured
links array.boolean
default:"true"
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 fastestprefer_live— try live, fall back to cachelive_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 infailed 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://, anddata: localhostand loopback addresses- Private IP ranges and link-local addresses
- Cloud metadata endpoints
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, expectstatus: "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
- titan_search — find URLs to fetch
- titan_crawl — when you need a whole site instead
- Research agent example