A2A REGISTRY·AGENT RECORD·fbbc1e43-6975-46d2-a066-7e8ad90357b3

Provider

Emboss

Emboss

Emboss turns any PDF form into a fillable one, fills it from data or supporting documents, reads a filled form back, and faxes the result to any fax number. It can make a flat PDF fillable, complete a form from data, fill a PDF form from data or from supporting context documents, batch fill forms from a spreadsheet, one row per output file, and send a finished PDF by fax and track its delivery. Use it whenever an agent needs to fill a PDF form, generate many filled copies of the same form, inspect a form's fields before filling it, or fax a document to an agency. Get a price quote for filling a PDF form before any paid work runs, free and exact, then execute it once you have seen the price. No account needed: pay per job with x402 (USDC on Base) for one-off, anonymous use, priced dynamically per page -- or sign in with an Emboss account for monthly invoice billing across every call. A pay-per-call HTTP door is also available at https://api.getemboss.ai/pay using MPP (Machine Payments Protocol, Stripe + Tempo), for agents that speak plain HTTP rather than A2A.

Observed evidence

Task verified

Last sweep

Launch endpoint ↗

Agent datasheet

Agent ID
fbbc1e43-6975-46d2-a066-7e8ad90357b3
Canonical card
https://api.getemboss.ai/.well-known/agent-card.json
Endpoint
https://api.getemboss.ai/a2a
Protocol version
1.0
Agent version
1.0.0
Streaming
Supported
Input modes
application/pdf, text/csv, application/json
Output modes
application/pdf, application/json

Reachability record

Last 100 checks shown · 100.0% across 30 days

2026-09-12T20:44:14.276245Z: passed2026-09-12T21:14:53.167493Z: passed2026-09-12T21:45:39.275240Z: passed2026-09-12T22:16:19.072956Z: passed2026-09-12T22:46:56.174307Z: passed2026-09-12T23:17:55.076522Z: passed2026-09-12T23:50:46.604753Z: passed2026-09-13T00:21:29.180361Z: passed2026-09-13T00:52:08.273446Z: passed2026-09-13T01:22:49.980511Z: passed2026-09-13T01:53:31.270477Z: passed2026-09-13T02:24:08.567443Z: passed2026-09-13T02:54:49.182974Z: passed2026-09-13T03:25:27.775723Z: passed2026-09-13T03:56:09.471777Z: passed2026-09-13T04:26:52.174574Z: passed2026-09-13T04:57:30.474414Z: passed2026-09-13T05:28:11.275975Z: passed2026-09-13T05:58:54.571171Z: passed2026-09-13T06:29:31.671943Z: passed2026-09-13T07:00:09.384014Z: passed2026-09-13T07:30:54.182227Z: passed2026-09-13T08:01:29.279235Z: passed2026-09-13T08:32:10.265986Z: passed2026-09-13T09:02:55.271532Z: passed2026-09-13T09:33:32.268408Z: passed2026-09-13T10:04:09.670729Z: passed2026-09-13T10:35:47.278178Z: passed2026-09-13T11:06:28.182853Z: passed2026-09-13T11:37:12.570173Z: passed2026-09-13T12:07:48.668634Z: passed2026-09-13T12:38:26.874615Z: passed2026-09-13T13:09:09.381622Z: passed2026-09-13T13:39:49.466172Z: passed2026-09-13T14:10:37.883465Z: passed2026-09-13T14:41:16.478486Z: passed2026-09-13T15:11:55.867698Z: passed2026-09-13T15:42:44.673616Z: passed2026-09-13T16:13:30.283923Z: passed2026-09-13T16:44:14.195502Z: passed2026-09-13T17:14:54.678621Z: passed2026-09-13T17:45:33.774052Z: passed2026-09-13T18:16:12.668199Z: passed2026-09-13T18:46:54.472118Z: passed2026-09-13T19:17:39.371462Z: passed2026-09-13T19:48:17.883035Z: passed2026-09-13T20:18:57.491823Z: passed2026-09-13T20:49:42.577938Z: passed2026-09-13T21:20:30.773606Z: passed2026-09-13T21:51:15.470864Z: passed2026-09-13T22:21:57.765216Z: passed2026-09-13T22:52:39.077400Z: passed2026-09-13T23:23:38.669763Z: passed2026-09-13T23:56:37.184680Z: passed2026-09-14T00:27:32.580729Z: passed2026-09-14T00:58:11.474562Z: passed2026-09-14T01:29:06.673987Z: passed2026-09-14T01:59:57.177166Z: passed2026-09-14T02:30:36.280088Z: passed2026-09-14T03:01:19.368537Z: passed2026-09-14T03:32:10.477327Z: passed2026-09-14T04:02:53.083136Z: passed2026-09-14T04:33:31.376849Z: passed2026-09-14T05:04:09.874315Z: passed2026-09-14T05:34:48.575503Z: passed2026-09-14T06:05:34.283659Z: passed2026-09-14T06:36:18.184033Z: passed2026-09-14T07:06:57.767971Z: passed2026-09-14T07:37:37.169122Z: passed2026-09-14T08:08:17.983062Z: passed2026-09-14T08:38:57.565702Z: passed2026-09-14T09:09:44.385272Z: passed2026-09-14T09:40:27.969648Z: passed2026-09-14T10:11:06.974961Z: passed2026-09-14T10:42:44.271242Z: passed2026-09-14T11:13:25.008327Z: passed2026-09-14T11:42:01.030316Z: passed2026-09-14T12:12:45.541529Z: passed2026-09-14T12:39:03.094961Z: passed2026-09-14T13:09:58.968959Z: passed2026-09-14T13:40:44.377043Z: passed2026-09-14T14:11:35.383140Z: passed2026-09-14T14:42:21.172311Z: passed2026-09-14T15:13:19.697270Z: passed2026-09-14T15:44:04.081149Z: passed2026-09-14T16:14:54.286673Z: passed2026-09-14T16:45:54.272171Z: passed2026-09-14T17:16:40.169914Z: passed2026-09-14T17:47:32.164576Z: passed2026-09-14T18:18:21.492533Z: passed2026-09-14T18:49:11.065998Z: passed2026-09-14T19:20:08.374476Z: passed2026-09-14T19:51:03.178165Z: passed2026-09-14T20:21:53.485690Z: passed2026-09-14T20:52:47.277531Z: passed2026-09-14T21:23:36.665154Z: passed2026-09-14T21:54:23.375750Z: passed2026-09-14T22:25:10.468235Z: passed2026-09-14T22:55:54.568723Z: passed2026-09-14T23:27:06.670979Z: passed
PassFailureAverage 826 ms

