{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "15140b9f130ad3c4d0e1f9da34192cfa735b0237f05adcf8789f9a84ac1cc60b",
      "before_hash": "715ef8070610688f6001622571f0da27e2e03712f8fecd46064a5f47d7fde83e",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "skill added",
            "kind": "SKILL_ADDED",
            "path": "skills[flatten_pdf]",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 1
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "d7fb291c6d21d7720a590c4086a24c6fe36e98fb5b0126af988c08005cd3b483",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-19T22:26:45Z",
      "previous_entry_sha256": "11fc811d1c9e38d5b8ff9657cdcb150c3dabfd6a467357ed3def011db3fd60cd",
      "receipt_id": "51d319c8-b441-51a1-9192-f61b62dec99c",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/51d319c8-b441-51a1-9192-f61b62dec99c",
      "sequence": 38743,
      "target_id": "obs_bff46a1ae53e2412e748b227",
      "target_kind": "A2A_CARD",
      "target_locator": "https://api.getemboss.ai/.well-known/agent-card.json"
    },
    {
      "after_hash": "715ef8070610688f6001622571f0da27e2e03712f8fecd46064a5f47d7fde83e",
      "before_hash": "a00a72db390789374507f6d26aa8896f6e49083ddb61bb407c883a058f185613",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[send_fax].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "04f8b1cfa2330ee0e44b10ae27cc92c627cf0804940b3ee312052f630ff7dfca",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-17T21:17:11Z",
      "previous_entry_sha256": "11b5ee4a9667708ce62f6db123c2cedd3c0d233ddd0b2b5440f712d126a817d0",
      "receipt_id": "88f2f0a8-8341-590a-a668-3dfbebc47206",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/88f2f0a8-8341-590a-a668-3dfbebc47206",
      "sequence": 34316,
      "target_id": "obs_bff46a1ae53e2412e748b227",
      "target_kind": "A2A_CARD",
      "target_locator": "https://api.getemboss.ai/.well-known/agent-card.json"
    },
    {
      "after_hash": "a00a72db390789374507f6d26aa8896f6e49083ddb61bb407c883a058f185613",
      "before_hash": "903d88cad35abd781ba0d4778b2e9f85b71f9e3a39d5f831d0b7a2483d8b546e",
      "diff": {
        "changes": [],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 0
        },
        "taxonomy_version": null,
        "total": 0,
        "truncated": false
      },
      "entry_sha256": "924c82914c5593107e5900f630762ea1ad7cb8250dda6312b552ed64eac4b357",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-13T18:58:33Z",
      "previous_entry_sha256": "c067cd6e77a9515c31645045821e401fb5326f009340ce18207e51f1f861e128",
      "receipt_id": "bc90ec76-1194-5a42-b20d-82860935127c",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/bc90ec76-1194-5a42-b20d-82860935127c",
      "sequence": 29147,
      "target_id": "obs_bff46a1ae53e2412e748b227",
      "target_kind": "A2A_CARD",
      "target_locator": "https://api.getemboss.ai/.well-known/agent-card.json"
    },
    {
      "after_hash": "903d88cad35abd781ba0d4778b2e9f85b71f9e3a39d5f831d0b7a2483d8b546e",
      "before_hash": "a16f36f1d500777380d737a08bd279f5858a8600be2c3799ac13b16e7319b535",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[attach].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[fill_batch].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[fill_form].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[fill_from_context].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[find_forms].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[make_fillable].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[prepare].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[quote_job].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[send_fax].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[suggest_mapping].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[verify].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "description changed",
            "kind": "DESCRIPTION_CHANGED",
            "path": "description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 12,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 12,
        "truncated": false
      },
      "entry_sha256": "d343677e89f7a80f9e0ad7d855575f6fdea4197013d9bc64c2db961629317304",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-12T18:26:22Z",
      "previous_entry_sha256": "83f7900fe14a0ec3ad818284dba2c1c0566b0d4133ed813c1f42559d67847e98",
      "receipt_id": "c760cdff-11b0-52d3-b2b6-89514232a229",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/c760cdff-11b0-52d3-b2b6-89514232a229",
      "sequence": 27084,
      "target_id": "obs_bff46a1ae53e2412e748b227",
      "target_kind": "A2A_CARD",
      "target_locator": "https://api.getemboss.ai/.well-known/agent-card.json"
    },
    {
      "after_hash": "a16f36f1d500777380d737a08bd279f5858a8600be2c3799ac13b16e7319b535",
      "before_hash": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "skill description changed",
            "kind": "SKILL_DESCRIPTION_CHANGED",
            "path": "skills[send_fax].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "0c0a23a85c4df08682ade895347f0d2e010a2246aff484b8f93f76f95fc353d0",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-11T17:57:08Z",
      "previous_entry_sha256": "0aed6836e3b683a8973b1da7398d827629fb3dff6773fd9157df7fbeaa2f3f8c",
      "receipt_id": "ce0114ee-54a7-51e7-9c32-578d3bc146d2",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/ce0114ee-54a7-51e7-9c32-578d3bc146d2",
      "sequence": 25255,
      "target_id": "obs_bff46a1ae53e2412e748b227",
      "target_kind": "A2A_CARD",
      "target_locator": "https://api.getemboss.ai/.well-known/agent-card.json"
    },
    {
      "after_hash": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "before_hash": "b894521a56a7f6e4de84f735a0189afb57bd9b48664eb4d5af8fff5fa0f64bd9",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "description changed",
            "kind": "DESCRIPTION_CHANGED",
            "path": "description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "e8a9ce46ce1e42d4935d0a830498e101c92b3a9d4a1ea6b3c487cfb262181000",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-03T08:49:41Z",
      "previous_entry_sha256": "f7e916d9866f2981c66a2686f7fe751abbfb10901344f52e9ec2a8ed957b3b9e",
      "receipt_id": "e526eecd-5228-511b-b54c-41c522c0a18b",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/e526eecd-5228-511b-b54c-41c522c0a18b",
      "sequence": 8067,
      "target_id": "obs_bff46a1ae53e2412e748b227",
      "target_kind": "A2A_CARD",
      "target_locator": "https://api.getemboss.ai/.well-known/agent-card.json"
    }
  ],
  "check_outcomes": {
    "ask": {
      "changed_since": "https://www.gaipagents.com/v1/free/observatory/changed-since?url=<endpoint>",
      "changes_and_reachability": "https://www.gaipagents.com/v1/free/changes/subscribe?url=<endpoint>",
      "conformance": "https://www.gaipagents.com/v1/free/conformance/check?url=<endpoint>"
    },
    "published": false,
    "why": "Outcomes of GAIP's own checks (whether the endpoint answered, HTTP status, response time, conformance findings) are given only to a caller who asks about the URL, never on a public page, list or feed. The same applies to every target."
  },
  "conformance": {
    "findings": "GIVEN_TO_CALLER_ONLY",
    "meaning": "The rule catalogue this manifest was read against at the observed time. The finding codes go only to a caller who checks the URL (check_outcomes.ask.conformance).",
    "observed_at_utc": "2026-10-20T22:58:49Z",
    "protocol": "A2A",
    "rule_catalogue_route": "/v1/free/knowledge/conformance-rules",
    "rule_catalogue_version": "1.0.0"
  },
  "corrections": {
    "contact": "https://www.gaipagents.com/contact",
    "exclusion": "https://www.gaipagents.com/v1/free/observatory/corrections/exclusion",
    "opt_out": "POST kind OPT_OUT to the route; the target is withdrawn from public view at once (a pause). The site's owner makes it permanent at https://www.gaipagents.com/v1/free/observatory/corrections/exclusion.",
    "queued_for_review": 0,
    "route": "https://www.gaipagents.com/v1/free/observatory/corrections"
  },
  "declared_derivations": {
    "data_appetite": null,
    "dependency_domains": [],
    "last_observed_at_utc": "2026-10-20T22:58:49Z",
    "meaning": "Derived by GAIP from what this agent declared, at the stated time: the categories of data its tools' input fields ask for (counts, by keyword rules gaip.data-appetite-rules.v1), the outside domains its declarations point to, and the operator as the agent itself publishes it. Facts about declarations, not an assessment of the agent or its operator.",
    "operator": {
      "as_published": "Emboss",
      "source_kind": "card_provider_organization"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-09-28T22:49:47Z",
    "manifest_sha256": "15140b9f130ad3c4d0e1f9da34192cfa735b0237f05adcf8789f9a84ac1cc60b",
    "observed_at_utc": "2026-10-20T22:58:49Z"
  },
  "metadata_signals": {
    "meaning": "Pattern rules are published only as aggregate rates across all observed targets (see the summary), never per party. GAIP issues no overall verdict and does not rank parties.",
    "overall_verdict": null,
    "per_target_results": null,
    "published": "AGGREGATE_ONLY_IN_SUMMARY",
    "rules": [
      {
        "rationale": "Zero-width, bidirectional-control and Unicode tag characters are not visible to a human reader but are read by language models. GAIP reports whether any occur; many have ordinary uses.",
        "rule_id": "OBS-SIG-001",
        "title": "Invisible or bidirectional-control Unicode characters in names or descriptions"
      },
      {
        "rationale": "Tool and skill descriptions are read by models. GAIP reports whether a description contains phrases shaped like instructions to a model (the patterns in GAIP's public conformance rule catalogue, plus the phrases listed in the Observatory method). Such phrases can be benign.",
        "rule_id": "OBS-SIG-002",
        "title": "Instruction-like text in descriptions"
      },
      {
        "rationale": "When a description refers to a tool name that only a different observed server publishes, a model using both servers may connect the two. GAIP reports whether such a reference occurs; shared names are common and often coincidental.",
        "rule_id": "OBS-SIG-003",
        "title": "Description names a tool published by a different observed server"
      },
      {
        "rationale": "Declared OAuth scopes whose names contain wildcard or whole-account wording (*, all, admin, root, full) request wide access by name. GAIP reports whether such a scope name is declared; it does not know what the scope grants.",
        "rule_id": "OBS-SIG-004",
        "title": "Declared authorization scopes with broad-access wording"
      }
    ],
    "third_party_scanners": [
      {
        "name": "Snyk agent-scan (formerly Invariant Labs mcp-scan)",
        "status": "NOT_RUN",
        "url": "https://github.com/snyk/agent-scan"
      },
      {
        "name": "Cisco AI Defense MCP Scanner",
        "status": "NOT_RUN",
        "url": "https://github.com/cisco-ai-defense/mcp-scanner"
      }
    ]
  },
  "method": "https://www.gaipagents.com/observatory",
  "notice": "Facts observed by GAIP at the stated time (UTC); they may be out of date. This is not an assessment of safety, quality, security, legality or trustworthiness of any party, and not a recommendation. To request a correction, add a right of reply or opt out, POST to https://www.gaipagents.com/v1/free/observatory/corrections or use https://www.gaipagents.com/contact.",
  "price_gbp": 0,
  "schema_version": "gaip.observatory.v1.target",
  "silent_changes_last_30_days": {
    "days": 30,
    "entries_read_at_most": 200,
    "kinds": [
      "tool_descriptions_reworded",
      "tools_added"
    ],
    "line": "In the last 30 days its declared tools or interface changed with no declared version change in 3 weeks: 2026-W41 (2026-10-11); 2026-W42 (2026-10-12, 2026-10-17); 2026-W43 (2026-10-19); kinds: tool descriptions re-worded, tools added.",
    "meaning": "Weeks (ISO) in which GAIP recorded a change to the agent's declared tools or interface (tools added or removed, descriptions re-worded, input or output schema, behaviour labels, sign-in, terms or prices, endpoint host) and no declared version (registry or card version, serverInfo.version) moved that week. A week whose version movement is not recorded is not counted. Dated facts from the public change log; not an assessment of the agent.",
    "weeks": [
      {
        "dates": [
          "2026-10-11"
        ],
        "kinds": [
          "tool_descriptions_reworded"
        ],
        "week": "2026-W41"
      },
      {
        "dates": [
          "2026-10-12",
          "2026-10-17"
        ],
        "kinds": [
          "tool_descriptions_reworded"
        ],
        "week": "2026-W42"
      },
      {
        "dates": [
          "2026-10-19"
        ],
        "kinds": [
          "tools_added"
        ],
        "week": "2026-W43"
      }
    ],
    "weeks_with_silent_changes": 3
  },
  "snapshot": {
    "capabilities": {
      "pushNotifications": false,
      "streaming": true
    },
    "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 a US, Canadian or Mexican fax number. It can make a flat PDF fillable, complete a form from data, fill a PDF form from data or from supporting context document",
    "name": "Emboss",
    "parts": [
      "agent_card"
    ],
    "protocol": "A2A",
    "protocolVersion": "0.3",
    "provider": {
      "organization": "Emboss",
      "url": "https://getemboss.ai/"
    },
    "public_copy": "Text excerpts of at most 300 characters; input schemas and security schemes as SHA-256 and size only.",
    "scopes": [
      "forms:read",
      "forms:write"
    ],
    "security": {
      "bytes": 81,
      "published": "HASH_ONLY",
      "sha256": "bbd4ea441992065a8f5229a69a3467a1ad0bdaa48deb9de83ebf1a16acb4cbc8"
    },
    "securitySchemes": {
      "bytes": 1025,
      "published": "HASH_ONLY",
      "sha256": "0f50a2a0f0accbc7400617e4420717c73be6738c9a0df372cf3c2c9c62beabca"
    },
    "skills": [
      {
        "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 the fields detected on the PDF (each field's",
        "id": "make_fillable",
        "name": "Make a PDF fillable",
        "tags": [
          "document-processing",
          "form-schema",
          "forms",
          "make-fillable",
          "pdf",
          "pdf-form-fields",
          "xfa"
        ]
      },
      {
        "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, the form_id, and any values that matched no field",
        "id": "fill_form",
        "name": "Fill a form from data",
        "tags": [
          "data-entry",
          "fill-pdf",
          "form-filling",
          "forms",
          "json",
          "pdf"
        ]
      },
      {
        "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.",
        "id": "fill_from_context",
        "name": "Fill a form from context documents",
        "tags": [
          "context-fill",
          "document-extraction",
          "document-processing",
          "extraction",
          "fill-pdf",
          "form-filling",
          "forms",
          "pdf"
        ]
      },
      {
        "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, a PDF file, or a `library` slug from find_form, plus one or more context f",
        "id": "prepare",
        "name": "Prepare a form from documents",
        "tags": [
          "agents",
          "extraction",
          "forms",
          "pdf",
          "review"
        ]
      },
      {
        "description": "Fill one copy of a PDF form for every row of a spreadsheet. Batch fill forms from a spreadsheet. Input: a form_id (required), plus a CSV file part or csv_text 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 f",
        "id": "fill_batch",
        "name": "Batch fill forms from a spreadsheet",
        "tags": [
          "batch",
          "fill-pdf",
          "forms",
          "mail-merge",
          "pdf",
          "spreadsheet"
        ]
      },
      {
        "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 (required), plus a CSV file part, csv_text, or a list of column names (columns). Output: a suggested mapping from columns to field names for review. ",
        "id": "suggest_mapping",
        "name": "Suggest a column-to-field mapping",
        "tags": [
          "form-schema",
          "forms",
          "mapping",
          "pdf",
          "spreadsheet"
        ]
      },
      {
        "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, each with its id, title, state, page count and field count.",
        "id": "find_forms",
        "name": "Find previously processed forms",
        "tags": [
          "pdf",
          "forms",
          "search"
        ]
      },
      {
        "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 pa",
        "id": "find_form",
        "name": "Find a blank government form",
        "tags": [
          "form-schema",
          "forms",
          "government-forms",
          "library",
          "pdf",
          "search"
        ]
      },
      {
        "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.",
        "id": "get_form",
        "name": "Get a form's status and field inventory",
        "tags": [
          "pdf",
          "forms",
          "inspection"
        ]
      },
      {
        "description": "Write or confirm the answers, render the form 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 an",
        "id": "commit",
        "name": "Commit a proposal",
        "tags": [
          "agents",
          "forms",
          "pdf"
        ]
      },
      {
        "description": "Check a filled form: required fields, allowed options, consistent choices, text that fits, empty signature boxes; returns complete, review required or incomplete. Check a filled PDF against a form's contract: required fields, allowed options, consistent choices, text that fits, empty signature boxes",
        "id": "verify",
        "name": "Check a filled form",
        "tags": [
          "agents",
          "forms",
          "pdf",
          "verification"
        ]
      },
      {
        "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",
        "id": "read_form",
        "name": "Read a filled form back",
        "tags": [
          "document-extraction",
          "extraction",
          "form-schema",
          "forms",
          "pdf",
          "read-back"
        ]
      },
      {
        "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 data part naming one of the proposal's requirements. Output: the attachment's number, the re",
        "id": "attach",
        "name": "Attach a document to a proposal",
        "tags": [
          "pdf",
          "forms",
          "agents",
          "attachments"
        ]
      },
      {
        "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, fill_batch, or send_fax) and its own input, exactly as a direct call to that skill would take. Output: a quote_id, the price and its expiry. For ",
        "id": "quote_job",
        "name": "Get a price quote for filling a PDF form",
        "tags": [
          "pdf",
          "forms",
          "pricing",
          "quote"
        ]
      },
      {
        "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).",
        "id": "execute_quote",
        "name": "Run a previously quoted job",
        "tags": [
          "pdf",
          "forms",
          "pricing",
          "quote"
        ]
      },
      {
        "description": "Send a PDF to a fax number and track delivery, priced per transmitted page. Send one or more PDFs to a US, Canadian or Mexican fax number. The task stays working until the fax is delivered or fails; a busy, unanswered or dropped call is retried automatically up to three more times over about 17 minu",
        "id": "send_fax",
        "name": "Send a PDF by fax",
        "tags": [
          "delivery",
          "fax",
          "forms",
          "pdf",
          "transmission"
        ]
      },
      {
        "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 call",
        "id": "compose_pdf",
        "name": "Compose a PDF from artifacts",
        "tags": [
          "compose",
          "free",
          "packet",
          "pdf",
          "utilities"
        ]
      },
      {
        "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 s",
        "id": "merge_pdf",
        "name": "Merge PDFs",
        "tags": [
          "free",
          "merge",
          "pdf",
          "utilities"
        ]
      },
      {
        "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",
        "id": "extract_pages",
        "name": "Extract pages",
        "tags": [
          "extract",
          "free",
          "pages",
          "pdf",
          "utilities"
        ]
      },
      {
        "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 ",
        "id": "delete_pages",
        "name": "Delete pages",
        "tags": [
          "delete",
          "free",
          "pages",
          "pdf",
          "utilities"
        ]
      },
      {
        "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 pag",
        "id": "reorder_pages",
        "name": "Reorder pages",
        "tags": [
          "free",
          "pages",
          "pdf",
          "reorder",
          "utilities"
        ]
      },
      {
        "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, f",
        "id": "rotate_pages",
        "name": "Rotate pages",
        "tags": [
          "free",
          "pages",
          "pdf",
          "rotate",
          "utilities"
        ]
      },
      {
        "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",
        "id": "inspect_pdf",
        "name": "Inspect a PDF",
        "tags": [
          "free",
          "inspect",
          "metadata",
          "pdf",
          "utilities"
        ]
      },
      {
        "description": "Free. Lock a filled form: draw every field's value and every comment into the page so nothing can be edited. Input: an artifact_id and an artifact_token for anonymous callers. Output: a new PDF with every field's value, checkbox and comment drawn into the page and no editable fields left, its artifa",
        "id": "flatten_pdf",
        "name": "Lock a filled form",
        "tags": [
          "flatten",
          "free",
          "lock",
          "pdf",
          "utilities"
        ]
      }
    ],
    "supportedInterfaces": [
      {
        "protocolBinding": "JSONRPC",
        "url": "https://api.getemboss.ai/a2a"
      },
      {
        "protocolBinding": "JSONRPC",
        "url": "https://api.getemboss.ai/a2a"
      }
    ],
    "url": "https://api.getemboss.ai/a2a",
    "version": "1.0.0"
  },
  "status_history": [
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "15140b9f130ad3c4d0e1f9da34192cfa735b0237f05adcf8789f9a84ac1cc60b",
      "observed_at_utc": "2026-10-20T22:58:49Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "15140b9f130ad3c4d0e1f9da34192cfa735b0237f05adcf8789f9a84ac1cc60b",
      "observed_at_utc": "2026-10-19T22:26:45Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "715ef8070610688f6001622571f0da27e2e03712f8fecd46064a5f47d7fde83e",
      "observed_at_utc": "2026-10-18T21:49:35Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "715ef8070610688f6001622571f0da27e2e03712f8fecd46064a5f47d7fde83e",
      "observed_at_utc": "2026-10-17T21:17:11Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "a00a72db390789374507f6d26aa8896f6e49083ddb61bb407c883a058f185613",
      "observed_at_utc": "2026-10-16T20:49:10Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "a00a72db390789374507f6d26aa8896f6e49083ddb61bb407c883a058f185613",
      "observed_at_utc": "2026-10-15T20:10:58Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "a00a72db390789374507f6d26aa8896f6e49083ddb61bb407c883a058f185613",
      "observed_at_utc": "2026-10-14T19:29:38Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "a00a72db390789374507f6d26aa8896f6e49083ddb61bb407c883a058f185613",
      "observed_at_utc": "2026-10-13T18:58:33Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "903d88cad35abd781ba0d4778b2e9f85b71f9e3a39d5f831d0b7a2483d8b546e",
      "observed_at_utc": "2026-10-12T18:26:22Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "a16f36f1d500777380d737a08bd279f5858a8600be2c3799ac13b16e7319b535",
      "observed_at_utc": "2026-10-11T17:57:08Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-10T13:06:26Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-09T12:27:15Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-08T11:58:22Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-07T10:56:41Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-06T10:15:32Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-05T09:47:21Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-04T09:18:20Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "ee3a177fabdc82372fb1a31928c73ea2b521255a4b03202d2b94585c45d0c78b",
      "observed_at_utc": "2026-10-03T08:49:41Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "b894521a56a7f6e4de84f735a0189afb57bd9b48664eb4d5af8fff5fa0f64bd9",
      "observed_at_utc": "2026-10-01T11:18:14Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "b894521a56a7f6e4de84f735a0189afb57bd9b48664eb4d5af8fff5fa0f64bd9",
      "observed_at_utc": "2026-09-29T23:26:21Z",
      "protocol_version": "0.3"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "agent_card"
      ],
      "manifest_sha256": "b894521a56a7f6e4de84f735a0189afb57bd9b48664eb4d5af8fff5fa0f64bd9",
      "observed_at_utc": "2026-09-28T22:49:47Z",
      "protocol_version": "0.3"
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-09-28T22:33:38Z",
    "kind": "A2A_CARD",
    "last_observed_at_utc": "2026-10-20T22:58:49Z",
    "locator": "https://api.getemboss.ai/.well-known/agent-card.json",
    "name": "api.getemboss.ai",
    "source": "a2aregistry-org",
    "target_id": "obs_bff46a1ae53e2412e748b227"
  }
}