Agent skill
One markdown file at ragextract.com/SKILL.md. Give it to a coding agent and it writes against these endpoints instead of guessing at them.
An agent asked to “pull the governing law out of these forty contracts” will write a client for this API from whatever it already believes about REST. What it believes is reasonable and, here, wrong in five specific ways — this API returns errors in two different shapes, drops misspelled parameters instead of rejecting them, answers datasetId where it said fileId, and returns a 404 for a workspace that exists but is out of reach. Three of the things it does also spend credits. A skill is how you hand an agent the corrections up front rather than after the third failed run.
The file is a plain SKILL.md: YAML frontmatter naming the skill and saying when it applies, then a body of instructions. Agents read the description to decide whether a task calls for it, and load the body when one does.
---
name: ragextract-api
description: Use the Ragextract REST API
(api.ragextract.com/v2) to turn documents into a
cited table — upload PDFs, Office files and images
to a workspace, define a table whose columns are
questions with typed answers, run it, and read
back each answer with the page it was read from.
Use when the task involves Ragextract, extracting
structured fields from a pile of documents, or
building a client, script or pipeline against
api.ragextract.com. Also covers semantic search
over a workspace's pages.
---
# Ragextract API
…Install it
Put the file in a directory your agent scans for skills. For Claude Code that is a folder per skill under .claude/skills/ in a project, or ~/.claude/skills/ for every project on the machine — the folder name is yours, the file inside must be called SKILL.md.
# Project-scoped — committed with the repo
mkdir -p .claude/skills/ragextract-api
curl -fsSL https://ragextract.com/SKILL.md \
-o .claude/skills/ragextract-api/SKILL.md
# Or personal — every project on this machine
mkdir -p ~/.claude/skills/ragextract-api
curl -fsSL https://ragextract.com/SKILL.md \
-o ~/.claude/skills/ragextract-api/SKILL.mdThose paths are Claude Code’s. Any agent that loads instructions from a file works the same way — the artifact is markdown with frontmatter and nothing about it is specific to one tool. If yours has no skills directory, paste the body into whatever it does read: a system prompt, a rules file, the context of the one task at hand.
There is no package to install and nothing to authenticate. Ragextract has no integration with any agent; it publishes a file agents already know how to read. The full text is at ragextract.com/SKILL.md if you would rather read it before running a curl that writes into your home directory.
What it carries
The subset a client gets wrong, not a copy of the reference. Roughly in the order an agent needs it:
- The base URL, the header, and what a key reaches — including that there is no sandbox host, so a test workspace is charged like any other.
- The response envelope and the two error shapes, with the pattern for checking the status before parsing the body, because one of the two is not JSON.
- Build order — workspace, file, job, table, columns, rows, preview, run, cells — as one block of curl the agent can adapt rather than derive.
- The eight output types, and which column edits mark answers stale.
- What spends credits, which of the two paths is the surprising one, and the instruction to price a run with run preview before starting it.
- Polling, since there are no webhooks: both status vocabularies, the terminal states, and the two nullable-status traps.
- The five warts — spelled out as things not to tidy away, because an agent that “corrects”
datasetIdtofileIdwrites a client that readsundefined. - What the API cannot do — no webhooks, no account endpoints, no Python client — which is most of what stops an agent building the wrong thing and reporting success. It also names the JavaScript SDK and the version to pin, so an agent writing TypeScript reaches for
@subworkflow/ragextractrather than hand-rolling forty lines offetch.
Before you point one at a live workspace
The skill tells an agent how to spend credits. That is the point of it, and it is worth being deliberate about the first time:
- Scope the key. A key with no scopes inherits everything its owner can reach. Granting it one workspace turns it into an allow-list confined to that workspace — see Authentication. Scopes only ever subtract, so this is free to do and awkward to undo later.
- Give it its own workspace to start in. Workspaces are free to create and cost nothing empty.
- Read the run preview yourself the first few times. It is free, exact, and the number it returns is the number that will be charged.
- Put the key in the environment, not in a file the agent edits. The skill reads
RAGEXTRACT_API_KEYand says so; a key committed to a repo is a key to rotate.
Keys cannot be created at the moment — sign-in to app.ragextract.com is temporarily blocked, so there is nowhere to mint one. The API and this file are both accurate against what is running; only the door to the credential is shut.
It is a copy, and copies drift
The file is written from the same sources as the reference: the endpoint list and the parameter contract in ragextract-api. It carries a Provenance section naming the contract snapshot and the date it was last checked against it, so an agent holding a stale copy can be told how stale.
Where the two disagree, the reference is newer. Re-fetch the file rather than reconciling it by hand — it is one curl and it overwrites cleanly.
What it is not
- Not an SDK, and not a replacement for one. It contains no code to import; it is instructions, which is why it needs no release to stay in step with the endpoints. For JavaScript it points at the real client — see the overview — and for every other language it is the HTTP calls themselves.
- Not a way to give an agent access to your data. A skill is text; it holds no credential and reaches nothing. If the goal is to let Claude or another LLM client read workspaces, tables and answers directly, that is the MCP server — read-only, connected by signing in, gated per organisation. The two solve opposite problems: this one is for an agent that writes a client, that one is for an agent that is the client.
- Not a substitute for the reference. It covers the shape of every resource and the exact parameters of the calls in the walkthrough; for the full parameter list of a given endpoint, its page here is the source and the skill says so.