Emboss
REMOTE · API.GETEMBOSS.AI · SCANNED OCT 14
Make any PDF form fillable, fill it from data or documents, read it back, and fax the result.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security92
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability81
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3156 tokens (~116/item across 27 items; 27 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Tools include usage examples.Pass
Stability & Change Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Emboss MCP server?
Emboss is a hosted endpoint at https://api.getemboss.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.getemboss.ai
claude mcp add --transport http edwinorange-emboss 'https://api.getemboss.ai/mcp'
{
"mcpServers": {
"edwinorange-emboss": {
"url": "https://api.getemboss.ai/mcp"
}
}
} {
"servers": {
"edwinorange-emboss": {
"type": "http",
"url": "https://api.getemboss.ai/mcp"
}
}
} [mcp_servers.edwinorange-emboss] url = "https://api.getemboss.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"edwinorange-emboss": {
"type": "remote",
"url": "https://api.getemboss.ai/mcp",
"enabled": true
}
}
} openclaw mcp add edwinorange-emboss --url 'https://api.getemboss.ai/mcp' --transport streamable-http
mcp_servers:
edwinorange-emboss:
url: "https://api.getemboss.ai/mcp" {
"McpServers": {
"edwinorange-emboss": {
"Transport": "http",
"Url": "https://api.getemboss.ai/mcp"
}
}
} assistant mcp add edwinorange-emboss -t streamable-http -u 'https://api.getemboss.ai/mcp'
{
"mcpServers": {
"edwinorange-emboss": {
"type": "http",
"url": "https://api.getemboss.ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 14 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 13 Oct 26 +40
- Transport: unverified → pass ▲ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Authorization: Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. security
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Tool coverage: 0 functional
- First check of Schema quality: fail functional
- First check of Schema quality: pass functional
- First check of Destructive annotations: 100 functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Aug 26 0
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 14 Oct 2026 · Probed https://api.getemboss.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.getemboss.ai | CN=YE2,O=Let's Encrypt,C=US | 2 Oct 2026 | 31 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 54d143f9e30c34728bbd8e4431b9e13e55d |
| SANs: api.getemboss.ai | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.getemboss.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| getemboss.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer error="invalid_token", error_description="Authentication required", resource_metadata="https://api.getemboss.ai/.well-known/oauth-protected-resource/mcp"
Bearer error="invalid_token", error_description="Authentication required", resource_metadata="https://api.getemboss.ai/.well-known/oauth-protected-resource/mcp" Protected resource metadata
| Document | https://api.getemboss.ai/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://api.getemboss.ai/mcp |
| Authorisation server | https://api.getemboss.ai |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.getemboss.ai/mcp | Verified | 200 | |
| http (plaintext) | http://api.getemboss.ai/mcp | HTTPS enforced | 301 | https://api.getemboss.ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_attachment Attach a document to a proposal ~146
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. Attach one document (file_url: public https link, or file_base64) to a proposal from prepare_form. PDF, PNG and JPEG only, at most 20 per proposal. requirement: the name of an entry in the form's attachments_required list to satisfy it; uploading a second document for the same requirement replaces the first. Free: attachments are part of the already-billed prepare.
| Name | Type | Req | Description |
|---|---|---|---|
| file_base64 | – | – | – |
| file_url | – | – | – |
| proposal_id | string | yes | – |
| requirement | – | – | – |
Structured output declared, but exposes no named fields.
{"file_url":"https://example.com/docs/proof-of-insurance.pdf","proposal_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","requirement":"Proof of insurance"} commit_proposal Commit a proposal and produce the PDF ~270
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. Give the proposal_id from prepare_form; confirm is a list of field ids whose proposed value is accepted as it is (the ids get_proposal lists under confirmations); plus any values the agent decided for fields still open (field_id, value, and an optional note), and a policy (safe or strict) to override the proposal's own. Set package to true to also receive one submission package: the filled form, the attachments added to this proposal in the order the form asks for them, and the receipt embedded in the file; that is billed as one package. Returns a job_id; poll get_job about every 20 seconds for the download link, report, receipt and, when asked for, package_url. Free within the proposal's already-billed prepare, up to 10 commits per proposal. Checkboxes take yes or no; yes ticks that box. In a Yes/No pair, say yes to the box you want; two yeses in one pair are refused.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | – | – | – |
| package | boolean | – | – |
| policy | – | – | – |
| proposal_id | string | yes | – |
| values | – | – | – |
Structured output declared, but exposes no named fields.
{"confirm":[3],"package":false,"proposal_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","values":[{"field_id":5,"value":"Grace Hopper"}]} compose_pdf Compose a PDF from artifacts ~101
Free. Build one PDF from pages of several artifacts, in the order and rotation you name. Build one PDF from several artifacts: sources is a list of {artifact_id, pages, rotate}; pages is a selection like 1-3,7 (omit for every page), rotate is 90, 180 or 270. Returns the new artifact_id. Page selections: https://getemboss.ai/docs/artifacts.
| Name | Type | Req | Description |
|---|---|---|---|
| sources | array | yes | – |
Structured output declared, but exposes no named fields.
{"sources":[{"artifact_id":"22222222-3333-4444-5555-666666666666","pages":"1-2"},{"artifact_id":"99999999-aaaa-bbbb-cccc-dddddddddddd"}]} create_form Create a fillable form from a PDF ~157
Turn a flat or scanned PDF form into a fillable PDF with detected fields. Upload a PDF (pdf_url: public https link, or pdf_base64) and detect its fields. Returns when detection finishes (usually under two minutes). Give library=<slug> from find_form to start from a form Emboss already keeps. Billed as one form creation; the first 5 each month are free. Optional retention: ephemeral or account_default (default: the account's own setting). Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.
| Name | Type | Req | Description |
|---|---|---|---|
| library | – | – | – |
| pdf_base64 | – | – | – |
| pdf_url | – | – | – |
| retention | – | – | – |
| title | – | – | – |
Structured output declared, but exposes no named fields.
{"pdf_url":"https://example.com/forms/building-permit.pdf","retention":"ephemeral"} delete_form Delete a form ~29
Permanently removes a form and its PDFs from the user's library.
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"form_id":"11111111-2222-3333-4444-555555555555"} delete_pages Delete pages ~75
Free. Remove the pages you name from a PDF and keep the rest in order. Remove the pages named in pages (1-based, like 1-2,17) from artifact_id; every other page stays in order. Returns the new artifact_id.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | – |
| pages | string | yes | – |
Structured output declared, but exposes no named fields.
{"artifact_id":"99999999-aaaa-bbbb-cccc-dddddddddddd","pages":"2"} extract_pages Extract pages ~77
Free. Keep only the pages you name from a PDF, in the order you name them. Keep only the pages named in pages (1-based, like 2,5-9, repeats and any order allowed) from artifact_id. Returns the new artifact_id.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | – |
| pages | string | yes | – |
Structured output declared, but exposes no named fields.
{"artifact_id":"99999999-aaaa-bbbb-cccc-dddddddddddd","pages":"1-3"} fill_batch Fill the form once per spreadsheet row ~161
Fill one copy of a PDF form for every row of a spreadsheet. Fill a form for every row of a CSV (csv_text or csv_url, up to 1000 rows). mapping is {column: field_id}; omit it to use the suggested mapping. If mapping is omitted, suggest_mapping runs first and is billed as one context fill. Batches up to 50 rows finish before this returns; larger ones keep running, poll get_batch. Each row is billed as one fill. retention (ephemeral or account_default) is accepted but changes nothing: the form keeps the setting it was created with.
| Name | Type | Req | Description |
|---|---|---|---|
| csv_text | – | – | – |
| csv_url | – | – | – |
| form_id | string | yes | – |
| mapping | – | – | – |
| retention | – | – | – |
Structured output declared, but exposes no named fields.
{"csv_text":"Full Name,Email\nGrace Hopper,grace@example.com\nAda Lovelace,ada@example.com\n","form_id":"11111111-2222-3333-4444-555555555555","mapping":{"Email":2,"Full Name":1}} fill_form Fill a form from values ~144
Fill a PDF form from structured data such as JSON or key-value answers. Fill a ready form with values keyed by field id or field label. Checkboxes take yes or no; choice fields need one of their options. flatten is reserved and not available yet. Returns a download link plus any labels that did not match (ask the user about those). Billed as one fill; the first 5 each month are free. retention (ephemeral or account_default) is accepted but changes nothing: the form keeps the setting it was created with.
| Name | Type | Req | Description |
|---|---|---|---|
| flatten | boolean | – | – |
| form_id | string | yes | – |
| retention | – | – | – |
| values | object | yes | – |
Structured output declared, but exposes no named fields.
{"form_id":"11111111-2222-3333-4444-555555555555","values":{"Email":"grace@example.com","Full Name":"Grace Hopper"}} fill_form_from_context Fill a form from documents or notes ~260
Fill a PDF form using facts found in supporting documents. Emboss reads the answers out of context_text and/or context_urls (public https links to PDFs, Word, spreadsheets, images, or text) and fills the form. Give form_id for a form already in the library, or pdf_url/pdf_base64 for a new one. Give library=<slug> from find_form to start from a form Emboss already keeps. policy is safe (write high and medium confidence) or strict (high only). Returns a job_id; poll get_job about every 20 seconds. Billed as one context fill; the first 5 each month are free. Optional retention: ephemeral or account_default (default: the account's own setting); it applies only when this call creates the form (pdf_url, pdf_base64 or library), since an existing form keeps the setting it was created with. Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.
| Name | Type | Req | Description |
|---|---|---|---|
| context_text | – | – | – |
| context_urls | – | – | – |
| form_id | – | – | – |
| library | – | – | – |
| pdf_base64 | – | – | – |
| pdf_url | – | – | – |
| policy | string | – | – |
| retention | – | – | – |
Structured output declared, but exposes no named fields.
{"context_text":"Grace Hopper, born 9 December 1906, 1 Navy Way, Arlington, VA 22202.","form_id":"11111111-2222-3333-4444-555555555555","policy":"safe"} find_form Find a blank government form ~128
Find a blank government form in the Emboss library by name or number, ready to fill. Search the library of blank US federal forms by name, number or alias (w9, W-9, form w 9 and taxpayer identification all find the same form). Returns each match's slug, title, agency, revision and page count. Send the whole query once, and do not search as the user types: each search spends one of the account's rate-limit slots. Pass a slug as create_form's library argument to start from that form. Free.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | – |
Structured output declared, but exposes no named fields.
{"query":"IRS Form W-9 request for taxpayer identification number"} get_batch Check a batch fill ~41
Progress of a fill_batch run with a download link per finished row (first 100) and a zip link when done.
| Name | Type | Req | Description |
|---|---|---|---|
| batch_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"batch_id":"44444444-5555-6666-7777-888888888888"} get_fax Check a fax ~73
Delivery status and receipt of a send_fax job. status is queued, working, delivered, failed or expired; keep checking about every 20 seconds until it is delivered, failed or expired. A failed or expired fax carries failure_category, failure_reason, retryable and refund.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"job_id":"cccccccc-dddd-eeee-ffff-000000000000"} get_form Get a form and its fields ~48
Status of one form. When ready, returns every field (id, label, kind, options, required) and a download link for the fillable PDF.
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"form_id":"11111111-2222-3333-4444-555555555555"} get_job Check a context fill job ~68
Status of a fill_form_from_context, prepare_form, or commit_proposal job. When ready, returns the download link, how many fields were filled, and for a commit, the result, receipt_url and, when one was asked for, package_url.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"job_id":"77777777-8888-9999-aaaa-bbbbbbbbbbbb"} get_proposal Read a proposal ~81
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. Read a proposal by its proposal_id: every field's state, its candidate values with evidence, and the questions still open. No charge to read it.
| Name | Type | Req | Description |
|---|---|---|---|
| proposal_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"proposal_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"} get_usage Check free tier and usage ~24
This month's usage and how many free operations remain, plus the billing page link.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
{} inspect_pdf Inspect a PDF ~79
Free. Report a PDF's structure: page count, page sizes and rotations, encryption, form fields, annotations. Structural facts about artifact_id: page count, page sizes and rotations, whether it is encrypted, has form fields, annotations, outlines, embedded files or JavaScript. No text, no field values.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"artifact_id":"99999999-aaaa-bbbb-cccc-dddddddddddd"} list_forms List your forms ~53
Forms in the user's Emboss library. state: ready (default), processing, failed, or all. Paginate with cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | – | – | – |
| limit | integer | – | – |
| state | string | – | – |
Structured output declared, but exposes no named fields.
{"limit":20,"state":"ready"} merge_pdf Merge PDFs ~56
Free. Join whole PDFs into one file in the order given. Join whole PDFs in order: sources is a list of {artifact_id}. Returns the new artifact_id. For page selections use compose_pdf.
| Name | Type | Req | Description |
|---|---|---|---|
| sources | array | yes | – |
Structured output declared, but exposes no named fields.
{"sources":[{"artifact_id":"22222222-3333-4444-5555-666666666666"},{"artifact_id":"99999999-aaaa-bbbb-cccc-dddddddddddd"}]} prepare_form Prepare a form from documents ~267
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. Same inputs as fill_form_from_context (form_id for a form already in the library, or pdf_url/pdf_base64 for a new one, plus context_text and/or context_urls), but nothing is written into the PDF: read the proposal, answer what is missing, then commit. policy is safe (write high and medium confidence) or strict (high only). Returns a job_id and a proposal_id; poll get_job about every 20 seconds. Billed as one context fill; the first 5 each month are free. Optional retention: ephemeral or account_default (default: the account's own setting); it applies only when this call creates the form (pdf_url, pdf_base64 or library), since an existing form keeps the setting it was created with. Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form.
| Name | Type | Req | Description |
|---|---|---|---|
| context_text | – | – | – |
| context_urls | – | – | – |
| form_id | – | – | – |
| library | – | – | – |
| pdf_base64 | – | – | – |
| pdf_url | – | – | – |
| policy | string | – | – |
| retention | – | – | – |
Structured output declared, but exposes no named fields.
{"context_text":"Hopper Analytical LLC, EIN 12-3456789, 1 Navy Way, Arlington, VA 22202.","library":"irs-w-9","policy":"safe"} read_form Read a filled form back ~143
Read the values out of a filled PDF form, labelled by field, with a completeness verdict when the form is known. Give the filled PDF (pdf_url: public https link, or pdf_base64) and, when you know it, form_id. Returns every form box in the file with its value and whether it is filled; when the form is recognised, each value also carries its label and whether it was required, plus a completeness verdict. Nothing is stored: read-back never keeps your file. Billed as one read; the first 5 each month are free.
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | – | – | – |
| pdf_base64 | – | – | – |
| pdf_url | – | – | – |
Structured output declared, but exposes no named fields.
{"form_id":"11111111-2222-3333-4444-555555555555","pdf_url":"https://example.com/filled/building-permit.pdf"} reorder_pages Reorder pages ~68
Free. Put a PDF's pages in a new order you give, every page exactly once. Reorder artifact_id's pages: order lists every page number exactly once, in the new order. Returns the new artifact_id.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | – |
| order | array | yes | – |
Structured output declared, but exposes no named fields.
{"artifact_id":"99999999-aaaa-bbbb-cccc-dddddddddddd","order":[2,1,3]} rotate_pages Rotate pages ~83
Free. Rotate the pages you name by 90, 180 or 270 degrees. Rotate pages of artifact_id: rotations is a list of {pages, degrees} with degrees 90, 180 or 270, added clockwise to each page's current rotation. Returns the new artifact_id.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | – |
| rotations | array | yes | – |
Structured output declared, but exposes no named fields.
{"artifact_id":"99999999-aaaa-bbbb-cccc-dddddddddddd","rotations":[{"degrees":90,"pages":"1"}]} send_fax Send a PDF by fax ~201
Send a PDF to a fax number and track delivery, priced per transmitted page. Give a destination in E.164 form (for example +15025551212; US, Canadian and Mexican numbers only) and the PDF: an artifact_id from any earlier result, a job_id from fill_form_from_context or commit_proposal once get_job reports ready, a form_id for the fillable form, or one PDF by pdf_url or pdf_base64, or a sources list of artifact ids (each with an optional pages range such as 1-3,7) faxed together as one packet. Returns a job id at once; poll get_fax for delivery. Billed per page at delivery; a failed fax is not charged.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | – | – | – |
| form_id | – | – | – |
| job_id | – | – | – |
| pdf_base64 | – | – | – |
| pdf_url | – | – | – |
| sources | – | – | – |
| to | string | yes | – |
Structured output declared, but exposes no named fields.
{"job_id":"77777777-8888-9999-aaaa-bbbbbbbbbbbb","to":"+15025550123"} suggest_mapping Map spreadsheet columns to form fields ~74
Propose which spreadsheet columns fill which PDF form fields. Given a CSV (csv_text or csv_url), proposes which column fills which field. Only the header row matters. Billed as one context fill (5 free each month).
| Name | Type | Req | Description |
|---|---|---|---|
| csv_text | – | – | – |
| csv_url | – | – | – |
| form_id | string | yes | – |
Structured output declared, but exposes no named fields.
{"csv_text":"Full Name,Email\nGrace Hopper,grace@example.com\n","form_id":"11111111-2222-3333-4444-555555555555"} verify_form Check a filled form ~95
Check a filled form: required fields, allowed options, consistent choices, text that fits, empty signature boxes; returns complete, review required or incomplete. Give a form_id and the filled PDF (pdf_url: public https link, or pdf_base64). Billed as one verify; the first 5 each month are free.
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | yes | – |
| pdf_base64 | – | – | – |
| pdf_url | – | – | – |
Structured output declared, but exposes no named fields.
{"form_id":"11111111-2222-3333-4444-555555555555","pdf_url":"https://example.com/filled/building-permit.pdf"} What is the Emboss MCP server?
Emboss is an MCP server listed in the public MCP registry as io.github.edwinorange/emboss. Make any PDF form fillable, fill it from data or documents, read it back, and fax the result. This page covers its hosted endpoint (https://api.getemboss.ai/mcp).
Is the Emboss MCP server safe to use?
Emboss scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Emboss MCP server expose?
Emboss exposes 27 tools: list_forms, get_form, find_form, get_usage, create_form, and 22 more. Their descriptions and schemas cost roughly 3,002 tokens of context every time the server is loaded.
Does the Emboss MCP server require authentication?
Yes. Emboss asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Emboss MCP server still maintained?
Emboss is still listed as active in the MCP registry. We last reached this channel on 14 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.