Skip to main content
Glama

rowfeed/pdf-table-extractor

rowfeed--pdf-table-extractor
Destructive

This tool calls the Actor "rowfeed/pdf-table-extractor" and retrieves its output results. Actor description: Convert PDF tables to Excel, CSV and JSON: bank statements, invoices, price lists and reports. Upload PDFs or paste links; get every table as rows plus one Excel file per PDF. Finds ruled and unruled tables. $3 per 1,000 pages with tables + $0.10 per 1,000 pages read.

Input Schema

NameRequiredDescriptionDefault
modeNoAuto reads tables drawn with lines, and on pages without them finds tables by how the words line up (bank statements, price lists). Lines only or Aligned text only force one method. Example values: "auto"auto
pdfsNoUpload PDFs or paste links to them (one per line): bank statements, invoices, price lists, reports. Up to 200 per run, 50 MB each. Example values: ["https://raw.githubusercontent.com/kristerkb-pixel/rowfeed-seo-mcp/main/examples/bank-statement-example.pdf"]
lastPageNoLast page to read. 0 = to the end.
waitSecsNoMax seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget.
firstPageNoFirst page to read (1 = the first page). 0 = from the start.
maxPagesPerPdfNoRead at most this many pages of each PDF. Each page read costs $0.0001; pages with tables $0.003 more. Example values: 100
firstRowIsHeaderNoUse each table's first row as column names. Off: columns are col_1, col_2, ... and the first row is a data row. Example values: true

Output Schema

