Skip to main content
Glama

fileforge_scrape_action

Extract structured content from pages, tabs, or sites—text, links, tables, metadata, assets, and design tokens—to store, query, or compare results for analysis.

Instructions

Extract structured content from pages, tabs or a whole site: text, links, tables, metadata, assets and design tokens. Prefer query_scrape; the others are older single-purpose actions. It can't click or submit; use fileforge_page_interaction for that. crawl_site opens real tabs in your signed-in session, up to 50 pages by default. Query stored links and tables with fileforge_sql_action. Needs the extension.

Input Schema

NameRequiredDescriptionDefault
urlNoPage URL. Omit to use the active tab where the action allows it.
urlsNoURLs to process.
queryNoSections to return and their options. Takes priority over preset. Sections: page, metadata, headings, sections, links, images, assets, tables, jsonLd, article, contacts, pricing, products, contentQuality, warnings, summary, snapshot.
storeNoSave the result in ~/.fileforge and return a ref.
tabIdNoTab ID, or "active" for the active tab.active
actionYesWhat to do. Required parameters are in brackets. query_scrape: GraphQL-style projection over page content (presets + custom queries). compare_scrape_snapshots (beforeSnapshotId, afterSnapshotId): Diff two stored scrape snapshots by ID. scrape_page: Scrape sections of a single page. extract_assets: Extract assets (images, videos, files) from a page. extract_tables: Extract tables from the active or specified page. extract_contacts: Extract email/phone/address contact data. extract_metadata: Extract page metadata (title, OG, JSON-LD). extract_design_tokens: Extract colors, fonts, and design tokens. extract_all_debug: Extract everything (debug only — large payload). scrape_tabs (tabIds): Scrape multiple tabs. scrape_urls (urls): Open and scrape a list of URLs. crawl_site (url): Crawl a site up to maxPages. research_site (url): Research a site (multi-step crawl + extract). analyze_site (url): Analyze a site. extract_resource (url): Fetch a specific page resource.
presetNoNamed set of query modules.
sourceNoWhat to scrape: { url } or { tabId }. Defaults to the active tab.
tabIdsNoTab IDs to act on.
projectNoProject name that groups stored results.default
maxPagesNoMaximum pages to visit.
sectionsNoPage sections to scrape. Defaults to all of them.
afterSnapshotIdNoID of the later snapshot.
beforeSnapshotIdNoID of the earlier snapshot.

Output Schema

