Fillo

Fillo MCP server — provision, scaffold, publish, and query forms from your coding agent.

OtherTypeScriptv0.11.0

Fillo SDKs

Fillo is headless form infrastructure. You build a form in the hosted editor or define it in code, then render it inside your own product with your UI — React, Vue, Svelte, Astro, or plain browser JavaScript — instead of dropping in an iframe. One shared schema drives the builder, the renderers, API validation, and the responses grid, so a form looks and behaves like part of your app.

Files go browser-direct into storage you own (Google Drive, Box, or an S3-compatible bucket), resumable where the provider supports it. Responses land in a schema-aware grid with search, file downloads, a detail drawer, and CSV export, and can be delivered by signed webhooks, Google Sheets, Notion, Zapier, or email.

This repository holds the public SDK packages and the coding-agent skill. The product itself lives at fillo.so.

Packages

PackagenpmWhat it is
@usefillo/corenpm · packages/coreFramework-agnostic form schema, validation, conditional-logic engine, prefill, formatting, JS client, and the browser-direct upload protocol. Zero framework dependencies.
@usefillo/reactnpm · packages/reactHeadless React renderer, hooks, upload UI, and an optional default stylesheet you can override or replace.
@usefillo/domnpm · packages/domFramework-neutral DOM renderer, custom element, and a standalone browser bundle for Vue, Svelte, Astro, and vanilla apps.
@usefillo/clinpm · packages/clifillo — start a workspace, stage and publish forms, and install the Agent Skill from your terminal.
@usefillo/mcpnpm · packages/mcpMCP server — provision, scaffold, publish, and query forms from a coding agent.

The canonical coding-agent skill (the same bundle the CLI installs) lives in plugins/fillo/skills/build-with-fillo. All packages are MIT licensed.

Quickstart

Install a renderer and drop a published form into your app. @usefillo/react and @usefillo/dom both re-export the parts of @usefillo/core you need, so you rarely install core directly.

// React / Next.js
import { FilloForm } from "@usefillo/react";
import "@usefillo/react/styles.css"; // optional default theme — or bring your own

<FilloForm formId="cust-feedback" onSubmitted={(responseId) => confetti()} />
// Vue, Svelte, Astro, or plain browser JavaScript
import { createClient, defineForm, renderForm } from "@usefillo/dom";
import "@usefillo/dom/styles.css";

const client = createClient({ key: "pk_live_…" });
const form = defineForm({
  id: "cust-feedback",
  pages: [{ id: "p1", blocks: [
    { id: "email", kind: "email", label: "Work email", required: true },
    { id: "message", kind: "long_text", label: "What should we know?" },
  ] }],
});

renderForm("#fillo-form", { form, client, onSubmitted: (id) => console.log(id) });

Building with a coding agent

Fillo ships a provider-neutral Agent Skill that teaches your agent to build, embed, style, sync, and verify a Fillo form. Install it into a project:

npx @usefillo/cli@latest skill install

In Claude Code or Codex, this repository is also a plugin marketplace. The plugin bundles the skill with the hosted Fillo MCP server:

/plugin marketplace add jacobfunch/usefillo
/plugin install fillo@fillo

Then point your agent at the setup flow. From a Build with AI handoff in the product the CLI also prints a one-line npx @usefillo/cli agent bootstrap … command that installs the skill and connects the live workspace in a single run. See fillo.so/agents for the full agent path and fillo.so/docs for the reference.

Links

About this repository

This repo is a read-only mirror of the public SDK packages. They are developed in a private monorepo and mirrored here on release, so the code you see is the same code published to npm. History here is disposable: the mirror is force-pushed by an automated job on every release, so don't fork from a specific commit expecting it to stay put — depend on the npm packages instead.

Issues and questions are welcome here — see CONTRIBUTING.md. Pull requests against package code can't be merged directly, since the source lives upstream; open an issue and we'll bring the fix through the private repo.

Note on the account name. This mirror currently lives at github.com/jacobfunch/usefillo while the usefillo GitHub organization is being claimed. Once it is, the repo will be transferred to the org; GitHub keeps the old path redirecting, so existing links and clones keep working.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @usefillo/mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-jacobfunch-usefillo": {
      "command": "npx",
      "args": [
        "-y",
        "@usefillo/mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@usefillo/mcpnpm

Compatible MCP Clients

Fillo works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More