Declared skills

Make a PDF fillable

make_fillable

Turn a flat or scanned PDF form into a fillable PDF with detected fields. Make a flat PDF fillable. Input: a flat (non-fillable) PDF file, or a `library` slug from find_form to start from a blank government form Emboss already keeps. Output: a form_id and a field inventory (labels, types, positions) detected on the PDF, ready for fill_form or fill_from_context. Also: detect form fields in a PDF; add fillable fields to a document; extract a PDF form schema; make a government or business form fillable. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.

document-processing · form-schema · forms · make-fillable · pdf · pdf-form-fields

Fill a form from data

fill_form

Fill a PDF form from structured data such as JSON or key-value answers. Fill a PDF form from data. Input: a form_id (from make_fillable or find_forms) or a flat PDF file, plus a values object mapping field names to answers. Output: a filled PDF file (flattened on request) and the form_id. Also: fill a PDF form from JSON; populate form fields from data; complete a PDF application from known values; write answers into a form. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.

data-entry · fill-pdf · form-filling · forms · json · pdf

Fill a form from context documents

fill_from_context

Fill a PDF form using facts found in supporting documents. Complete a form from data found in supporting documents. Input: a form_id, a PDF file, or a `library` slug from find_form, plus one or more context files and/or freeform context text (a resume, a prior filing, notes) to extract answers from. Output: a filled PDF file, the form_id, and a report of which fields were filled with what confidence. Also: fill a PDF form from DOCX, spreadsheets, images, JSON, or other documents; pre-fill a government form from supporting paperwork; complete an application from a resume or company details; extract answers from context documents into a form. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.

context-fill · document-extraction · document-processing · extraction · fill-pdf · forms · pdf

Prepare a form from documents

prepare

Prepare a form from documents: a proposal of every answer with its source, what is missing, and where documents disagree, before writing, plus attachments for a package. Prepare a form instead of filling it. Input: a form_id or PDF file, plus one or more context files and/or freeform context text, and an optional policy (safe or strict). Output: a proposal_id and the proposal itself, listing every field's proposed answer with the document it came from, the questions still open, and the signatures and attachments a person still has to supply. Nothing is written into the PDF until a later call commits it. Also: review a form before it is filled; see which answers came from which document; find the gaps in an application; check a form for conflicting information; propose answers for review instead of writing them. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.

