Skip to content

MCP tools

View as Markdown

analog-mcp exposes these tools to MCP-compatible agents. To connect a client, follow MCP setup.

Start with analog to view a page, or assess for help choosing a representation. Read the returned receipt, then use the saved handle to preview, search, or open the content you need. Saved-result tools read local data without fetching the page again.

The handle argument accepts an exact handle, a friendly name, or latest. Use an exact handle when returning to the same save across several calls; latest changes when another result is saved.

Each example names the tool and shows its JSON arguments. These are arguments to supply through an MCP client; they are not Python calls or a complete protocol request.

The examples use one saved quotes page. Replace 20260912-pvtqdw with the handle returned by your own call. Live page content may change. Each combined example shows the complete text response; clients may display structured responses differently.

Find a tool

View a page as records, prose, and navigation. Fetching happens on your machine and structured extraction requires a connected account. The tool returns a receipt with section shapes, sample records, completeness disclosures, and a handle for the saved result.

The receipt’s JSON text is capped at 16,384 characters. Read its records_complete, markdown_complete, and omissions fields before treating it as the whole page. Saved-result tools below read more from the handle. If saving fails, recovery remains visible and the receipt does not claim that the handle is available.

pagination.collection_confirmed: false means a next-document link was found, but it is not known to continue the same collection.

guidance: true may add one available call in next_actions. It is off by default. Advice is added only if it fits after the selected evidence, and never changes samples, omissions, capture settings or errors.

Pass pages to follow the page’s own next-page links. Each page costs one extraction, and the receipt reports the sweep. expand_all opens collapsed details; load_all follows load-more controls. See Fetching for choosing these options.

Text
analog(url: string, pages: integer = 1, expand_all: boolean = false, load_all: boolean = false, guidance: boolean = false)

Accepted values:

  • pages — 1–50.

Tool: analog

The receipt reports ten quotes and four navigation records across three sections. Its samples provide a starting point; section 0 contains the quotes. Follow the returned handle to read their full values.

View the quotes page

