Fetch item
fetchRead one item in full by id. Returns { id, title, text, url, view_url, edit_url, metadata }: text is a readable rendering, metadata the record without storage housekeeping. Every form, document and workflow carries two links for the user: view_url, the live public page people open (null for documents and workflows, which have no public page), and edit_url, where the user edits it in Paperform once signed in. url is view_url when there is one, else edit_url. A form also carries submissions_url and duplicate_url. Folders carry url alone, and rows from list with type "document" or "workflow" carry no links: fetch the id for them. A view (#preview, say) and a record inside an item (a submission, a run) carry url alone.
By type: • submission — every answer. • form — its settings and live state. Add "#fields" to the id for the question set (the keys submission answers use), "#source" or "#outline" for its source, "#preview" for a five-minute link that renders the draft in a browser (not submittable), or "#options" for the payment accounts and calendars that can be attached to it and where to connect new ones. • product, coupon — one of a form's products or coupons. • document — status, folder and each participant's signing state. Add "#download" to a completed document's id for a link to the signed PDF. • workflow — status (draft | live | paused, the Stepper editor's Draft, Live and Paused badges); has_unpublished_changes, whether the draft differs from the live version (a draft always exists once it has been published, so its presence says nothing; list rows leave it out, so fetch the workflow for it); live_version and draft_version, each a version number and validation state (not its steps), where version status active is the live version (the editor's "Active" in Version History), then draft, archived or publishing; is_component_library; and triggers (trigger_id for run_workflow). "#source" is its definition as editable text (the draft, else the live version; read get_help topic "workflow"), "#outline" its trigger/step/rule ids, "#samples" each node's saved example output in full, keyed by node id: what the editor's "Choose an example" and "Run test action" saved, what test_action and load_trigger_samples stored when given workflow and node, and what edit_source and create stored on their own (#source shows them trimmed under ::: outputs). • app — a workflow app: its actions and triggers (each trigger with the type a workflow trigger on it must carry), and the connections usable in the space, with the same visibility as list({ type: "connection" }). "#schema" is the app's full definition. Stepper's own apps (platform, ai, email, approvals, paperform, papersign) run on the space's platform connection, which fetch on the app returns under connections; list({ type: "connection" }) does not list it. • workflow_run — status, settled, and steps: each step's node, inputs (secrets redacted), output or error. While not settled it carries retry_after (seconds until it is worth reading again) and, for a step waiting on an approval or delay, waiting_on; a paused run carries a note on what resumes it. A run just started may answer visible: false with retry_after until it syncs. run_state.status is the editor's run badge: pending | running | sleeping (backing off before a retry) | paused | completed | failed | crashed | terminated (someone pressed Cancel on the run page). A paused run's pausedReason is not_enough_credits ("Insufficient Credits"), step_count_exceeded ("Step Limit Reached"), run_max_steps_exceeded ("Run Step Limit Reached"), workflow_paused ("Workflow Paused") or manual ("Manually Paused"). A step's status is trigger | success | error | waiting (an approval, delay or child run not back yet; the editor shows "loading..."). Resuming, pausing or cancelling a run is done on Stepper's run page, not here. • folder — the folder and what is in it.
• connection — an app connection: who it is shared with (shared_with, visibility as in list), whether the user owns it and can change that, and — only when the user owns it — used_by: each workflow the user can see that uses it, its space, and whether its live version does; used_elsewhere/live_elsewhere say workflows in spaces the user cannot see use it too (never named). Credentials are never returned.
Webhooks and partial submissions are read with list; their list rows are the full records.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"id": "<id>"
},
"name": "fetch"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An id exactly as search, list or fetch returned it. Ids are opaque — never build or edit one. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| url | No | ||
| text | No | ||
| title | No | ||
| edit_url | No | ||
| metadata | No | ||
| view_url | No |