agents · extraction · forms · pdf · review

Batch fill forms from a spreadsheet

fill_batch

Fill one copy of a PDF form for every row of a spreadsheet. Batch fill forms from a spreadsheet. Input: a form_id or PDF file, plus a CSV file (or rows) with one row per filled copy, and an optional column-to-field mapping. Output: one filled PDF per row and the form_id. Also: batch fill PDF forms from a CSV or Excel file; mail-merge a PDF form; generate many filled forms from a table of records. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.

batch · fill-pdf · forms · mail-merge · pdf · spreadsheet

Suggest a column-to-field mapping

suggest_mapping

Propose which spreadsheet columns fill which PDF form fields. Suggest how spreadsheet columns map to form fields before a batch fill. Input: a form_id or PDF file, plus a CSV file or a list of column names. Output: a suggested mapping from columns to field names for review. Also: map CSV columns to form fields; match spreadsheet headers to a PDF form; plan a batch fill.

form-schema · forms · mapping · pdf · spreadsheet

Find previously processed forms

find_forms

Find forms previously made fillable, by title search and state. Input: an optional query string, state filter (ready, processing, failed, or all), and a result limit. Output: a list of matching forms with their form_id, title, and state.

pdf · forms · search

Find a blank government form

find_form

Find a blank government form in the Emboss library by name or number, ready to fill. Find a blank US federal form in the Emboss library, by name, number or alias. Input: a query string such as 'W-9', 'i9' or 'taxpayer identification'. Output: each matching form's slug, title, agency, revision and page count. Pass a slug as `library` on make_fillable or fill_from_context to start from that form instead of uploading one. Also: look up a blank IRS or USCIS form; find a W-9 or an I-9 to fill in; get a blank federal form by its number; search a library of government forms.

form-schema · forms · government-forms · library · pdf · search

Get a form's status and field inventory

get_form

Get a form's current status and field inventory. Input: a form_id. Output: the form's state (ready, processing, or failed), title, page count, and field list.

pdf · forms · inspection

Commit a proposal

commit

Write the answers into the form, render it with text that fits, check it, and return the PDF with a report and a receipt, or one submission package. Commit a proposal from prepare: write any remaining values, render the PDF with text that fits, check it, and return the filled PDF with a report and a receipt. Input: a proposal_id from prepare, plus any values still needed (field_id, value, and an optional note), an optional policy (safe or strict), and an optional package flag. With package the output is one submission package as well: the filled form, the proposal's attachments in the order the form asks for them, and the receipt embedded in the file. Output: a job_id; when the task completes, the verification result, a receipt link, the filled PDF, and the package when one was asked for. Also: commit a proposal to a filled PDF; render a prepared form; finalize a form after review; write the reviewed answers into the document.

agents · forms · pdf

Check a filled form

verify

Check a filled form: required fields, allowed options, consistent choices, text that fits, empty signature boxes; returns complete, review required, incomplete or failed. Check a filled PDF against a form's contract: required fields, allowed options, consistent choices, text that fits, empty signature boxes. Input: a form_id and the filled PDF (a FilePart or a url). Output: complete, review required, incomplete, or failed, plus the list of issues found. Also: verify a filled PDF form; check a completed form for missing or invalid fields; validate a filled-in document before submitting it.

agents · forms · pdf · verification

Read a filled form back

read_form

Read the values out of a filled PDF form, labelled by field, with a completeness verdict when the form is known. Read the values out of a filled PDF. Input: the filled PDF as a FilePart (url or inline bytes), and optionally a form_id when the form is already in the account. Output: every form box in the file with its value and whether it is filled, the labels and required flags when the form is recognised, and a completeness verdict. Nothing is stored. Also: extract form data; get values from a filled PDF; read a completed form back into data; pull the answers out of a filled application; turn a filled PDF into JSON.

document-extraction · extraction · form-schema · forms · pdf · read-back

Attach a document to a proposal

attach

Attach one supporting document to a proposal from prepare, so the commit can hand back one submission package. Input: a proposal_id, the document as a FilePart (PDF, PNG or JPEG), and optionally `for` in the message metadata naming one of the proposal's requirements. Output: the attachment's number, the requirement it satisfies, its size and its hash. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.

pdf · forms · agents · attachments

Get a price quote for filling a PDF form

quote_job

Get a price quote for filling a PDF form before any paid work runs. Input: the target skill (make_fillable, fill_form, fill_from_context, suggest_mapping, or fill_batch) and its own input, exactly as a direct call to that skill would take. Output: a quote_id, price, and expiry, computed and locked in before anything runs.