{
"url": "https://quotes.toscrape.com/js/"
}
Output
{
"schema_version": "29",
"request_id": "9a67f5ce-90b9-43ab-a1c6-6d2347989551",
"handle": "20260912-pvtqdw",
"resolved_url": "https://quotes.toscrape.com/js/",
"mode": "auto",
"counts": {
"sections": 3,
"records": 14,
"collections": 0,
"markdown_characters": 1684,
"withheld_areas": 0
},
"records_complete": true,
"markdown_complete": false,
"sections": [
{
"index": 0,
"record_count": 10,
"items_detected": 10,
"field_count": 3,
"fields": [
{
"name": "tags",
"type": "text",
"source": "rendered text",
"multivalued": true,
"hidden": false,
"numeric": false
},
{
"name": "text",
"type": "text",
"source": "rendered text",
"multivalued": false,
"hidden": false,
"numeric": false
},
{
"name": "text_2",
"type": "text",
"source": "rendered text",
"multivalued": false,
"hidden": false,
"numeric": false
}
],
"fields_omitted": 0,
"samples": [
{
"record_index": 0,
"fields": [
{
"name": "tags",
"value": [
"change",
"deep-thoughts",
"thinking",
"world"
]
},
{
"name": "text",
"value": "“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”"
},
{
"name": "text_2",
"value": "by Albert Einstein"
}
]
},
{
"record_index": 9,
"fields": [
{
"name": "tags",
"value": [
"humor",
"obvious",
"simile"
]
},
{
"name": "text",
"value": "“A day without sunshine is like, you know, night.”"
},
{
"name": "text_2",
"value": "by Steve Martin"
}
]
},
{
"record_index": 1,
"fields": [
{
"name": "tags",
"value": [
"abilities",
"choices"
]
},
{
"name": "text",
"value": "“It is our choices, Harry, that show what we truly are, far more than our abilities.”"
},
{
"name": "text_2",
"value": "by J.K. Rowling"
}
]
},
{
"record_index": 2,
"fields": [
{
"name": "tags",
"value": [
"inspirational",
"life",
"live",
"miracle",
"miracles"
]
},
{
"name": "text",
"value": "“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”"
},
{
"name": "text_2",
"value": "by Albert Einstein"
}
]
},
{
"record_index": 3,
"fields": [
{
"name": "tags",
"value": [
"aliteracy",
"books",
"classic",
"humor"
]
},
{
"name": "text",
"value": "“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”"
},
{
"name": "text_2",
"value": "by Jane Austen"
}
]
},
{
"record_index": 4,
"fields": [
{
"name": "tags",
"value": [
"be-yourself",
"inspirational"
]
},
{
"name": "text",
"value": "“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”"
},
{
"name": "text_2",
"value": "by Marilyn Monroe"
}
]
},
{
"record_index": 5,
"fields": [
{
"name": "tags",
"value": [
"adulthood",
"success",
"value"
]
},
{
"name": "text",
"value": "“Try not to become a man of success. Rather become a man of value.”"
},
{
"name": "text_2",
"value": "by Albert Einstein"
}
]
},
{
"record_index": 6,
"fields": [
{
"name": "tags",
"value": [
"life",
"love"
]
},
{
"name": "text",
"value": "“It is better to be hated for what you are than to be loved for what you are not.”"
},
{
"name": "text_2",
"value": "by André Gide"
}
]
},
{
"record_index": 7,
"fields": [
{
"name": "tags",
"value": [
"edison",
"failure",
"inspirational",
"paraphrased"
]
},
{
"name": "text",
"value": "“I have not failed. I've just found 10,000 ways that won't work.”"
},
{
"name": "text_2",
"value": "by Thomas A. Edison"
}
]
},
{
"record_index": 8,
"fields": [
{
"name": "tags",
"value": [
"misattributed-eleanor-roosevelt"
]
},
{
"name": "text",
"value": "“A woman is like a tea bag; you never know how strong it is until it's in hot water.”"
},
{
"name": "text_2",
"value": "by Eleanor Roosevelt"
}
]
}
],
"records_omitted": 0,
"disclosures": {}
},
{
"index": 1,
"kind": "navigation",
"placement": "header",
"record_count": 2,
"items_detected": 2,
"field_count": 4,
"fields": [
{
"name": "text",
"type": "text",
"source": "rendered text",
"multivalued": false,
"hidden": false,
"numeric": false
},
{
"name": "url",
"type": "url",
"source": "attribute:href",
"multivalued": false,
"hidden": false,
"numeric": false
},
{
"name": "group",
"type": "text",
"source": "rendered text",
"multivalued": false,
"hidden": false,
"numeric": false
},
{
"name": "depth",
"type": "text",
"source": "structure",
"multivalued": false,
"hidden": false,
"numeric": true
}
],
"fields_omitted": 0,
"samples": [
{
"record_index": 0,
"fields": [
{
"name": "text",
"value": "Quotes to Scrape"
},
{
"name": "url",
"value": "https://quotes.toscrape.com/"
},
{
"name": "group",
"value": ""
},
{
"name": "depth",
"value": "0"
}
]
},
{
"record_index": 1,
"fields": [
{
"name": "text",
"value": "Login"
},
{
"name": "url",
"value": "https://quotes.toscrape.com/login"
},
{
"name": "group",
"value": ""
},
{
"name": "depth",
"value": "0"
}
]
}
],
"records_omitted": 0,
"disclosures": {}
},
{
"index": 2,
"kind": "navigation",
"placement": "footer",
"record_count": 2,
"items_detected": 2,
"field_count": 4,
"fields": [
{
"name": "text",
"type": "text",
"source": "rendered text",
"multivalued": false,
"hidden": false,
"numeric": false
},
{
"name": "url",
"type": "url",
"source": "attribute:href",
"multivalued": false,
"hidden": false,
"numeric": false
},
{
"name": "group",
"type": "text",
"source": "rendered text",
"multivalued": false,
"hidden": false,
"numeric": false
},
{
"name": "depth",
"type": "text",
"source": "structure",
"multivalued": false,
"hidden": false,
"numeric": true
}
],
"fields_omitted": 0,
"samples": [
{
"record_index": 0,
"fields": [
{
"name": "text",
"value": "GoodReads.com"
},
{
"name": "url",
"value": "https://www.goodreads.com/quotes"
},
{
"name": "group",
"value": ""
},
{
"name": "depth",
"value": "0"
}
]
},
{
"record_index": 1,
"fields": [
{
"name": "text",
"value": "Zyte"
},
{
"name": "url",
"value": "https://www.zyte.com"
},
{
"name": "group",
"value": ""
},
{
"name": "depth",
"value": "0"
}
]
}
],
"records_omitted": 0,
"disclosures": {}
}
],
"outline": {
"regions": 3,
"extracted": 3
},
"pagination": {
"current_page": 1,
"max_page_seen": 2,
"next_url": "https://quotes.toscrape.com/js/page/2/",
"in_page_controls": false,
"collection_confirmed": true
},
"omissions": {
"section_summaries": 0,
"field_summaries": 0,
"records": 0,
"sample_fields": 0,
"list_items": 0,
"value_characters": 0,
"warning_entries": 0,
"browse_actions": 0,
"markdown_characters": 1684
}
}

