Browsing Pages
Point WebUplink at any URL and get the page back as named, callable tools your agent invokes.
Browsing Pages
The core operation in WebUplink is simple: point it at any URL, and the page comes back as named, callable tools your agent invokes — plus a summary and, on request, the page's content. Every interaction starts here.
Opening a New Page
Pass a URL to create a new browser session:
const page = await client.browse('https://news.ycombinator.com');
console.log(page.session_id); // "sess_abc123" — use for follow-up requests
console.log(page.url); // Current URL (may differ due to redirects)
console.log(page.title); // "Hacker News"
console.log(page.summary); // "30 stories. #1: 'Flipper One'..."
console.log(page.tools); // Available actions on this pageReading the Summary
The summary field is a 1-3 sentence overview generated by AI. It's always present and designed for quick agent decisions:
"Hacker News front page. 30 stories.
#1: 'Flipper One – we need your help' (342 pts, 127 comments).
#2: 'Show HN: Open-source alternative to Linear' (89 pts, 23 comments)."Using include_page_content
When your agent needs to read a page in full — or when there's no clean tool to call, so you want the page back anyway — request detailed page content:
const page = await client.browse({
url: 'https://news.ycombinator.com',
include_page_content: true,
});
console.log(page.page_content);
// "Hacker News front page showing 30 ranked stories:
// 1. Flipper One – we need your help (flipperdevices.com) — 342 pts
// 2. Show HN: Open-source alt to Linear (github.com) — 89 pts
// ..."When to Use page_content
| Scenario | Use summary | Use page_content |
|---|---|---|
| Quick decision making | ✅ | |
| "What is this page about?" | ✅ | |
| Reading all items on a page | ✅ | |
| Reading documentation | ✅ | |
| Comparing prices/options | ✅ |
page_content is generated by a separate LLM call, so it adds latency. Request it when your agent needs to read specific items or detailed content — and as a graceful fallback: when a page exposes no clean tool to call, you still get the page back.
Usage Tracking
Every browse response includes usage metadata in the _usage field:
const page = await client.browse('https://example.com');
if (page._usage) {
console.log(page._usage.actionCount); // 42 — actions used this period
console.log(page._usage.actionLimit); // 1000 — plan limit
console.log(page._usage.periodStart); // "2026-06-01T00:00:00Z"
}