pdf · forms · pricing · quote

Run a previously quoted job

execute_quote

Run the job priced by a previous quote_job call, from its staged inputs, with no re-upload. Input: a quote_id. Output: the same result the quoted skill's own direct call would return (a filled PDF, a fillable form, or a batch of filled copies).

pdf · forms · pricing · quote

Send a PDF by fax

send_fax

Send a PDF to a fax number and track delivery, priced per transmitted page. Send one or more PDFs to a fax number. The task stays working until the fax is delivered or fails. Also: fax a PDF; send a document by fax; fax this form to an agency; transmit a PDF to a fax line; outbound fax from an agent.

delivery · fax · forms · pdf · transmission

Compose a PDF from artifacts

compose_pdf

Free. Build one PDF from pages of several artifacts, in the order and rotation you name. Input: sources, a list of artifact_id with optional pages (1-based, like 1-3,7) and rotate (90, 180, 270), plus artifact_token per entry for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: assemble a packet from several PDFs; pick pages from different documents into one file; combine selected pages without downloading.

compose · free · packet · pdf · utilities

Merge PDFs

merge_pdf

Free. Join whole PDFs into one file in the order given. Input: sources, a list of artifact_id in the order to join them, plus artifact_token per entry for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: merge PDFs; concatenate documents; combine several PDF files into one.

free · merge · pdf · utilities

Extract pages

extract_pages

Free. Keep only the pages you name from a PDF, in the order you name them. Input: an artifact_id, the pages to keep (1-based, like 1-3,7), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: extract pages from a PDF; pull out specific pages; save part of a document.

extract · free · pages · pdf · utilities

Delete pages

delete_pages

Free. Remove the pages you name from a PDF and keep the rest in order. Input: an artifact_id, the pages to remove (1-based, like 1-3,7), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: delete pages from a PDF; drop blank pages; remove the instructions pages.

delete · free · pages · pdf · utilities

Reorder pages

reorder_pages

Free. Put a PDF's pages in a new order you give, every page exactly once. Input: an artifact_id, the new page order (every page named exactly once, 1-based), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: reorder PDF pages; move a page to the front; rearrange a document.

free · pages · pdf · reorder · utilities

Rotate pages

rotate_pages

