Signed URLs expire, and the obvious recovery — generate it again — is the expensive one. Providing a refresh that explicitly does not consume credits removes a whole class of accidental spend, and saying so in the tool description is what lets an agent choose correctly without a human checking. The same care shows in estimate_cost being pointed at large runs and check_credits existing at all. create_template_from_docx is the practical on-ramp: most people wanting bulk documents already have the document, and converting it beats authoring a template from scratch.
A document-generation client with templates at its centre: list, search and inspect them, generate single documents or batches, and manage credits — plus a checkout flow that lets an agent generate without a BulkRender account.
- get_template returns the variable schema, which is what makes a generation request correct instead of a guess at field names.
- generate_document returns a signed download URL; generate_batch handles many records and returns a ZIP.
- refresh_document_url issues a fresh signed URL for an existing document and explicitly does not consume credits — so an expired link is not a second charge.
- estimate_cost prices a run before it happens, with its description pointing at large generations specifically, and check_credits reports what the organisation has left.
- create_template_from_docx turns an existing DOCX into a reusable template, so the starting point is a document you already have.
- get_batch_status polls an async batch to completion rather than leaving a long job to be assumed finished.
- The ACP flow — list public templates, create a session, pay it with a Stripe payment method id, poll the session — lets generation happen with no account at all.
BULKRENDER_API_KEY for the normal path. The ACP checkout route works without an account, paying per session instead.
One command plus a key — claude mcp add bulkrender --scope user -- npx mcp-remote YOUR_MCP_URL, then supply credentials
