Tools/pdf-tools
PDF Tools

PDF Tools

Active

Your agent can't manipulate a PDF in its sandbox; this merges, splits, extracts, fills, stamps, and compresses them.

7 tools

Merge, split, extract text and tables, fill forms, stamp/watermark, and compress PDFs. 0.1 credits per page (compress: 0.1 credits per MB of input).

Documentspdfmergesplitextractformswatermarkcompress

Tools (7)

Default

Fill an AcroForm PDF's fields and return the completed document.

Usage-based · 0.1 credits per page

Example prompts

  • Fill this PDF form with name "Ada Lovelace" and date "2026-06-04"
  • Complete the application PDF using these field values

Parameters

fieldsobjectrequired

Map of AcroForm field name to value. Checkboxes accept true/false.

input_urlstringrequired

Pre-signed GET URL of the fillable PDF.

expires_inintegeroptionaldefault: 3600

Download URL TTL in seconds.

output_filenamestringoptional

Filename for the filled PDF. Defaults to filled.pdf.

API Usage

curl -X POST "https://skill.askfaro.com/skills/pdf-tools/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Fill this PDF form with name \"Ada Lovelace\" and date \"2026-06-04\""
  }
}'

CLI Usage

askfaro describe pdf-tools/fill_form

Install pip install askfaro-cli, then askfaro auth login.

Split a PDF by page ranges or into fixed-size chunks.

Usage-based · 0.1 credits per page

Example prompts

  • Split out pages 1 to 3 of this PDF
  • Break this PDF into one file per page
  • Split this document every 10 pages

Parameters

rangesstringoptional

Comma-separated 1-indexed page ranges, e.g. "1-3,5,8-10". Each group becomes one output PDF.

every_nintegeroptional

Split into chunks of N pages each. Ignored if ranges is set.

input_urlstringrequired

Pre-signed GET URL of the PDF to split.

expires_inintegeroptionaldefault: 3600

Download URL TTL in seconds.

output_filenamestringoptional

Base filename for the output(s).

API Usage

curl -X POST "https://skill.askfaro.com/skills/pdf-tools/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Split out pages 1 to 3 of this PDF"
  }
}'

CLI Usage

askfaro describe pdf-tools/split

Install pip install askfaro-cli, then askfaro auth login.

Extract plain text from a PDF, returned per page.

Usage-based · 0.1 credits per page

Example prompts

  • Extract the text from this PDF
  • Get the text of pages 2 to 4 of this document

Parameters

pagesstringoptional

Optional 1-indexed page selector, e.g. "1-3,5". Defaults to all pages.

input_urlstringrequired

Pre-signed GET URL of the PDF.

API Usage

curl -X POST "https://skill.askfaro.com/skills/pdf-tools/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Extract the text from this PDF"
  }
}'

CLI Usage

askfaro describe pdf-tools/extract_text

Install pip install askfaro-cli, then askfaro auth login.

Merge multiple PDFs into a single document, in order.

Usage-based · 0.1 credits per page

Example prompts

  • Merge these three PDFs into one file
  • Combine the cover letter and the report into a single PDF

Parameters

expires_inintegeroptionaldefault: 3600

Download URL TTL in seconds (default 1h, max 24h).

input_urlsarrayrequired

Pre-signed GET URLs of the PDFs to merge, in order.

output_filenamestringoptional

Filename for the merged PDF. Defaults to merged.pdf.

API Usage

curl -X POST "https://skill.askfaro.com/skills/pdf-tools/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Merge these three PDFs into one file"
  }
}'

CLI Usage

askfaro describe pdf-tools/merge

Install pip install askfaro-cli, then askfaro auth login.

Stamp or watermark every page of a PDF with text or an image.

Usage-based · 0.1 credits per page

Example prompts

  • Watermark this PDF with "CONFIDENTIAL" diagonally
  • Stamp our logo in the top-right corner of every page

Parameters

textstringoptional

Watermark text. Provide text or image_url.

colorstringoptionaldefault: "#888888"

Text color as

scalenumberoptionaldefault: 0.4

Image stamp width as a fraction of page width.

opacitynumberoptionaldefault: 0.3

Stamp opacity.

positionstringoptionaldefault: "center"

Where to place the stamp on each page.

rotationintegeroptionaldefault: 0

Stamp rotation in degrees.

font_sizeintegeroptionaldefault: 48

Text stamp font size in points.

image_urlstringoptional

Pre-signed GET URL of a stamp/watermark image. Provide text or image_url.

input_urlstringrequired

Pre-signed GET URL of the PDF.

expires_inintegeroptionaldefault: 3600

Download URL TTL in seconds.

output_filenamestringoptional

Filename for the stamped PDF. Defaults to stamped.pdf.

API Usage

curl -X POST "https://skill.askfaro.com/skills/pdf-tools/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Watermark this PDF with \"CONFIDENTIAL\" diagonally"
  }
}'

CLI Usage

askfaro describe pdf-tools/stamp

Install pip install askfaro-cli, then askfaro auth login.

Extract simple tables from a PDF as structured rows.

Usage-based · 0.1 credits per page

Example prompts

  • Extract the tables from this PDF
  • Pull the table on page 2 into rows

Parameters

pagesstringoptional

Optional 1-indexed page selector, e.g. "1-3,5". Defaults to all pages.

input_urlstringrequired

Pre-signed GET URL of the PDF.

API Usage

curl -X POST "https://skill.askfaro.com/skills/pdf-tools/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Extract the tables from this PDF"
  }
}'

CLI Usage

askfaro describe pdf-tools/extract_tables

Install pip install askfaro-cli, then askfaro auth login.

Compress

Recompress and linearize a PDF to reduce file size.

Usage-based · 0.1 credits per MB of input

Example prompts

  • Compress this PDF to make it smaller
  • Reduce the file size of this document

Parameters

levelstringoptionaldefault: "balanced"

Compression effort. balanced and max also linearize for web viewing.

input_urlstringrequired

Pre-signed GET URL of the PDF.

expires_inintegeroptionaldefault: 3600

Download URL TTL in seconds.

output_filenamestringoptional

Filename for the compressed PDF. Defaults to compressed.pdf.

API Usage

curl -X POST "https://skill.askfaro.com/skills/pdf-tools/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Compress this PDF to make it smaller"
  }
}'

CLI Usage

askfaro describe pdf-tools/compress

Install pip install askfaro-cli, then askfaro auth login.

README

PDF Tools

A self-hosted PDF toolkit: merge, split, extract text/tables, fill AcroForm fields, stamp/watermark, and compress. No third-party service handles your files; processing runs on the Faro worker.

Workflow

  1. Call POST /uploads/presign on faro-api to get a put_url + get_url pair.
  2. PUT each input file to its put_url.
  3. Call the tool with input_url (or input_urls) set to the get_url(s).
  4. Download the result from the returned download_url, or read inline text/tables.

Pricing

0.1 credits per page for merge, split, extract, fill, and stamp; 0.1 credits per MB of input for compress.

Limits

Max input 100 MB and 3000 pages per document; merge takes up to 50 inputs. Extracted text is capped at ~5 MB inline. Inputs are streamed with a hard size cap and every call runs under a wall-clock timeout.