Docmosis
DOCS & KNOWLEDGE · FILES & DOCS
Documents rendered from their own templates, plus template structure and account quota.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
docmosis_get_pingREADCheck that this processing location is reachable. Takes no arguments and answers 200 with an empty object. THIS DOES NOT CHECK YOUR CREDENTIAL: measured 2026-09-24, it answers 200 to a bogus access key too, so a successful ping says the region is up and nothing about whether the connection works. Use the environment readiness check for that.
docmosis_post_convertWRITEConvert a document from one format to another without a template -- DOCX to PDF and similar. The input file is passed as BASE64 and the converted file comes back as base64 with its content type and size; both directions are bounded at 1 MiB decoded, and over that the content is described and dropped rather than truncated. `outputName`'s extension decides the target format ("result.pdf" -> PDF). This is the only Docmosis operation that both takes and returns a document.
docmosis_post_deleteimageWRITEDelete an image from this processing location. DESTRUCTIVE AND IRREVERSIBLE: there is no recycle bin, and any template that references the image renders without it afterwards. THE REPLY IS NOT EVIDENCE THE IMAGE EXISTED: measured 2026-09-24, deleting the same name twice answers the identical 200 {"succeeded":true,"shortMsg":"Image successfully deleted"} both times. Confirm absence with the image listing, not with this answer.
docmosis_post_deletetemplateWRITEDelete a template from this processing location. DESTRUCTIVE AND IRREVERSIBLE: there is no recycle bin and no undo, and any render that names the template afterwards fails. Answers 200 {"succeeded":true,"shortMsg":"Template successfully deleted"}.
docmosis_post_environment_readyREADConfirm the connected Docmosis environment is activated and able to render, and confirm the access key works. Takes no arguments. Answers 200 {"succeeded":true,"shortMsg":"environment is ready"}; a wrong key answers 400 {"succeeded":false,"shortMsg":"Invalid accessKey"} -- Docmosis uses 400, never 401 or 403. This is the cheapest way to tell a working connection from a broken one, and it spends no page quota.
docmosis_post_environment_summaryREADReport the account name, the environment's name and activation state, the plan, and the PAGE QUOTA with the percentage used. Takes no arguments. START HERE before a large render run: Docmosis is metered by rendered page, not by API call, and this is the only tool that says how much of the allowance is left. The numbers are NESTED: read them from `accountEnvironmentSummary.pageQuota` (`quota`, `used`, `pctUsed`, `isHardLimited`), not from the top level, which carries only shortMsg and succeeded. Measured 2026-09-24 on a trial: quota 4000, isHardLimited false.
docmosis_post_getimageREADDownload a stored image. Answers its content type, byte length, filename and BASE64 CONTENT, bounded at 1 MiB decoded; a larger image is described and dropped rather than truncated. Use the image listing to learn the name and the size before downloading.
docmosis_post_getrenderqueueREADReport the render queue's current capacity for this processing location: the percentage available and the delay in seconds a new render would wait. Takes no arguments and costs nothing. Worth reading before a bulk render run, and worth reading when a render is slow, because the answer distinguishes a busy service from a slow template.
docmosis_post_getrendertagsREADReport page and document counts for renders recorded against one or more tags -- the `tags` a render was submitted with, which is how Docmosis attributes usage to a project, customer or department. `tags` is REQUIRED: without it Docmosis answers 400 "tags parameter must be specified", which is a bad request rather than a credential problem. Semi-colon delimited for several tags. An empty `renderTags` array means nothing was rendered with that tag, not that the tag is invalid.
docmosis_post_getsampledataREADReturn a ready-made sample `data` object matching the template's structure, with placeholder values in every field. The fastest way to get a correctly-shaped payload for the render tool: take this, replace the values, render. Set `format` to anything other than "json" for the XML form.
docmosis_post_gettemplateREADDownload a stored template file. Answers the file's content type, byte length, filename and BASE64 CONTENT -- the original DOCX or ODT, not its text. Bounded at 1 MiB decoded; a larger template is described and dropped rather than truncated, because a prefix of a DOCX is not a smaller DOCX. To read what FIELDS a template has, use the structure tool instead: it answers JSON and costs nothing to interpret.
docmosis_post_gettemplatedetailsREADGet one template's metadata: size, last-modified time, md5, description, the plain-text field delimiters it was uploaded with, and `templateHasErrors` -- which is the one worth reading before a render, because a template with errors renders differently in development and production mode. Metadata only; use the template download tool for the file itself.
docmosis_post_gettemplatestructureREADReturn the template's field and repeating-section structure as JSON -- each field's name and the data path it reads. THIS IS HOW AN AGENT LEARNS WHAT DATA A RENDER NEEDS without opening the document: the answer names every placeholder and every repeat, so the `data` object for the render tool can be built to match. Pair it with the sample-data tool, which returns the same shape already filled in.
docmosis_post_listimagesREADList the images stored in THIS connection's processing location, with each one's name, size, last-modified time and description. Images are what a template's placeholder images resolve to at render time; this is how a caller learns the exact `imageName` to reference. Folders appear as their own zero-byte entries.
docmosis_post_listtemplatesREADList the templates stored in THIS connection's processing location, with each one's name, size and last-modified time. START HERE before rendering: this is how a caller learns the exact `templateName` the render tool needs, including its folder prefix ("samples/WelcomeTemplate.docx"). Folders appear as their own zero-byte entries. Remember each location keeps its own separate templates -- a template uploaded to the US region is not visible from a connection set to EU.
docmosis_post_renderWRITERender a document from a stored template and JSON data -- the flagship operation. The document comes back BASE64 under `resultFile` in the JSON reply: Docmosis streams raw bytes by default, which cannot travel through a tool result, so Agentic Fabriq sends `streamResultInResponse: true` for you and passing it as false is refused with the remedy. Over 1 MiB decoded the document is described and dropped rather than truncated -- use `storeTo` (`mailto:someone@example.com` or an `s3:` destination) to have Docmosis deliver a large one directly, in which case nothing streams. `templateName` must name a template in THIS connection's processing location, and `outputName`'s extension decides the format ("invoice.pdf" -> PDF) unless `outputFormat` overrides it. THIS OPERATION REFUSES UNKNOWN PARAMETERS: `strictParams` defaults true, so a misspelled field is a 400 naming it, not a silent no-op; set `strictParams: false` to have unknown fields treated as extra template data instead. SPENDS PAGE QUOTA, one per rendered page.
docmosis_post_uploadimageWRITEUpload an image for templates to use, passed as BASE64 and bounded at 1 MiB decoded. DESTRUCTIVE: an upload to an `imageName` that already exists REPLACES it silently, with no previous version kept and no undo -- and because templates reference images by name, replacing one changes every document that renders afterwards. List the images first if you are not certain the name is free.
docmosis_post_uploadtemplateWRITEUpload one template file, passed as BASE64 and bounded at 1 MiB decoded. DESTRUCTIVE: an upload to a `templateName` that already exists REPLACES it silently -- measured 2026-09-24, two different files uploaded to the same name both answered the identical "stored." while the md5 and size changed, with no previous version kept and no undo. List the templates first if you are not certain the name is free. `devMode: "true"` lets a template with errors upload anyway so the errors can be found; `keepPrevOnFail: "true"` keeps the existing template when the new one has errors.
docmosis_post_uploadtemplatebatchWRITEUpload MANY templates at once as a single ZIP, passed as base64 and bounded at 1 MiB decoded. Folders inside the ZIP become folders in the account. Starts an asynchronous job and answers immediately with its status. THE JOB ID IS NESTED: read it from `jobStatus.userJobId`, NOT from the top level, which carries only the prose shortMsg that spells it out -- a caller who reads a top-level `userJobId` gets nothing and the status tool then refuses the empty id. Poll the batch status tool with it. DESTRUCTIVE: like the single upload, a template whose name already exists is REPLACED silently, and a batch can do that to many at once. Supply your own `userJobId` if you want to poll or cancel it; Docmosis generates one otherwise.
docmosis_post_uploadtemplatebatchcancelWRITECancel a batch template upload that is still running, by `userJobId`. Templates the batch has ALREADY written stay -- this abandons the remaining work rather than rolling anything back, which is why it is not marked destructive. Against a job that has already finished it answers 200 "Batch upload was already FINISHED" and changes nothing.
docmosis_post_uploadtemplatebatchstatusREADReport a batch template upload's progress by `userJobId`: its status, percentage complete, a human-readable message ("1/1 templates uploaded.") and, once finished, a jobResult counting the templates uploaded with and without errors. `isEnded` is the field to poll on. Take the id from the bulk upload's nested `jobStatus.userJobId` -- measured 2026-09-24, an empty or unknown id is a 400 from Docmosis rather than an empty status. Costs nothing.
Often connected alongside
Put Docmosis behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.