Browse topics
Browser API
Open URLs in the system default browser.
Browser API
The Browser API opens URLs in the user’s default system browser.
Capability required: browser:open
Frontend (iframe)
import { createResourceClient } from "@rightplace/sdk";
const rp = createResourceClient();
await rp.ready();
// Open a URL in the system browser
await rp.browser.open("https://example.com");
// Open documentation
await rp.browser.open("https://docs.example.com/api");
Backend (Node.js)
import { createResourceServer } from "@rightplace/sdk/server";
const server = createResourceServer({
methods: {
openDashboard: async (params, { rp }) => {
await rp.browser.open(`https://dashboard.example.com/${params.id}`);
return { ok: true };
},
},
});
server.start();
MCP
The iframe SDK’s rp.browser.open(url) opens a URL in the system browser - that’s not exposed via MCP (agents already have their own ways to open URLs).
The agent-facing browser tools instead control a RightPlace Browser applet - navigation, clicks, screenshots, scripts. Each one is a CallRegistry hook and is prefixed rightplace_browser_:
| Goal | MCP tool |
|---|---|
| Navigate | rightplace_browser_navigate |
| Click an element | rightplace_browser_click |
| Fill an input | rightplace_browser_fill |
| Screenshot | rightplace_browser_screenshot |
| Accessibility tree | rightplace_browser_axTree |
| Run JS | rightplace_browser_eval |
| Wait for element | rightplace_browser_waitForElement |
All of them require resourceId - the browser applet to act on - and honor the browser:* permission scopes.
RobinPath Bridge
Same tools are reachable on the rightplace module. You can also call them via the generic rightplace.hook helper:
# Navigate + wait + screenshot
rightplace.browser_navigate {resourceId: "res_browser_1", url: "https://example.com"}
rightplace.browser_waitForLoad {resourceId: "res_browser_1"}
rightplace.browser_screenshot {resourceId: "res_browser_1"} into $shot
rightplace.clipboard_copy $shot.dataUrl
# Click + fill
rightplace.browser_click {resourceId: "res_browser_1", selector: "input[name=q]"}
rightplace.browser_fill {resourceId: "res_browser_1", selector: "input[name=q]", value: "rightplace"}
rightplace.browser_pressKey {resourceId: "res_browser_1", key: "Enter"}
# Run JS and read the return value
rightplace.hook "res_browser_1" "browser.eval" {script: "document.title"} into $title
log "title:" $title
To just open a URL in the system browser from RobinPath, use os.openUrl or similar - the iframe-level rp.browser.open is not mirrored in the bridge.
API Reference
rp.browser.open(url)
| Parameter | Type | Description |
|---|---|---|
url | string | The URL to open |
| Returns | Promise<void> |
Manifest Configuration
{
"capabilities": [
"browser:open"
]
}
Notes
- URLs are opened in the user’s default system browser (Safari, Chrome, Firefox, etc.), not in RightPlace’s built-in browser.
- Only
http://andhttps://URLs are supported. - Use this for external links, OAuth flows, documentation references, or any URL the user should interact with outside of your applet.