Get a recommendation for how to view a page, together with measured Markdown size, task guidance, pagination, navigation, and available feed or sitemap information. This runs locally without sign-in or structured extraction and does not create a saved result.

Set probe_feed to false to skip the extra feed and sitemap checks. The page is still fetched, and information declared in its HTML remains available. Assess a page explains how to act on the result.

Text
assess(url: string, probe_feed: boolean = true)

Tool: assess

The recommendation is markdown for a direct read. The pagination information also reports a next page. Choose records when you want to search quotes by field or compare items; the recommendation is advice.

Check how to read the quotes page

{
"url": "https://quotes.toscrape.com/js/"
}
Output
{
"recommendation": "markdown",
"est_markdown_tokens": 426,
"platform_feed_hint": null,
"feed_probe": null,
"sitemap_probe": {
"status": "none_declared",
"sitemaps": []
},
"declared_feeds": [],
"pagination": {
"current_page": 1,
"max_page_seen": 2,
"next_url": "https://quotes.toscrape.com/js/page/2/",
"stated_total": null,
"stated_total_source": null,
"in_page_controls": false,
"collection_confirmed": true
},
"navigation_probe": {
"status": "found",
"regions": 2,
"destinations": [
{
"label": "Next →",
"url": "https://quotes.toscrape.com/js/page/2/"
},
{
"label": "GoodReads.com",
"url": "https://www.goodreads.com/quotes"
},
{
"label": "Zyte",
"url": "https://www.zyte.com"
}
],
"truncated": false
},
"guidance": "This page as markdown: ~426 tokens (measured). Repeating structure: substantial.\n- pagination: this looks like page 1 of a paginated collection (its links reach page 2) — these records cover this page only. Analog can follow the site's own next links and merge the pages into one result; call `analog` again with the same `url` and `pages: 2`.\nTask-by-task guidance (records vs markdown vs feeds): https://getanalog.io/docs/assess/"
}

Recover a saved handle or friendly name from recent result metadata, newest first. The response includes the URL, save time, section count, and record count, without returning page content.

limit bounds the number of entries. An empty history returns an empty list; it does not fetch anything.

Text
analog_history(limit: integer = 20)

Accepted values:

  • limit — at least 0.

Tool: analog_history

This capture used a separate local store containing only the quotes page, so requesting up to three entries returns one. The text response is a list; structured responses contain the same list under entries.

Find a recent save