NameRequiredDescriptionDefault
okYesFalse if the action failed or a check did not pass.
refNoStored result ID, for fileforge_result_action.
dataNoThe result. Its shape depends on the action.
metaNoTool, action and context.
errorNoFailure code and message.
warningsNoNotes about a call that still ran.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changedv0.3.0
    • changedInput schema / properties / action / description
      Previous value: -"The scrape action to perform."New value: +"What to do. Required parameters are in brackets. query_scrape: GraphQL-style projection over page content (presets + custom queries). compare_scrape_snapshots (beforeSnapshotId, afterSnapshotId): Diff two stored scrape snapshots by ID. scrape_page: Scrape sections of a single page. extract_assets: Extract assets (images, videos, files) from a page. extract_tables: Extract tables from the active or specified page. extract_contacts: Extract email/phone/address contact data. extract_metadata: Extract page metadata (title, OG, JSON-LD). extract_design_tokens: Extract colors, fonts, and design tokens. extract_all_debug: Extract everything (debug only — large payload). scrape_tabs (tabIds): Scrape multiple tabs. scrape_urls (urls): Open and scrape a list of URLs. crawl_site (url): Crawl a site up to maxPages. research_site (url): Research a site (multi-step crawl + extract). analyze_site (url): Analyze a site. extract_resource (url): Fetch a specific page resource."
    • addedInput schema / properties / afterSnapshotId / description
      Added value: +"ID of the later snapshot."
    • addedInput schema / properties / beforeSnapshotId / description
      Added value: +"ID of the earlier snapshot."
    • addedInput schema / properties / maxPages / description
      Added value: +"Maximum pages to visit."
    • addedInput schema / properties / preset / description
      Added value: +"Named set of query modules."
    • addedInput schema / properties / preset / enum
      Added value: +[
      +  "basic",
      +  "page",
      +  "links",
      +  "tables",
      +  "seo_audit",
      +  "landing_page_audit",
      +  "article_extract",
      +  "research_extract",
      +  "competitor_snapshot",
      +  "pricing_audit",
      +  "structured_data",
      +  "contact_discovery",
      +  "asset_audit"
      +]
    • addedInput schema / properties / project / description
      Added value: +"Project name that groups stored results."
    • addedInput schema / properties / query / description
      Added value: +"Sections to return and their options. Takes priority over preset. Sections: page, metadata, headings, sections, links, images, assets, tables, jsonLd, article, contacts, pricing, products, contentQuality, warnings, summary, snapshot."
    • addedInput schema / properties / sections / description
      Added value: +"Page sections to scrape. Defaults to all of them."
    • addedInput schema / properties / sections / items / enum
      Added value: +[
      +  "files",
      +  "images",
      +  "links",
      +  "pageLinks",
      +  "emails",
      +  "phones",
      +  "tables",
      +  "videos",
      +  "colors",
      +  "addresses",
      +  "locations",
      +  "fonts",
      +  "lists",
      +  "icons",
      +  "qrCodes",
      +  "structuredData",
      +  "network",
      +  "metadata",
      +  "assets",
      +  "contacts",
      +  "designTokens",
      +  "dataUris"
      +]
    • addedInput schema / properties / source / description
      Added value: +"What to scrape: { url } or { tabId }. Defaults to the active tab."
    • addedInput schema / properties / store / description
      Added value: +"Save the result in ~/.fileforge and return a ref."
    • addedInput schema / properties / tabId / description
      Added value: +"Tab ID, or \"active\" for the active tab."
    • addedInput schema / properties / tabIds / description
      Added value: +"Tab IDs to act on."
    • addedInput schema / properties / url / description
      Added value: +"Page URL. Omit to use the active tab where the action allows it."
    • addedInput schema / properties / urls / description
      Added value: +"URLs to process."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "query_* actions return their modules as extra top-level fields.",
      +  "properties": {
      +    "data": {
      +      "description": "The result. Its shape depends on the action."
      +    },
      +    "error": {
      +      "description": "Failure code and message."
      +    },
      +    "meta": {
      +      "description": "Tool, action and context."
      +    },
      +    "ok": {
      +      "description": "False if the action failed or a check did not pass.",
      +      "type": "boolean"
      +    },
      +    "ref": {
      +      "description": "Stored result ID, for fileforge_result_action."
      +    },
      +    "warnings": {
      +      "description": "Notes about a call that still ran."
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.2.1

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic profile (openWorld, not read-only, not destructive); the description adds real behavioral context beyond them: crawl_site 'opens real tabs in your signed-in session, up to 50 pages by default', which is a meaningful side effect on the user's browser session, and 'Needs the extension', a hard prerequisite. It does not mention persistence to ~/.fileforge or payload size for extract_all_debug, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then alternatives, then constraints — a sensible ordering with no filler sentences. It is telegraphic in places ('Needs the extension.'), which is efficient but leaves the reader to infer the consequence of a missing extension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter dispatcher over 15 actions with nested objects, the description covers the essentials an agent needs before calling: prerequisites, side effects, and where to go for adjacent capabilities, while the schema and output schema carry parameter and return detail. What is missing is a brief signal about which actions require which input shape (url vs urls vs tabIds) at the top level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter, including the 15-value action enum and the presets, is already documented inline, so the baseline is 3. The description adds only one genuine parameter fact beyond the schema — the default page cap for crawl_site — and otherwise repeats enum semantics rather than clarifying how url/urls/source/tabId interact when several are supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource set: 'Extract structured content from pages, tabs or a whole site' followed by the content types returned (text, links, tables, metadata, assets, design tokens). It also distinguishes itself from siblings by name (page_interaction for clicking, sql_action for stored data), so an agent can place it in the toolset without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing guidance: 'Prefer query_scrape; the others are older single-purpose actions', plus hard exclusions ('can't click or submit; use fileforge_page_interaction') and a handoff ('Query stored links and tables with fileforge_sql_action'). The gap is that the many site-level actions (crawl_site vs research_site vs analyze_site) are not disambiguated from each other, leaving the agent to guess among overlapping crawl variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.