---
title: "List the page's stylesheets and scripts"
method: GET
path: "/v1/browser/sources"
tags: ["Browser"]
---

# List the page's stylesheets and scripts

`GET /v1/browser/sources`

## Request

- Base URL: `http://localhost:9998`
- URL: `http://localhost:9998/v1/browser/sources`
- Auth: HTTP bearer

The browser_source_list tool's mirror. Answers the stylesheets, then the scripts, the page loaded, in load order, with the ids /v1/browser/source reads. Read-only.

## Query parameters

- `kind` 'stylesheet' | 'script'

## Response `200`

The sources

- object
  - `sources` object[], required
  - `truncated` boolean, required

## Other responses

- `400`: The sources could not be read
- `409`: The route needs a live page session. Two types share this status and both clear the same way, by connecting: `not_connected` when nothing is attached at all, and `page_not_attached` when the browser is alive but its page session is not — Chrome closed the tab or detached the inspector, which parks the connection at browser level rather than tearing it down. Both carry `remedy` (`browser_connect action:connect`) and `remedyPath` (`POST /v1/browser/connect`). Branch on `error.type`, never on the 409 alone; the other 409s on browser routes (`conflict`, `dialog_pending`, `browser_consent_required`, `target_leased`, `instance_unknown`, `resource_admission_full`) must not be retried, and one of them mints a second OS consent prompt per attempt.

---

[API](https://skmtc.dev/modelpiper/apis/toolpiper-api.md) · [All operations](https://skmtc.dev/modelpiper/apis/toolpiper-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelpiper/apis/toolpiper-api/revisions/6722bf56385c?raw)
