jawb read [--format md|text|json] [--element <id>] [--full] [--js]
Read the page, or one element, as Markdown, text or JSON.
Returns the page's (or one element's) content, rendered for reading
rather than as a list of interactive elements — the counterpart to
observe.
$ jawb read --tab t_5a87rr
# Example Domain
This domain is for use in documentation examples without needing permission. Avoid use in operations.
[Learn more](https://iana.org/domains/example)
-- 168 bytes of md from 559 bytes of HTML (body, rev 1, native, 0ms)
--format
md(default) — Markdown: headings, links and lists.text— plain text, no Markdown syntax.json— a structured{headings, links, text}object (hidden links are left out oflinks, like hidden text):
$ jawb read --tab t_5a87rr --format json
{
"headings": [ { "id": 1, "level": 1, "text": "Example Domain" } ],
"links": [ { "href": "https://iana.org/domains/example", "id": 3, "text": "Learn more" } ],
"text": "Example Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\nLearn more\n"
}
--json (the global flag) wraps any of these formats in the standard
envelope; --format text --json for example:
$ jawb --json read --tab t_5a87rr --format text
{"command":"read","executor":"native","ok":true,"result":{"bytes":130,"content":"Example Domain\n\n...","format":"text","scope":"body","source_bytes":559,"title":"Example Domain","url":"https://example.com/","visibility":{"basis":"inline_only","omitted":{"hidden":{},"unknown":{"aria_hidden":0}}}},"revision":1,"tab":"t_5a87rr","v":1,"warnings":[]}
Hidden content
read leaves out text a person would not see, with the same rules as
observe: the hidden attribute and inline
display:none, visibility:hidden, opacity:0 or a zero font size on the
text or anything around it, plus aria-hidden="true" content. A page that
hides an instruction in <div style="display:none"> does not get it into
read. result.visibility in --json output says how many regions were
left out and why, and its basis (inline_only without --js) says how
far to trust that: text hidden by a stylesheet class still comes through.
--element <id>
Scopes the read to one element (by observation ID) instead of the whole page:
$ jawb read --tab t_5a87rr --element 3
Learn more
-- 20 bytes of md from ... (element, rev 1, native, 0ms)
If the element was retargeted since you last observed, read follows
the retarget and the human view appends (retargeted 3 → 4).
--full
Reads the whole document instead of the main-content heuristic scope
(main/body) read uses by default.
--js
Like observe --js, promotes the tab to the compatibility
bridge so read sees JavaScript-rendered content:
$ jawb read --format md
# Search
Searching for multiple words only shows matches that contain all words.
## Search Results
Search finished, found 11 pages matching the search query.
- [asyncio.TaskGroup](https://docs.python.org/3/library/asyncio-task.html#asyncio.TaskGroup) (Python class, in Coroutines and tasks)
...
-- 1646 bytes of md from 25370 bytes of HTML (main, rev 5, bridge, 0ms)
That transcript is from filling a search box, pressing Enter, waiting for
results, then reading — see Act for fill/press, and
wait via jawb wait --for text:... --timeout 30s.
tools
Lists page-declared WebMCP tools and adapter tools:
$ jawb tools --tab t_5a87rr
no page-declared tools (WebMCP); no adapter tools yet