[{"data":1,"prerenderedAt":22},["ShallowReactive",2],{"$f219mhlzcbfi59":3},{"href":4,"title":5,"description":6,"kind":7,"mark":7,"planned":8,"contributors":9,"provenance":7,"html":10,"headings":11},"\u002Fdocs\u002Ftools\u002Fbuilt-in\u002Fweb","Web tools","The web.* tools: read a public page as text, list a sitemap, and GET a public URL, with a hash of what came back.",null,false,[],"\u003Cp>\u003Cem>Generated from the built-in tools registry. Do not edit by hand.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Ccode>web.*\u003C\u002Fcode> tools make a plain HTTP request to a public address and return what came back. Nothing is bound and nothing is set up: a task declares the tools it calls, like any other tool. They are the same for every enterprise and know no site.\u003C\u002Fp>\n\u003Cp>They are not a browser. No JavaScript runs, and no cookies or credentials are sent. A product a member signs in to and clicks through is a \u003Ca href=\"\u002Fdocs\u002Ftools\u002Fbuilt-in\u002Fcomputer-use\">Computer-Use binding\u003C\u002Fa>, and a system with an MCP server is a vendor tool the enterprise binds.\u003C\u002Fp>\n\u003Cp>A request reaches public addresses only. Private, local and internal addresses are refused, including a public name that resolves to one, and every redirect is checked again before it is followed.\u003C\u002Fp>\n\u003Cp>Each result carries a \u003Ccode>sha256\u003C\u002Fcode> the tool computed. \u003Ccode>web.read\u003C\u002Fcode> hashes the page’s visible text, so the hash changes when the words do and not when a deploy renames a script. Content too long for one result is refused or marked incomplete, never cut: a partial result is not the page.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tool\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"\u002Fdocs\u002Ftools\u002Fbuilt-in\u002Fweb#web-read\">\u003Ccode>web.read\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>Read one public web page as visible text, with a hash that changes only when the text does.\u003C\u002Ftd>\n\u003Ctd>read\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"\u002Fdocs\u002Ftools\u002Fbuilt-in\u002Fweb#web-sitemap\">\u003Ccode>web.sitemap\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>Read an XML sitemap and return its URLs as a list.\u003C\u002Ftd>\n\u003Ctd>read\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"\u002Fdocs\u002Ftools\u002Fbuilt-in\u002Fweb#web-request\">\u003Ccode>web.request\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>Send one GET to a public URL and return the text or JSON body, with its status and hash.\u003C\u002Ftd>\n\u003Ctd>read\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"web-read\">\u003Ccode>web.read\u003C\u002Fcode>\u003C\u002Fh2>\n\u003Cp>Read one public web page as visible text, with a hash that changes only when the text does.\u003C\u002Fp>\n\u003Cp>What the model reads:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">Read one public web page as text. Pass url (http or https). Returns the page's visible text, with scripts, styles and markup removed and whitespace collapsed to single spaces, its title, and sha256: the hash of exactly that text. The same page gives the same sha256 until its words change, so use it to tell whether a page changed, and as a memory.train source revision. Only HTML is read here: use web.sitemap for a sitemap and web.request for JSON or plain text. A page whose text is too long for one result is refused as web_page_too_large, with its chars and sha256 and no text: that is not the page, so do not summarise it or train from it. A status outside 2xx is refused as web_status_not_ok. Follows up to 5 redirects. Private, local and internal addresses are refused. No JavaScript runs, and no cookies or credentials are sent.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C\u002Fth>\n\u003Cth>Type\u003C\u002Fth>\n\u003Cth>Required\u003C\u002Fth>\n\u003Cth>Description\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>url\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string\u003C\u002Ftd>\n\u003Ctd>yes\u003C\u002Ftd>\n\u003Ctd>The page to read: an http or https URL on a public host.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>No other fields are accepted.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Effect:\u003C\u002Fstrong> read.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Retry:\u003C\u002Fstrong> Safe: repeating the call changes nothing. A repeat sends the request again; a GET changes nothing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Called by:\u003C\u002Fstrong> a run.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Returns:\u003C\u002Fstrong> \u003Ccode>{ kind: &quot;page&quot;, url, finalUrl, status, contentType, title, text, chars, sha256 }\u003C\u002Fcode>. \u003Ccode>finalUrl\u003C\u002Fcode> is where the redirects ended. \u003Ccode>title\u003C\u002Fcode> is null when the page has none, and is not part of \u003Ccode>text\u003C\u002Fcode>. \u003Ccode>chars\u003C\u002Fcode> is the length of \u003Ccode>text\u003C\u002Fcode>, and \u003Ccode>sha256\u003C\u002Fcode> is 64 hex characters over exactly \u003Ccode>text\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Error\u003C\u002Fth>\n\u003Cth>When\u003C\u002Fth>\n\u003Cth>What happens\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_url_invalid\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>url\u003C\u002Fcode> is missing, not a URL, longer than 2,048 characters, not http or https, carries a username or password, or names a port.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_address_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The host is, or resolves to, a private, loopback, link-local, shared, unique-local, reserved or metadata address, or is a local or internal name.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_redirect_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>There are more than 5 redirects, a redirect loops or names no location, or one leads to a URL or address this tool refuses. The refused address is never requested.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_fetch_failed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The name did not resolve, the connection failed, or the response used an encoding the tool does not read.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_timeout\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>No complete response arrived within 20 seconds.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_response_too_large\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The response passed 2 MB once decompressed. Nothing past that was read.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_status_not_ok\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The response status is outside 2xx, so the body is an error page and not the content.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_not_html\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The response is not an HTML page. The error names its content type.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_page_too_large\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The page’s text does not fit in one result. The error carries \u003Ccode>chars\u003C\u002Fcode> and \u003Ccode>sha256\u003C\u002Fcode>, and no text.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  &quot;url&quot;: &quot;https:\u002F\u002Fexample.com\u002Fpricing&quot;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"web-sitemap\">\u003Ccode>web.sitemap\u003C\u002Fcode>\u003C\u002Fh2>\n\u003Cp>Read an XML sitemap and return its URLs as a list.\u003C\u002Fp>\n\u003Cp>What the model reads:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">Read an XML sitemap and return its entries. Pass url. A urlset returns kind sitemap with total and urls: each loc, and its lastmod when the sitemap gives one. A sitemap index returns kind sitemap_index with sitemaps: call web.sitemap again on each loc, because this tool does not follow them. complete is true when every entry is in the list. When the list is too long for one result, complete is false, total says how many entries there are, and no entries are returned: that is not an empty sitemap. Anything that is not a sitemap is refused as web_not_sitemap, and a status outside 2xx as web_status_not_ok. Private, local and internal addresses are refused.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C\u002Fth>\n\u003Cth>Type\u003C\u002Fth>\n\u003Cth>Required\u003C\u002Fth>\n\u003Cth>Description\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>url\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string\u003C\u002Ftd>\n\u003Ctd>yes\u003C\u002Ftd>\n\u003Ctd>The sitemap’s http or https URL.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>No other fields are accepted.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Effect:\u003C\u002Fstrong> read.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Retry:\u003C\u002Fstrong> Safe: repeating the call changes nothing. A repeat sends the request again; a GET changes nothing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Called by:\u003C\u002Fstrong> a run.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Returns:\u003C\u002Fstrong> \u003Ccode>{ kind: &quot;sitemap&quot;, url, finalUrl, complete, total, urls: [{ loc, lastmod? }] }\u003C\u002Fcode>, or \u003Ccode>{ kind: &quot;sitemap_index&quot;, url, finalUrl, complete, total, sitemaps: [{ loc, lastmod? }] }\u003C\u002Fcode>. Entries are in document order, exactly as the sitemap gives them. \u003Ccode>lastmod\u003C\u002Fcode> is left out when the sitemap gives none. When \u003Ccode>complete\u003C\u002Fcode> is false there is no list.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Error\u003C\u002Fth>\n\u003Cth>When\u003C\u002Fth>\n\u003Cth>What happens\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_url_invalid\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>url\u003C\u002Fcode> is missing, not a URL, longer than 2,048 characters, not http or https, carries a username or password, or names a port.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_address_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The host is, or resolves to, a private, loopback, link-local, shared, unique-local, reserved or metadata address, or is a local or internal name.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_redirect_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>There are more than 5 redirects, a redirect loops or names no location, or one leads to a URL or address this tool refuses. The refused address is never requested.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_fetch_failed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The name did not resolve, the connection failed, or the response used an encoding the tool does not read.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_timeout\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>No complete response arrived within 20 seconds.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_response_too_large\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The response passed 2 MB once decompressed. Nothing past that was read.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_status_not_ok\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The response status is outside 2xx, so the body is an error page and not the content.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_not_sitemap\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The document is neither a urlset nor a sitemap index.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  &quot;url&quot;: &quot;https:\u002F\u002Fexample.com\u002Fsitemap.xml&quot;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"web-request\">\u003Ccode>web.request\u003C\u002Fcode>\u003C\u002Fh2>\n\u003Cp>Send one GET to a public URL and return the text or JSON body, with its status and hash.\u003C\u002Fp>\n\u003Cp>What the model reads:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">Send one HTTP request to a public URL and return the response body as text. method is GET, the default and the only method today. Pass url, and headers only to set accept or accept-language. Never pass credentials: authorization, cookie and every other header are refused. Returns status, contentType, body, bytes and sha256 of the body bytes. A status outside 2xx is returned as a result, not an error: check status before you use body. Only text and JSON responses are returned: anything else is refused as web_not_text, and a body too long for one result as web_body_too_large, with its bytes and sha256 and no body. Follows up to 5 redirects. Private, local and internal addresses are refused. To read a page as text use web.read; for a sitemap use web.sitemap.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C\u002Fth>\n\u003Cth>Type\u003C\u002Fth>\n\u003Cth>Required\u003C\u002Fth>\n\u003Cth>Description\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>url\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string\u003C\u002Ftd>\n\u003Ctd>yes\u003C\u002Ftd>\n\u003Ctd>An http or https URL on a public host.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>method\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string, one of \u003Ccode>GET\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>no\u003C\u002Ftd>\n\u003Ctd>Defaults to GET, the only method today.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>headers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>object\u003C\u002Ftd>\n\u003Ctd>no\u003C\u002Ftd>\n\u003Ctd>Only these two. Credentials are never passed here.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>headers.accept\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string\u003C\u002Ftd>\n\u003Ctd>no\u003C\u002Ftd>\n\u003Ctd>The content type to ask for, such as application\u002Fjson.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>headers.accept-language\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string\u003C\u002Ftd>\n\u003Ctd>no\u003C\u002Ftd>\n\u003Ctd>The language to ask for, such as en-GB.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>No other fields are accepted.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Effect:\u003C\u002Fstrong> read.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Retry:\u003C\u002Fstrong> Safe: repeating the call changes nothing. A repeat sends the request again; a GET changes nothing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Called by:\u003C\u002Fstrong> a run.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Returns:\u003C\u002Fstrong> \u003Ccode>{ url, finalUrl, status, contentType, body, bytes, sha256 }\u003C\u002Fcode>. \u003Ccode>body\u003C\u002Fcode> is the response as text. \u003Ccode>bytes\u003C\u002Fcode> is its size and \u003Ccode>sha256\u003C\u002Fcode> is 64 hex characters over the body bytes, both after decompression.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Error\u003C\u002Fth>\n\u003Cth>When\u003C\u002Fth>\n\u003Cth>What happens\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_url_invalid\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>url\u003C\u002Fcode> is missing, not a URL, longer than 2,048 characters, not http or https, carries a username or password, or names a port.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_address_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The host is, or resolves to, a private, loopback, link-local, shared, unique-local, reserved or metadata address, or is a local or internal name.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_redirect_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>There are more than 5 redirects, a redirect loops or names no location, or one leads to a URL or address this tool refuses. The refused address is never requested.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_fetch_failed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The name did not resolve, the connection failed, or the response used an encoding the tool does not read.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_timeout\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>No complete response arrived within 20 seconds.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_response_too_large\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The response passed 2 MB once decompressed. Nothing past that was read.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_method_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>method\u003C\u002Fcode> is anything other than GET.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_header_refused\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>headers\u003C\u002Fcode> sets anything other than \u003Ccode>accept\u003C\u002Fcode> or \u003Ccode>accept-language\u003C\u002Fcode>, or a value that is not a single line of at most 1,000 characters.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_not_text\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The response is not text or JSON, or names no content type. The error names the type.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_body_too_large\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The body does not fit in one result. The error carries \u003Ccode>bytes\u003C\u002Fcode> and \u003Ccode>sha256\u003C\u002Fcode>, and no body.\u003C\u002Ftd>\n\u003Ctd>Tool error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  &quot;url&quot;: &quot;https:\u002F\u002Fexample.com\u002Fapi\u002Fstatus.json&quot;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Example, asking for JSON:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  &quot;url&quot;: &quot;https:\u002F\u002Fexample.com\u002Ffeed&quot;,\n  &quot;method&quot;: &quot;GET&quot;,\n  &quot;headers&quot;: {\n    &quot;accept&quot;: &quot;application\u002Fjson&quot;\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n",[12,16,19],{"id":13,"text":14,"level":15,"planned":8},"web-read","web.read",2,{"id":17,"text":18,"level":15,"planned":8},"web-sitemap","web.sitemap",{"id":20,"text":21,"level":15,"planned":8},"web-request","web.request",1791124519756]