Skip to main content
Glama
formfeed-dev

formfeed

Official
README.md
# Formfeed packages

Client libraries, command line tools and integrations for [Formfeed](https://formfeed.dev/?utm_source=github), the API
for generating PDFs and images from templates. Documentation lives at
[docs.formfeed.dev](https://docs.formfeed.dev).

| Package | Registry | What it is |
|---|---|---|
| [`@formfeed/sdk`](packages/sdk-ts) | [npm](https://www.npmjs.com/package/@formfeed/sdk) | TypeScript client: renders, batches, templates, webhooks. No dependencies, Web APIs only |
| [`formfeed`](packages/sdk-python) | [PyPI](https://pypi.org/project/formfeed/) | Python client, sync and async |
| [`formfeed`](packages/cli) | [npm](https://www.npmjs.com/package/formfeed) | CLI: templates as files, offline preview and validation, renders through the API |
| [`@formfeed/engine`](packages/engine) | [npm](https://www.npmjs.com/package/@formfeed/engine) | The template engine (Jinja2, Liquid, Handlebars) the API and the editor use |
| [`@formfeed/devkit`](packages/devkit) | [npm](https://www.npmjs.com/package/@formfeed/devkit) | Template folders, project config and local rendering |
| [`@formfeed/testing`](packages/testing) | [npm](https://www.npmjs.com/package/@formfeed/testing) | Vitest and Jest matchers for templates |
| [`@formfeed/mcp`](packages/mcp) | [npm](https://www.npmjs.com/package/@formfeed/mcp) | Model Context Protocol server for AI agents [![formfeed MCP server – quality and maintenance score on Glama](https://glama.ai/mcp/servers/formfeed-dev/formfeed/badges/score.svg)](https://glama.ai/mcp/servers/formfeed-dev/formfeed) |
| [`n8n-nodes-formfeed`](packages/n8n-nodes-formfeed) | [npm](https://www.npmjs.com/package/n8n-nodes-formfeed) | n8n community node |

Every npm package is built and published from this repository by
[GitHub Actions](.github/workflows/release.yml) with
[provenance](https://docs.npmjs.com/generating-provenance-statements), and the Python package with
[trusted publishing](https://docs.pypi.org/trusted-publishers/), so each release can be traced to
the commit and workflow run it came from.

## Development

Node 22 or newer and pnpm (the version in `package.json`, `corepack enable` picks it up):

```bash
pnpm install
pnpm nx run-many -t lint test --exclude sdk-python   # TypeScript packages
pnpm nx run-many -t bundle smoke                     # build, pack and try every npm package
cd packages/sdk-python && pip install pytest httpx pydantic && python -m pytest -q
```

This repository is generated from Formfeed's main repository, where the packages are developed
together with the API they talk to. See [CONTRIBUTING.md](CONTRIBUTING.md) for how issues and pull
requests are handled.

## Licence

MIT, see [LICENSE](LICENSE). Bundled third-party code keeps its own licence; the CLI and MCP packages
list it in `THIRD_PARTY_LICENSES.md`.

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target a clearly distinct operation (listing, reading source, reading schema, saving, validating, rendering, converting, checking status, validating invoices, workspace info), and the descriptions explicitly cross-reference each other (e.g. render vs convert_to_pdf, validate_template vs render). The remaining soft overlaps are get_template_schema vs get_template_source (both 'read about a template') and validate_template vs check_invoice (both 'validate'), but the descriptions disambiguate them well enough to avoid misselection.

Naming Consistency4/5

Names follow a consistent snake_case verb_noun pattern: get_template_source, get_template_schema, get_render, get_workspace, list_templates, save_template, validate_template, convert_to_pdf, check_invoice. The lone deviation is `render`, a bare verb with no object, which slightly breaks the pattern but is unambiguous in context.

Tool Count5/5

Ten tools is well within the sweet spot and each earns its place: discovery, schema, source, edit, validation, render, conversion, polling, e-invoice check, and workspace context. Nothing feels padded or redundant.

Completeness4/5

The core lifecycle is covered: list/read/schema/save-draft/validate/render/convert/poll, with a deliberate human publish step and invoice validation for e-invoicing. Gaps exist around template housekeeping (no archive/delete, no list of versions or past renders beyond a single id), but agents can work around these via the review_url and Formfeed UI.

Maintenance

ActivityActive
ResponsivenessNo issues