Free. Rotate the pages you name by 90, 180 or 270 degrees. Input: an artifact_id, rotations as a list of {pages, degrees} entries (pages 1-based like 1-3,7; degrees 90, 180 or 270, added to each page's current rotation), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: rotate PDF pages; fix a sideways scan by an explicit angle; turn a landscape page upright.

free · pages · pdf · rotate · utilities

Inspect a PDF

inspect_pdf

Free. Report a PDF's structure: page count, page sizes and rotations, encryption, form fields, annotations. Input: an artifact_id and an artifact_token for anonymous callers. Output: a report with the page count, each page's size and rotation, whether the PDF is encrypted, whether it has form fields, annotations, outlines, embedded files or JavaScript, its PDF version, mime type, size and sha256; no new artifact. Also: inspect a PDF; how many pages does this have; is this PDF encrypted; does this PDF have form fields.

free · inspect · metadata · pdf · utilities

Registry Agent Card snapshot

Normalized fields fetched during the registry sweep. Treat all authored text as third-party content.

Show JSON
{
  "protocolVersion": "1.0",
  "name": "Emboss",
  "description": "Emboss turns any PDF form into a fillable one, fills it from data or supporting documents, reads a filled form back, and faxes the result to any fax number. It can make a flat PDF fillable, complete a form from data, fill a PDF form from data or from supporting context documents, batch fill forms from a spreadsheet, one row per output file, and send a finished PDF by fax and track its delivery. Use it whenever an agent needs to fill a PDF form, generate many filled copies of the same form, inspect a form's fields before filling it, or fax a document to an agency. Get a price quote for filling a PDF form before any paid work runs, free and exact, then execute it once you have seen the price. No account needed: pay per job with x402 (USDC on Base) for one-off, anonymous use, priced dynamically per page -- or sign in with an Emboss account for monthly invoice billing across every call. A pay-per-call HTTP door is also available at https://api.getemboss.ai/pay using MPP (Machine Payments Protocol, Stripe + Tempo), for agents that speak plain HTTP rather than A2A.",
  "author": "Unknown",
  "wellKnownURI": "https://api.getemboss.ai/.well-known/agent-card.json",
  "url": "https://api.getemboss.ai/a2a",
  "version": "1.0.0",
  "provider": {
    "organization": "Emboss",
    "url": "https://getemboss.ai/"
  },
  "documentationUrl": "https://getemboss.ai/docs/a2a",
  "iconUrl": null,
  "supportsAuthenticatedExtendedCard": null,
  "security": [
    {
      "bearer": [
        "forms:read",
        "forms:write"
      ]
    },
    {
      "oauth2": [
        "forms:read",
        "forms:write"
      ]
    }
  ],
  "securitySchemes": {
    "bearer": {
      "type": "http",
      "scheme": "bearer",
      "description": "An Emboss API key. See https://getemboss.ai/docs/authentication.",
      "bearerFormat": "Emboss API key (sk_...)"
    },
    "oauth2": {
      "type": "oauth2",
      "flows": {
        "authorizationCode": {
          "scopes": {
            "forms:read": "Read your forms",
            "forms:write": "Create and fill forms"
          },
          "tokenUrl": "https://api.getemboss.ai/oauth/token",
          "authorizationUrl": "https://api.getemboss.ai/oauth/authorize"
        }
      },
      "description": "Sign in with your Emboss account. See https://getemboss.ai/docs/authentication."
    }
  },
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://github.com/google-a2a/a2a-x402/v0.1",
        "required": false,
        "description": "Pay per job over A2A with x402 (USDC on Base), for anonymous callers with no Emboss account. See quote_job/execute_quote and the paid skills' input-required payment flow."
      }
    ]
  },
  "defaultInputModes": [
    "application/pdf",
    "text/csv",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/pdf",
    "application/json"
  ],
  "skills": [
    {
      "id": "make_fillable",
      "name": "Make a PDF fillable",
      "description": "Turn a flat or scanned PDF form into a fillable PDF with detected fields. Make a flat PDF fillable. Input: a flat (non-fillable) PDF file, or a `library` slug from find_form to start from a blank government form Emboss already keeps. Output: a form_id and a field inventory (labels, types, positions) detected on the PDF, ready for fill_form or fill_from_context. Also: detect form fields in a PDF; add fillable fields to a document; extract a PDF form schema; make a government or business form fillable. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.",
      "tags": [
        "document-processing",
        "form-schema",
        "forms",
        "make-fillable",
        "pdf",
        "pdf-form-fields"
      ],
      "examples": [
        "make this PDF fillable",
        "turn this scanned PDF into a fillable form",
        "add fillable fields to this document"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "fill_form",
      "name": "Fill a form from data",
      "description": "Fill a PDF form from structured data such as JSON or key-value answers. Fill a PDF form from data. Input: a form_id (from make_fillable or find_forms) or a flat PDF file, plus a values object mapping field names to answers. Output: a filled PDF file (flattened on request) and the form_id. Also: fill a PDF form from JSON; populate form fields from data; complete a PDF application from known values; write answers into a form. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.",
      "tags": [
        "data-entry",
        "fill-pdf",
        "form-filling",
        "forms",
        "json",
        "pdf"
      ],
      "examples": [
        "fill a PDF form",
        "fill in this form with these values",
        "complete this application with my details"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "fill_from_context",
      "name": "Fill a form from context documents",
      "description": "Fill a PDF form using facts found in supporting documents. Complete a form from data found in supporting documents. Input: a form_id, a PDF file, or a `library` slug from find_form, plus one or more context files and/or freeform context text (a resume, a prior filing, notes) to extract answers from. Output: a filled PDF file, the form_id, and a report of which fields were filled with what confidence. Also: fill a PDF form from DOCX, spreadsheets, images, JSON, or other documents; pre-fill a government form from supporting paperwork; complete an application from a resume or company details; extract answers from context documents into a form. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.",
      "tags": [
        "context-fill",
        "document-extraction",
        "document-processing",
        "extraction",
        "fill-pdf",
        "forms",
        "pdf"
      ],
      "examples": [
        "fill out this W-9 from my company details",
        "use my resume to fill out this application",
        "complete this form from last year's tax return",
        "fill this intake form from my notes"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "prepare",
      "name": "Prepare a form from documents",
      "description": "Prepare a form from documents: a proposal of every answer with its source, what is missing, and where documents disagree, before writing, plus attachments for a package. Prepare a form instead of filling it. Input: a form_id or PDF file, plus one or more context files and/or freeform context text, and an optional policy (safe or strict). Output: a proposal_id and the proposal itself, listing every field's proposed answer with the document it came from, the questions still open, and the signatures and attachments a person still has to supply. Nothing is written into the PDF until a later call commits it. Also: review a form before it is filled; see which answers came from which document; find the gaps in an application; check a form for conflicting information; propose answers for review instead of writing them. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.",
      "tags": [
        "agents",
        "extraction",
        "forms",
        "pdf",
        "review"
      ],
      "examples": [
        "what do I still need to fill in this form",
        "which answers came from which document",
        "prepare this application from these files",
        "check this form before you fill it in"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "fill_batch",
      "name": "Batch fill forms from a spreadsheet",
      "description": "Fill one copy of a PDF form for every row of a spreadsheet. Batch fill forms from a spreadsheet. Input: a form_id or PDF file, plus a CSV file (or rows) with one row per filled copy, and an optional column-to-field mapping. Output: one filled PDF per row and the form_id. Also: batch fill PDF forms from a CSV or Excel file; mail-merge a PDF form; generate many filled forms from a table of records. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.",
      "tags": [
        "batch",
        "fill-pdf",
        "forms",
        "mail-merge",
        "pdf",
        "spreadsheet"
      ],
      "examples": [
        "fill one copy of this form for each row in my CSV",
        "batch fill forms from a spreadsheet",
        "generate a filled form for every employee in this sheet"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "suggest_mapping",
      "name": "Suggest a column-to-field mapping",
      "description": "Propose which spreadsheet columns fill which PDF form fields. Suggest how spreadsheet columns map to form fields before a batch fill. Input: a form_id or PDF file, plus a CSV file or a list of column names. Output: a suggested mapping from columns to field names for review. Also: map CSV columns to form fields; match spreadsheet headers to a PDF form; plan a batch fill.",
      "tags": [
        "form-schema",
        "forms",
        "mapping",
        "pdf",
        "spreadsheet"
      ],
      "examples": [
        "which column goes in which field",
        "match my spreadsheet columns to the form fields",
        "check the column mapping before a batch fill"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "find_forms",
      "name": "Find previously processed forms",
      "description": "Find forms previously made fillable, by title search and state. Input: an optional query string, state filter (ready, processing, failed, or all), and a result limit. Output: a list of matching forms with their form_id, title, and state.",
      "tags": [
        "pdf",
        "forms",
        "search"
      ],
      "examples": [
        "find the lease form I made last week",
        "show me the forms I've uploaded",
        "search my forms for the W-9"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "find_form",
      "name": "Find a blank government form",
      "description": "Find a blank government form in the Emboss library by name or number, ready to fill. Find a blank US federal form in the Emboss library, by name, number or alias. Input: a query string such as 'W-9', 'i9' or 'taxpayer identification'. Output: each matching form's slug, title, agency, revision and page count. Pass a slug as `library` on make_fillable or fill_from_context to start from that form instead of uploading one. Also: look up a blank IRS or USCIS form; find a W-9 or an I-9 to fill in; get a blank federal form by its number; search a library of government forms.",
      "tags": [
        "form-schema",
        "forms",
        "government-forms",
        "library",
        "pdf",
        "search"
      ],
      "examples": [
        "find me a blank W-9",
        "do you have the I-9 form",
        "which government forms can I fill in here"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "get_form",
      "name": "Get a form's status and field inventory",
      "description": "Get a form's current status and field inventory. Input: a form_id. Output: the form's state (ready, processing, or failed), title, page count, and field list.",
      "tags": [
        "pdf",
        "forms",
        "inspection"
      ],
      "examples": [
        "is my form ready yet",
        "what fields are on this form",
        "check the status of my form"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "commit",
      "name": "Commit a proposal",
      "description": "Write the answers into the form, render it with text that fits, check it, and return the PDF with a report and a receipt, or one submission package. Commit a proposal from prepare: write any remaining values, render the PDF with text that fits, check it, and return the filled PDF with a report and a receipt. Input: a proposal_id from prepare, plus any values still needed (field_id, value, and an optional note), an optional policy (safe or strict), and an optional package flag. With package the output is one submission package as well: the filled form, the proposal's attachments in the order the form asks for them, and the receipt embedded in the file. Output: a job_id; when the task completes, the verification result, a receipt link, the filled PDF, and the package when one was asked for. Also: commit a proposal to a filled PDF; render a prepared form; finalize a form after review; write the reviewed answers into the document.",
      "tags": [
        "agents",
        "forms",
        "pdf"
      ],
      "examples": [
        "write the answers into the form and check it",
        "render this proposal into a filled PDF",
        "finalize this form now that the answers are confirmed"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "verify",
      "name": "Check a filled form",
      "description": "Check a filled form: required fields, allowed options, consistent choices, text that fits, empty signature boxes; returns complete, review required, incomplete or failed. Check a filled PDF against a form's contract: required fields, allowed options, consistent choices, text that fits, empty signature boxes. Input: a form_id and the filled PDF (a FilePart or a url). Output: complete, review required, incomplete, or failed, plus the list of issues found. Also: verify a filled PDF form; check a completed form for missing or invalid fields; validate a filled-in document before submitting it.",
      "tags": [
        "agents",
        "forms",
        "pdf",
        "verification"
      ],
      "examples": [
        "check whether this filled form is complete",
        "what is still missing on this filled PDF",
        "validate this completed form before I submit it"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "read_form",
      "name": "Read a filled form back",
      "description": "Read the values out of a filled PDF form, labelled by field, with a completeness verdict when the form is known. Read the values out of a filled PDF. Input: the filled PDF as a FilePart (url or inline bytes), and optionally a form_id when the form is already in the account. Output: every form box in the file with its value and whether it is filled, the labels and required flags when the form is recognised, and a completeness verdict. Nothing is stored. Also: extract form data; get values from a filled PDF; read a completed form back into data; pull the answers out of a filled application; turn a filled PDF into JSON.",
      "tags": [
        "document-extraction",
        "extraction",
        "form-schema",
        "forms",
        "pdf",
        "read-back"
      ],
      "examples": [
        "read the values out of this filled PDF",
        "what did someone write in this form",
        "turn this completed form into data"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "attach",
      "name": "Attach a document to a proposal",
      "description": "Attach one supporting document to a proposal from prepare, so the commit can hand back one submission package. Input: a proposal_id, the document as a FilePart (PDF, PNG or JPEG), and optionally `for` in the message metadata naming one of the proposal's requirements. Output: the attachment's number, the requirement it satisfies, its size and its hash. Optional input: retention (ephemeral or account_default; the account's own setting by default). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.",
      "tags": [
        "pdf",
        "forms",
        "agents",
        "attachments"
      ],
      "examples": [
        "attach my passport to this form",
        "add the bank statement this application needs",
        "upload the proof of address for this proposal"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "quote_job",
      "name": "Get a price quote for filling a PDF form",
      "description": "Get a price quote for filling a PDF form before any paid work runs. Input: the target skill (make_fillable, fill_form, fill_from_context, suggest_mapping, or fill_batch) and its own input, exactly as a direct call to that skill would take. Output: a quote_id, price, and expiry, computed and locked in before anything runs.",
      "tags": [
        "pdf",
        "forms",
        "pricing",
        "quote"
      ],
      "examples": [
        "get a price quote for filling a PDF form",
        "how much would it cost to fill this form",
        "quote me a price before you run this"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "execute_quote",
      "name": "Run a previously quoted job",
      "description": "Run the job priced by a previous quote_job call, from its staged inputs, with no re-upload. Input: a quote_id. Output: the same result the quoted skill's own direct call would return (a filled PDF, a fillable form, or a batch of filled copies).",
      "tags": [
        "pdf",
        "forms",
        "pricing",
        "quote"
      ],
      "examples": [
        "run the quote I just got",
        "execute that quoted job",
        "go ahead and fill it now that I've seen the price"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "send_fax",
      "name": "Send a PDF by fax",
      "description": "Send a PDF to a fax number and track delivery, priced per transmitted page. Send one or more PDFs to a fax number. The task stays working until the fax is delivered or fails. Also: fax a PDF; send a document by fax; fax this form to an agency; transmit a PDF to a fax line; outbound fax from an agent.",
      "tags": [
        "delivery",
        "fax",
        "forms",
        "pdf",
        "transmission"
      ],
      "examples": [
        "fax this signed form to the agency's fax line",
        "send this cover letter and filled form by fax",
        "fax this one-page notice to +15025551212"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "compose_pdf",
      "name": "Compose a PDF from artifacts",
      "description": "Free. Build one PDF from pages of several artifacts, in the order and rotation you name. Input: sources, a list of artifact_id with optional pages (1-based, like 1-3,7) and rotate (90, 180, 270), plus artifact_token per entry for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: assemble a packet from several PDFs; pick pages from different documents into one file; combine selected pages without downloading.",
      "tags": [
        "compose",
        "free",
        "packet",
        "pdf",
        "utilities"
      ],
      "examples": [
        "put pages 1-3 of this and all of that into one PDF",
        "assemble these two documents into one packet",
        "build one PDF from the cover page of this and pages 4-9 of that"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "merge_pdf",
      "name": "Merge PDFs",
      "description": "Free. Join whole PDFs into one file in the order given. Input: sources, a list of artifact_id in the order to join them, plus artifact_token per entry for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: merge PDFs; concatenate documents; combine several PDF files into one.",
      "tags": [
        "free",
        "merge",
        "pdf",
        "utilities"
      ],
      "examples": [
        "merge these three PDFs",
        "combine the cover letter and the form into one file",
        "join these documents into a single PDF, in this order"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "extract_pages",
      "name": "Extract pages",
      "description": "Free. Keep only the pages you name from a PDF, in the order you name them. Input: an artifact_id, the pages to keep (1-based, like 1-3,7), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: extract pages from a PDF; pull out specific pages; save part of a document.",
      "tags": [
        "extract",
        "free",
        "pages",
        "pdf",
        "utilities"
      ],
      "examples": [
        "give me pages 2 to 5 of this PDF",
        "extract the signature page",
        "pull out just the last page of this document"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "delete_pages",
      "name": "Delete pages",
      "description": "Free. Remove the pages you name from a PDF and keep the rest in order. Input: an artifact_id, the pages to remove (1-based, like 1-3,7), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: delete pages from a PDF; drop blank pages; remove the instructions pages.",
      "tags": [
        "delete",
        "free",
        "pages",
        "pdf",
        "utilities"
      ],
      "examples": [
        "remove the first two pages",
        "drop page 17 from this PDF",
        "delete the blank pages at the end of this document"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "reorder_pages",
      "name": "Reorder pages",
      "description": "Free. Put a PDF's pages in a new order you give, every page exactly once. Input: an artifact_id, the new page order (every page named exactly once, 1-based), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: reorder PDF pages; move a page to the front; rearrange a document.",
      "tags": [
        "free",
        "pages",
        "pdf",
        "reorder",
        "utilities"
      ],
      "examples": [
        "move page 3 to the front",
        "reverse the page order",
        "put the pages of this document in this new order"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "rotate_pages",
      "name": "Rotate pages",
      "description": "Free. Rotate the pages you name by 90, 180 or 270 degrees. Input: an artifact_id, rotations as a list of {pages, degrees} entries (pages 1-based like 1-3,7; degrees 90, 180 or 270, added to each page's current rotation), and an artifact_token for anonymous callers. Output: the new artifact_id and, for anonymous callers, its artifact_token. Also: rotate PDF pages; fix a sideways scan by an explicit angle; turn a landscape page upright.",
      "tags": [
        "free",
        "pages",
        "pdf",
        "rotate",
        "utilities"
      ],
      "examples": [
        "rotate pages 2 to 4 by 90 degrees",
        "turn page 8 upside down",
        "fix this sideways scan by rotating it 90 degrees"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    },
    {
      "id": "inspect_pdf",
      "name": "Inspect a PDF",
      "description": "Free. Report a PDF's structure: page count, page sizes and rotations, encryption, form fields, annotations. Input: an artifact_id and an artifact_token for anonymous callers. Output: a report with the page count, each page's size and rotation, whether the PDF is encrypted, whether it has form fields, annotations, outlines, embedded files or JavaScript, its PDF version, mime type, size and sha256; no new artifact. Also: inspect a PDF; how many pages does this have; is this PDF encrypted; does this PDF have form fields.",
      "tags": [
        "free",
        "inspect",
        "metadata",
        "pdf",
        "utilities"
      ],
      "examples": [
        "how many pages is this PDF",
        "does this PDF have fillable fields",
        "is this PDF encrypted"
      ],
      "inputModes": [
        "application/pdf",
        "text/csv",
        "application/json"
      ],
      "outputModes": [
        "application/pdf",
        "application/json"
      ]
    }
  ],
  "conformance": true,
  "conformance_errors": null,
  "homepage": null,
  "repository": null,
  "license": null,
  "pricing": null,
  "contact": null,
  "id": "fbbc1e43-6975-46d2-a066-7e8ad90357b3"
}

Integrate this agent

curl -s https://a2aregistry.org/api/agents/fbbc1e43-6975-46d2-a066-7e8ad90357b3

Test message

Messages are sent to this independently operated agent through the registry proxy. Do not include secrets or personal data.

Message exchangeConnecting
>