agentsclimarketplace

Crw parse

Skill us/crw/skills/crw-parse

Parse a local or remote FILE (PDF) into markdown or structured JSON with fastCRW. Use when the source is a file on disk — "parse this PDF", "extract text from this document", "read this report", "convert PDF to markdown". Routing rule: URL → use crw-scrape; file on disk → use crw-parse. Step 5 of the crw workflow ladder.From its SKILL.md

Install
npx -y skills add us/crw --skill crw-parse

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its file declares

Copied from the file, not written here

The file declares its own license as AGPL-3.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.2 KB, as published. Nobody here has run it

crw-parse — local file extraction

When to use

  • The source is a file on disk (PDF), not a web page.
  • Step 5 in the crw ladder. If you have a URL, use crw-scrape (step 2) instead — scrape handles remote PDFs via URL. If you want a typed JSON object from a page, see crw-extract (step 6).
  • PDF only. DOCX, XLSX, and other office formats are not yet supported (unlike Firecrawl's document endpoint). If you have a non-PDF document, convert it to PDF first or use an external tool.

Quick start

CLI — crw scrape auto-detects a local file path and routes to the PDF parser; there is no separate crw parse subcommand:

crw scrape report.pdf                         # → markdown to stdout
crw scrape report.pdf --format json --extract '{"type":"object","properties":{"title":{"type":"string"}}}' -o out.json

MCP (inside an agent harness):

crw_parse_file(
  contentBase64="<base64-encoded PDF bytes>",
  filename="report.pdf",
  formats=["markdown"],
  maxLength=0
  # For structured JSON output:
  # formats=["json"],
  # jsonSchema={"type":"object","properties":{"title":{"type":"string"}}}
)

REST — multipart upload, 50 MB limit, PDF only:

curl -X POST "$CRW_API_URL/v2/parse" \
  -H "Authorization: Bearer $CRW_API_KEY" \
  -F "[email protected]" \
  -F 'options={"formats":["markdown"]}'

Options

NeedCLI (crw scrape <path>)MCP fieldREST options field
Output format--format markdown|json|text|linksformatsformats
Structured JSON--extract '<schema>'jsonSchema + formats:["json"]jsonSchema + formats:["json"]
AI summary--summaryformats:["summary"]formats:["summary"]
Summary prompt--prompt "TEXT"—summaryPrompt
Limit output chars—maxLength (0 = unbounded)maxContentChars
Force parser—parsers:["pdf"]parsers:["pdf"]

Formats json and summary require a server-side LLM configured in [extraction.llm] of the server config (or via crw setup for the CLI).

Honest gaps

  • PDF only. The server rejects anything without a %PDF- magic header.
  • No OCR. Scanned/image-only PDFs have no extractable text layer; they return empty markdown with a warning. There is no attempt_scanned option — scanned PDFs are a known gap.
  • 50 MB cap on REST uploads (per-route hard limit). The CLI passes bytes in-process, so it shares the same underlying limit.
  • LLM required for json/summary. Without a configured LLM the request returns a 400.

Tips

  • Read the result, don't stream it. For large PDFs, write to .crw/ and grep/head the output: crw scrape big.pdf -o .crw/big.md.
  • MCP requires base64. Read the file in your agent, base64-encode the bytes, pass as contentBase64. The filename field is optional but helps with error messages.
  • Scanned PDFs return empty markdown — no warning field. If the PDF has no extractable text layer, the REST response returns empty markdown with no warning field in the envelope. A warning (e.g. warning: pdf_partial_text) only appears on the CLI's stderr, never in the REST/MCP response. If you get empty markdown, assume a scanned/image-only PDF and handle it at call-site.

See also

  • crw-scrape — fetch a URL (including a remote PDF served over HTTP)
  • crw-extract — typed JSON object from a page against a schema
  • crw — ladder overview and routing rules

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.