NameRequiredDescriptionDefault
tipNoAdvisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states (especially FAILED)
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias. "default" is always the primary entry.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only for Console sessions

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema
      Added value: +{
      +  "description": "JSON Schema for rows in the dataset at `storages.datasets.default.id` — describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema.",
      +  "properties": {
      +    "balance_check": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "cells": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "columns": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "data": {
      +      "properties": {
      +        "Amount": {
      +          "type": "string"
      +        },
      +        "Balance": {
      +          "type": "string"
      +        },
      +        "Date": {
      +          "type": "string"
      +        },
      +        "Description": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "excel_url": {
      +      "type": "string"
      +    },
      +    "file_name": {
      +      "type": "string"
      +    },
      +    "method": {
      +      "type": "string"
      +    },
      +    "page": {
      +      "type": "number"
      +    },
      +    "page_count": {
      +      "type": "number"
      +    },
      +    "row": {
      +      "type": "number"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "table": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema
      Removed value: -{
      -  "description": "JSON Schema for rows in the dataset at `storages.datasets.default.id` — describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema.",
      -  "properties": {
      -    "balance_check": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "cells": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "columns": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "data": {
      -      "properties": {
      -        "4th month": {
      -          "type": "string"
      -        },
      -        "AND at the end of 2025 you were...*": {
      -          "type": "string"
      -        },
      -        "Amount": {
      -          "type": "string"
      -        },
      -        "Balance": {
      -          "type": "string"
      -        },
      -        "Chapter removed": {
      -          "type": "string"
      -        },
      -        "Cost": {
      -          "type": "string"
      -        },
      -        "Date": {
      -          "type": "string"
      -        },
      -        "Description": {
      -          "type": "string"
      -        },
      -        "Example 3—Friend. Your friend lived with": {
      -          "type": "string"
      -        },
      -        "IF your filing status is...": {
      -          "type": "string"
      -        },
      -        "Paid": {
      -          "type": "string"
      -        },
      -        "Primary source": {
      -          "type": "string"
      -        },
      -        "Pub. 555 for more information.": {
      -          "type": "string"
      -        },
      -        "THEN file a return if your gross income was at least...**": {
      -          "type": "string"
      -        },
      -        "Title of chapter": {
      -          "type": "string"
      -        },
      -        "To qualify": {
      -          "type": "string"
      -        },
      -        "Total": {
      -          "type": "string"
      -        },
      -        "You": {
      -          "type": "string"
      -        },
      -        "after the": {
      -          "type": "string"
      -        },
      -        "basis.": {
      -          "type": "string"
      -        },
      -        "by the 15th day of": {
      -          "type": "string"
      -        },
      -        "close": {
      -          "type": "string"
      -        },
      -        "col_1": {
      -          "type": "string"
      -        },
      -        "col_4": {
      -          "type": "string"
      -        },
      -        "col_5": {
      -          "type": "string"
      -        },
      -        "col_7": {
      -          "type": "string"
      -        },
      -        "col_8": {
      -          "type": "string"
      -        },
      -        "for head of household": {
      -          "type": "string"
      -        },
      -        "status, you": {
      -          "type": "string"
      -        },
      -        "the": {
      -          "type": "string"
      -        },
      -        "• IRS.gov (English)": {
      -          "type": "string"
      -        },
      -        "• IRS.gov/Chinese (中文)": {
      -          "type": "string"
      -        },
      -        "• IRS.gov/Russian (Pусский)": {
      -          "type": "string"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "excel_url": {
      -      "type": "string"
      -    },
      -    "file_name": {
      -      "type": "string"
      -    },
      -    "method": {
      -      "type": "string"
      -    },
      -    "page": {
      -      "type": "number"
      -    },
      -    "page_count": {
      -      "type": "number"
      -    },
      -    "row": {
      -      "type": "number"
      -    },
      -    "source": {
      -      "type": "string"
      -    },
      -    "table": {
      -      "type": "number"
      -    }
      -  },
      -  "type": "object"
      -}
  3. Changed34 schema fields changed
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / 4th month
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / AND at the end of 2025 you were...*
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Chapter removed
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Cost
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Example 3—Friend. Your friend lived with
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / IF your filing status is...
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Paid
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Primary source
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Pub. 555 for more information.
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / THEN file a return if your gross income was at least...**
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Title of chapter
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / To qualify
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / Total
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / You
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / after the
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / basis.
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / by the 15th day of
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / close
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_10
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_11
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_12
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_13
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_2
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_3
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_6
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / col_9
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / for head of household
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / status, you
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / the
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / • IRS.gov (English)
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / • IRS.gov/Chinese (中文)
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / data / properties / • IRS.gov/Russian (Pусский)
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / error
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / errorMessage
      Removed value: -{
      -  "type": "string"
      -}
  4. Added

TDQS

A4/5.0
Behavior3/5

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

Adds genuinely useful behavior beyond the annotations: per-page pricing ($3/1,000 pages with tables + $0.10/1,000 pages read) and the output shape (rows plus one Excel file per PDF). However, annotations declare destructiveHint=true and the description never explains what that means here — an agent could read that as file deletion. Cost is disclosed; the destructive flag is left dangling.

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?

The first sentence ('calls the Actor ... and retrieves its output results') is near-boilerplate inherited from the wrapper framing, but the Actor description that follows is dense and front-loads the capability, then inputs, then outputs, then price. Little waste beyond the opener.

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

Completeness5/5

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

Output schema exists and all seven parameters are fully described in the schema, including the waitSecs polling/nextStep behavior, so the description only needs to establish capability, input options, cost and output format — all present. Nothing an agent needs to invoke it correctly is missing.

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%, so the baseline is 3. The description's pricing sentence loosely corresponds to maxPagesPerPdf and the table-finder sentence to mode, but the schema already documents both in more detail (including cost per page), so little unique meaning is added.

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?

States a specific verb and resource: convert PDF tables to Excel, CSV and JSON, with named input forms (PDFs or links) and named table-finding modes ('Finds ruled and unruled tables'). Clearly distinguishable from every listed sibling, all of which are scrapers/trackers rather than document converters.

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?

Gives concrete use-case context — bank statements, invoices, price lists, reports — and both input routes (upload vs paste links), which tells an agent when this is the right tool. It stops short of explicit when-not-to-use guidance or naming an alternative for non-PDF documents.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.