Connect Anvil MCP by usefulapi and your agent gets 10 tools, among them anvil_create_etch_packet, anvil_current_user, anvil_fill_pdf. It answers at https://anvil.usefulapi.io/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 24 October 2026, succeeded.
Hosted MCP server for Anvil — fill & generate PDFs and run Etch e-signature packets for AI agents.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
anvil_create_etch_packet | Create an Etch e-signature packet (documents + signers). GraphQL mutation: createEtchPacket. IMPORTANT: isDraft defaults to true (a safe draft that sends nothing). Setting isDraft=false with real signers SENDS signature-request emails to th Inputs: name, signers, files, data, isDraft, isTest |
anvil_current_user | Get the authenticated Anvil user (from the API key) and the organizations they belong to (eid, name, slug). Good first call to discover org slugs/eids for other tools. GraphQL query: currentUser. |
anvil_fill_pdf | Fill an Anvil PDF template (cast) with data and return the finished PDF as base64. REST: POST /fill/{castEid}.pdf. Returns { filename, byteLength, pdfBase64 }. The `data` object's keys are the template's field aliases. Inputs: cast_eid, data, title, fontSize, textColor |
anvil_generate_etch_sign_url | Generate a one-time embedded signing URL for a specific signer in an Etch packet (for iframe/redirect signing flows). GraphQL mutation: generateEtchSignURL. Returns { url }. Inputs: signer_eid, client_user_id |
anvil_generate_pdf | Generate a brand-new PDF from HTML or Markdown and return it as base64. REST: POST /generate-pdf. For type=html, pass data = { html, css? }. For type=markdown, pass data = [ { label, content }, ... ]. Returns { filename, byteLength, pdfBase Inputs: type, data, title |
anvil_get_cast | Fetch a cast — an Anvil PDF template — by its eid: title, version number, and whether it is a template. Use the returned eid as the cast_eid for anvil_fill_pdf. GraphQL query: cast. Inputs: eid |
anvil_get_etch_packet | Fetch an Etch e-signature packet by eid: its status, details URL, document group, and every signer (eid, aliasId, name, email, status, routing order). Use this to check signature progress. GraphQL query: etchPacket. Inputs: eid |
anvil_get_organization | Fetch an Anvil organization and its PDF templates (casts) and workflows (welds). Provide either its slug or its eid (at least one is required). GraphQL query: organization. Inputs: slug, eid |
anvil_get_weld | Fetch a weld — an Anvil workflow — by eid, including its forges (the individual form steps: eid, name, slug). GraphQL query: weld. Inputs: eid |
anvil_get_weld_data | Fetch a weldData record — a single submission to a weld (workflow) — by eid: completion state, test flag, and creation time. GraphQL query: weldData. Inputs: eid |
Every block below points at https://anvil.usefulapi.io/mcp. Pick your client and copy.
claude mcp add --transport http anvil-mcp-by-usefulapi https://anvil.usefulapi.io/mcp
{
"mcpServers": {
"anvil-mcp-by-usefulapi": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://anvil.usefulapi.io/mcp"]
}
}
}{
"mcpServers": {
"anvil-mcp-by-usefulapi": {
"url": "https://anvil.usefulapi.io/mcp"
}
}
}{
"servers": {
"anvil-mcp-by-usefulapi": {
"type": "http",
"url": "https://anvil.usefulapi.io/mcp"
}
}
}{
"context_servers": {
"anvil-mcp-by-usefulapi": {
"url": "https://anvil.usefulapi.io/mcp"
}
}
}{
"mcpServers": {
"anvil-mcp-by-usefulapi": {
"serverUrl": "https://anvil.usefulapi.io/mcp"
}
}
}{
"mcpServers": {
"anvil-mcp-by-usefulapi": {
"url": "https://anvil.usefulapi.io/mcp"
}
}
}name: Anvil MCP by usefulapi
version: 0.0.1
schema: v1
mcpServers:
- name: Anvil MCP by usefulapi
type: streamable-http
url: https://anvil.usefulapi.io/mcp{
"mcpServers": {
"anvil-mcp-by-usefulapi": {
"httpUrl": "https://anvil.usefulapi.io/mcp"
}
}
}{
"mcpServers": {
"anvil-mcp-by-usefulapi": {
"type": "http",
"url": "https://anvil.usefulapi.io/mcp"
}
}
}{
"mcpServers": {
"anvil-mcp-by-usefulapi": {
"url": "https://anvil.usefulapi.io/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fanvil.usefulapi.io%2Fmcp&type=streamable_http&id=anvil-mcp-by-usefulapi&name=Anvil%20MCP%20by%20usefulapi
It answered our last check on 24 October 2026 in 272 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by usefulapi.io and served from anvil.usefulapi.io, the vendor's own domain: https://anvil.usefulapi.io/mcp.
10, as returned by the server's own tools/list on 22 September 2026: anvil_create_etch_packet, anvil_current_user, anvil_fill_pdf, anvil_generate_etch_sign_url, anvil_generate_pdf, anvil_get_cast, anvil_get_etch_packet, anvil_get_organization, and 2 more.
It answered our last check on 24 October 2026 in 272 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://anvil.usefulapi.io/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.usefulapi. Endpoint host: anvil.usefulapi.io. ARD identifier: urn:air:io.usefulapi:mcp:anvil.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.