{
"limit": 3
}
Output
[
{
"handle": "20260912-pvtqdw",
"url": "https://quotes.toscrape.com/js/",
"saved_at": "2026-09-12T01:21:00.768156+00:00",
"name": null,
"sections": 3,
"records": 14
}
]

Read the full saved result as structured JSON, including its ordered sections, records, Markdown, collections, and coverage information. This is the complete-result view, so its response can be large.

Use analog_describe to get your bearings, or analog_section and analog_find when you already know what you want to read.

An unreadable save fails with recovery guidance based on its recorded source. Browser-backed saves can use analog to create a new capture; this does not restore earlier browser state or capture settings. Supplied pages must be recreated through their original capture workflow: these MCP tools cannot ingest supplied HTML or capture files. The store retains neither the input file nor its path. Unknown acquisition is identified as unknown, and recovery never runs automatically.

Text
analog_open(handle: string)

Tool: analog_open

Unlike the first receipt, this response contains the full saved records and Markdown. The quotes are in structured_content[0]. The empty collections list means this save has no collection to open.

Open the saved quotes page

{
"handle": "20260912-pvtqdw"
}
Output
{
"schema_version": "29",
"request_id": "9a67f5ce-90b9-43ab-a1c6-6d2347989551",
"collections": [],
"structured_content": [
{
"records": [
{
"tags": [
"change",
"deep-thoughts",
"thinking",
"world"
],
"text": "“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”",
"text_2": "by Albert Einstein"
},
{
"tags": [
"abilities",
"choices"
],
"text": "“It is our choices, Harry, that show what we truly are, far more than our abilities.”",
"text_2": "by J.K. Rowling"
},
{
"tags": [
"inspirational",
"life",
"live",
"miracle",
"miracles"
],
"text": "“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”",
"text_2": "by Albert Einstein"
},
{
"tags": [
"aliteracy",
"books",
"classic",
"humor"
],
"text": "“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”",
"text_2": "by Jane Austen"
},
{
"tags": [
"be-yourself",
"inspirational"
],
"text": "“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”",
"text_2": "by Marilyn Monroe"
},
{
"tags": [
"adulthood",
"success",
"value"
],
"text": "“Try not to become a man of success. Rather become a man of value.”",
"text_2": "by Albert Einstein"
},
{
"tags": [
"life",
"love"
],
"text": "“It is better to be hated for what you are than to be loved for what you are not.”",
"text_2": "by André Gide"
},
{
"tags": [
"edison",
"failure",
"inspirational",
"paraphrased"
],
"text": "“I have not failed. I've just found 10,000 ways that won't work.”",
"text_2": "by Thomas A. Edison"
},
{
"tags": [
"misattributed-eleanor-roosevelt"
],
"text": "“A woman is like a tea bag; you never know how strong it is until it's in hot water.”",
"text_2": "by Eleanor Roosevelt"
},
{
"tags": [
"humor",
"obvious",
"simile"
],
"text": "“A day without sunshine is like, you know, night.”",
"text_2": "by Steve Martin"
}
],
"fields": {
"tags": {
"type": "text",
"source": "rendered text",
"multivalued": true,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"text": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"text_2": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
}
},
"field_normalized": {},
"label": "",
"label_url": "",
"merge_note": "",
"kind": "",
"placement": "",
"xpath": "/html/body/div",
"items_detected": 10,
"withheld_columns": [],
"withheld_visual": null,
"withheld_records": 0,
"declared_total_rows": null,
"declared_total_columns": null,
"structural_outliers": [],
"markdown": "# [Quotes to Scrape](https://quotes.toscrape.com/)\n\n[Login](https://quotes.toscrape.com/login)\n\n“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”by Albert Einstein\n\nTags: change deep-thoughts thinking world\n\n“It is our choices, Harry, that show what we truly are, far more than our abilities.”by J.K. Rowling\n\nTags: abilities choices\n\n“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”by Albert Einstein\n\nTags: inspirational life live miracle miracles\n\n“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”by Jane Austen\n\nTags: aliteracy books classic humor\n\n“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”by Marilyn Monroe\n\nTags: be-yourself inspirational\n\n“Try not to become a man of success. Rather become a man of value.”by Albert Einstein\n\nTags: adulthood success value\n\n“It is better to be hated for what you are than to be loved for what you are not.”by André Gide\n\nTags: life love\n\n“I have not failed. I've just found 10,000 ways that won't work.”by Thomas A. Edison\n\nTags: edison failure inspirational paraphrased\n\n“A woman is like a tea bag; you never know how strong it is until it's in hot water.”by Eleanor Roosevelt\n\nTags: misattributed-eleanor-roosevelt\n\n“A day without sunshine is like, you know, night.”by Steve Martin\n\nTags: humor obvious simile\n\n- [Next →](https://quotes.toscrape.com/js/page/2/)"
},
{
"records": [
{
"text": "Quotes to Scrape",
"url": "https://quotes.toscrape.com/",
"group": "",
"depth": "0"
},
{
"text": "Login",
"url": "https://quotes.toscrape.com/login",
"group": "",
"depth": "0"
}
],
"fields": {
"text": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"url": {
"type": "url",
"source": "attribute:href",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"group": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"depth": {
"type": "text",
"source": "structure",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": true,
"unit": null,
"table_group": null
}
},
"field_normalized": {
"depth": [
0.0,
0.0
]
},
"label": "",
"label_url": "",
"merge_note": "",
"kind": "navigation",
"placement": "header",
"xpath": "/html/body/div/div[1]",
"items_detected": 2,
"withheld_columns": [],
"withheld_visual": null,
"withheld_records": 0,
"declared_total_rows": null,
"declared_total_columns": null,
"structural_outliers": [],
"markdown": "# [Quotes to Scrape](https://quotes.toscrape.com/)\n\n[Login](https://quotes.toscrape.com/login)"
},
{
"records": [
{
"text": "GoodReads.com",
"url": "https://www.goodreads.com/quotes",
"group": "",
"depth": "0"
},
{
"text": "Zyte",
"url": "https://www.zyte.com",
"group": "",
"depth": "0"
}
],
"fields": {
"text": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"url": {
"type": "url",
"source": "attribute:href",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"group": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"depth": {
"type": "text",
"source": "structure",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": true,
"unit": null,
"table_group": null
}
},
"field_normalized": {
"depth": [
0.0,
0.0
]
},
"label": "",
"label_url": "",
"merge_note": "",
"kind": "navigation",
"placement": "footer",
"xpath": "/html/body/footer",
"items_detected": 2,
"withheld_columns": [],
"withheld_visual": null,
"withheld_records": 0,
"declared_total_rows": null,
"declared_total_columns": null,
"structural_outliers": [],
"markdown": "Quotes by: [GoodReads.com](https://www.goodreads.com/quotes)\n\nMade with ❤ by [Zyte](https://www.zyte.com)"
}
],
"sections": [
{
"type": "records",
"structured_content_index": 0
},
{
"type": "records",
"structured_content_index": 1
},
{
"type": "records",
"structured_content_index": 2
}
],
"outline": [
{
"label": "",
"kind": "item",
"xpath": "/html/body/div",
"fate": "extracted",
"section_index": 0,
"reason": "",
"item_count": 10,
"superseded_by": null,
"children": [
{
"label": "",
"kind": "header",
"xpath": "/html/body/div/div[1]",
"fate": "extracted",
"section_index": 1,
"reason": "",
"item_count": 2,
"superseded_by": null,
"children": []
}
]
},
{
"label": "",
"kind": "footer",
"xpath": "/html/body/footer",
"fate": "extracted",
"section_index": 2,
"reason": "",
"item_count": 2,
"superseded_by": null,
"children": []
}
],
"document_section_plan": [
{
"source": "structured_content",
"index": 0
},
{
"source": "structured_content",
"index": 1
},
{
"source": "structured_content",
"index": 2
}
],
"withheld_areas": 0,
"subject_withheld": "below_evidence_bar",
"warnings": [],
"browse_actions": [],
"mode": "auto",
"resolved_url": "https://quotes.toscrape.com/js/",
"document_view": {
"patch": "KLUv/QCIXQUAiDwtYW5hbG9nLW5vZGU9ImJ5M6DQZRoDEE4IYmbED+4wRgLKaeXxsDgbKVoRBSkuLcXpm0YUOrI3spoIpQm7RFu6ZvYQTr0/Kh7KmIMA5WjRdEj3/wGKO0DDQUK6h1G+E82GMus7CAUqkNrOwZTTQZPhbOEbQH1u0WAgj1zDq0DWlPsZTLlXNBZ2BscgVXBOk0YqB2wE44XCVdhSQIiX+gVCFeOJpLqp4SQS",
"sha256": "23d0cae2cad42487b8386bd24ba9339df82fcc098654929a95979dd37389fe01"
},
"pagination": {
"current_page": 1,
"max_page_seen": 2,
"next_url": "https://quotes.toscrape.com/js/page/2/",
"stated_total": null,
"stated_total_source": null,
"in_page_controls": false,
"collection_confirmed": true
},
"page_sweep": null,
"markdown": "# [Quotes to Scrape](https://quotes.toscrape.com/)\n\n[Login](https://quotes.toscrape.com/login)\n\n“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”by Albert Einstein\n\nTags: change deep-thoughts thinking world\n\n“It is our choices, Harry, that show what we truly are, far more than our abilities.”by J.K. Rowling\n\nTags: abilities choices\n\n“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”by Albert Einstein\n\nTags: inspirational life live miracle miracles\n\n“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”by Jane Austen\n\nTags: aliteracy books classic humor\n\n“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”by Marilyn Monroe\n\nTags: be-yourself inspirational\n\n“Try not to become a man of success. Rather become a man of value.”by Albert Einstein\n\nTags: adulthood success value\n\n“It is better to be hated for what you are than to be loved for what you are not.”by André Gide\n\nTags: life love\n\n“I have not failed. I've just found 10,000 ways that won't work.”by Thomas A. Edison\n\nTags: edison failure inspirational paraphrased\n\n“A woman is like a tea bag; you never know how strong it is until it's in hot water.”by Eleanor Roosevelt\n\nTags: misattributed-eleanor-roosevelt\n\n“A day without sunshine is like, you know, night.”by Steve Martin\n\nTags: humor obvious simile\n\n- [Next →](https://quotes.toscrape.com/js/page/2/)\n\nQuotes by: [GoodReads.com](https://www.goodreads.com/quotes)\n\nMade with ❤ by [Zyte](https://www.zyte.com)",
"handle": "20260912-pvtqdw"
}

Return a saved result in another format. JSON contains the full structured result; CSV and YAML contain pooled records; Markdown contains the page’s Markdown with any required disclosures. The tool returns text and does not write an export file.

CSV and YAML require compatible section fields. When sections cannot be pooled, use JSON for the whole result or analog_section to read one section.

Text
analog_export(handle: string, fmt: string = "json")

Accepted values:

  • fmt — one of "json", "csv", "yaml", "md", "markdown".

Tool: analog_export

This is the returned Markdown text, including the quotes, tags, and navigation. It uses the saved page rather than fetching the URL again.

Read the saved page as Markdown

{
"handle": "20260912-pvtqdw",
"fmt": "md"
}
Output
# [Quotes to Scrape](https://quotes.toscrape.com/)
[Login](https://quotes.toscrape.com/login)
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”by Albert Einstein
Tags: change deep-thoughts thinking world
“It is our choices, Harry, that show what we truly are, far more than our abilities.”by J.K. Rowling
Tags: abilities choices
“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”by Albert Einstein
Tags: inspirational life live miracle miracles
“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”by Jane Austen
Tags: aliteracy books classic humor
“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”by Marilyn Monroe
Tags: be-yourself inspirational
“Try not to become a man of success. Rather become a man of value.”by Albert Einstein
Tags: adulthood success value
“It is better to be hated for what you are than to be loved for what you are not.”by André Gide
Tags: life love
“I have not failed. I've just found 10,000 ways that won't work.”by Thomas A. Edison
Tags: edison failure inspirational paraphrased
“A woman is like a tea bag; you never know how strong it is until it's in hot water.”by Eleanor Roosevelt
Tags: misattributed-eleanor-roosevelt
“A day without sunshine is like, you know, night.”by Steve Martin
Tags: humor obvious simile
- [Next →](https://quotes.toscrape.com/js/page/2/)
Quotes by: [GoodReads.com](https://www.goodreads.com/quotes)
Made with ❤ by [Zyte](https://www.zyte.com)

Read one section’s full records and field schema. index is zero-based in structured_content, in page order. Use the receipt, analog_describe, or analog_open to find the relevant section before choosing its index.

Section numbers belong to this save. A later fetch may organize the page differently.

Text
analog_section(handle: string, index: integer)

Accepted values:

  • index — at least 0.

Tool: analog_section

Section 0 contains all ten quote records and their field definitions. The navigation sections are outside this response.

Read just the quotes

{
"handle": "20260912-pvtqdw",
"index": 0
}
Output
{
"records": [
{
"tags": [
"change",
"deep-thoughts",
"thinking",
"world"
],
"text": "“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”",
"text_2": "by Albert Einstein"
},
{
"tags": [
"abilities",
"choices"
],
"text": "“It is our choices, Harry, that show what we truly are, far more than our abilities.”",
"text_2": "by J.K. Rowling"
},
{
"tags": [
"inspirational",
"life",
"live",
"miracle",
"miracles"
],
"text": "“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”",
"text_2": "by Albert Einstein"
},
{
"tags": [
"aliteracy",
"books",
"classic",
"humor"
],
"text": "“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”",
"text_2": "by Jane Austen"
},
{
"tags": [
"be-yourself",
"inspirational"
],
"text": "“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”",
"text_2": "by Marilyn Monroe"
},
{
"tags": [
"adulthood",
"success",
"value"
],
"text": "“Try not to become a man of success. Rather become a man of value.”",
"text_2": "by Albert Einstein"
},
{
"tags": [
"life",
"love"
],
"text": "“It is better to be hated for what you are than to be loved for what you are not.”",
"text_2": "by André Gide"
},
{
"tags": [
"edison",
"failure",
"inspirational",
"paraphrased"
],
"text": "“I have not failed. I've just found 10,000 ways that won't work.”",
"text_2": "by Thomas A. Edison"
},
{
"tags": [
"misattributed-eleanor-roosevelt"
],
"text": "“A woman is like a tea bag; you never know how strong it is until it's in hot water.”",
"text_2": "by Eleanor Roosevelt"
},
{
"tags": [
"humor",
"obvious",
"simile"
],
"text": "“A day without sunshine is like, you know, night.”",
"text_2": "by Steve Martin"
}
],
"fields": {
"tags": {
"type": "text",
"source": "rendered text",
"multivalued": true,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"text": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
},
"text_2": {
"type": "text",
"source": "rendered text",
"multivalued": false,
"traits": [],
"hidden": false,
"numeric": false,
"unit": null,
"table_group": null
}
},
"field_normalized": {},
"label": "",
"label_url": "",
"merge_note": "",
"kind": "",
"placement": "",
"xpath": "/html/body/div",
"items_detected": 10,
"withheld_columns": [],
"withheld_visual": null,
"withheld_records": 0,
"declared_total_rows": null,
"declared_total_columns": null,
"structural_outliers": []
}

Read one collection as canonical records with their member sections. Collections combine compatible page areas into a deduplicated dataset while retaining where those records appeared. A collection does not have a single physical location on the page.

index is zero-based in the result’s collections list, which is ordered by the first member section. It is separate from a section index. Check analog_open for available collections; some results have none.

Text
analog_collection(handle: string, index: integer)

Accepted values:

  • index — at least 0.

The quotes-page example has no collections. For a save that does, replace <handle> with its handle and choose an index from its collections list:

Tool: analog_collection

Read the first reported collection

{
"handle": "<handle>",
"index": 0
}

The response includes records, fields, and section_indices, plus record and placement counts. Use section_indices with analog_section when you need to inspect an individual member section.

Search saved records and Markdown sections in page order. Matching is a case-insensitive substring search; special characters match literally. Results include source attribution so you can return to the relevant section.

Pass field to search one record field. Without it, the search covers all record fields and Markdown sections. A field that does not exist returns an explanatory error.

Text
analog_find(handle: string, pattern: string, field: string | null = null)

Tool: analog_find

In this save, text_2 contains author names. The matching record includes its full quote and _source section. The text response is a list; structured responses contain the same list under matches.

Find the quote by Jane Austen

{
"handle": "20260912-pvtqdw",
"pattern": "Jane Austen",
"field": "text_2"
}
Output
[
{
"tags": [
"aliteracy",
"books",
"classic",
"humor"
],
"text": "“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”",
"text_2": "by Jane Austen",
"_source": "structured_content[0]"
}
]

Preview a saved result’s sections and field metadata in page order. Fields show names, types, list shapes, and non-null coverage when sparse. Read a section or the full result for values. This tool returns a text preview.

Markdown regions appear in page order with their available labels, roles, and rendered sizes. Read their text through analog_open or analog_export. Printed section[N] identifiers keep the record indices used by analog_section; prose entries do not change them.

complete: true includes hidden fields in the summary. By default they are counted but not listed. It does not turn the preview into a full-result read.

guidance: true may add one available next action. It is off by default; field metadata, coverage notes and necessary recovery stay the same.

Text
analog_describe(handle: string, complete: boolean = false, guidance: boolean = false)

Tool: analog_describe

The preview locates the quotes in section 0 and identifies two navigation sections. analog_section returns all ten quotes in full.

Get your bearings in the saved page

{
"handle": "20260912-pvtqdw"
}
Output
pagination: this looks like page 1 of a paginated collection (its links reach page 2) — these records cover this page only.
3 sections extracted.
section[0] 10 records · 3 fields
fields: tags:text[], text:text, text_2:text
section[1] navigation 2 links (header) · 4 fields
fields: text:text, url:url, group:text, depth:text
section[2] navigation 2 links (footer) · 4 fields
fields: text:text, url:url, group:text, depth:text
(A single-subject record was also weighed and withheld — Analog couldn't verify enough of the page's facts for a record we'd trust.)

Send a quality report or feature request to Analog. Submitting requires a connected account and returns a confirmation with a report ID.

For extraction_quality, supply the affected URL and at least one reason label. A quality report includes the URL you explicitly submit; it never includes page content. The optional note adds context.

For feature_request, supply a non-empty note and omit url and labels. See Feedback for choosing what to report.

Text
analog_feedback(kind: string, url: string | null = null, labels: list[string] | null = null, note: string = "")

Accepted values:

  • kind — one of "extraction_quality", "feature_request".
  • labels — one of "undetected_block", "under_rendered", "no_records_found", "poor_field_naming", "misfielded_values", "page_chrome_in_records", "over_extraction", "under_extraction", "wrong_content_extracted", "garbled_markdown", "other".

Replace the placeholder with the request you want to send:

Tool: analog_feedback

Send a feature request

{
"kind": "feature_request",
"note": "<your-request>"
}

A successful submission returns a confirmation and an opaque report ID.