@usefillo/mcp 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -6
- package/dist/index.js +2458 -219
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -75,16 +75,79 @@ a project switches the context back to the account.
|
|
|
75
75
|
| `fillo_get_form` | none (published) | Fetch a published form's schema, theme, and capabilities. |
|
|
76
76
|
| `fillo_search_examples` | none | Search the curated Fillo example library. |
|
|
77
77
|
| `fillo_docs` | none | Fetch a Fillo docs page as Markdown by topic. |
|
|
78
|
-
| `fillo_list_responses` | `fsk_`
|
|
78
|
+
| `fillo_list_responses` | login token or `fsk_` key | List a form's accepted responses (claimed workspaces only). |
|
|
79
|
+
| `fillo_search_library` / `fillo_get_library_form` | none | Search and read the public form library. |
|
|
79
80
|
| `fillo_get_response` | `fsk_` API key | Fetch one response (claimed workspaces only). |
|
|
80
81
|
| `fillo_response_summary` | `fsk_` API key | Summarize a form's responses without reading every row (claimed workspaces only). |
|
|
81
82
|
| `fillo_claim_status` | `pk_` | Report the provisioned workspace's caps and claim deadline. |
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
the
|
|
87
|
-
|
|
84
|
+
### Managing a claimed workspace
|
|
85
|
+
|
|
86
|
+
Everything a member can do in the Fillo dashboard also has a tool, under the
|
|
87
|
+
SAME NAME the hosted Fillo MCP server uses — one name, one capability, whichever
|
|
88
|
+
server your agent reached. Each one calls the HTTP route the Fillo CLI calls:
|
|
89
|
+
your `fcli_` login token when you have one (`npx @usefillo/cli login` or
|
|
90
|
+
`FILLO_TOKEN`), otherwise an `fsk_` project API key in `FILLO_API_KEY` carrying
|
|
91
|
+
the named scope. With both, the login token wins — a key has no acting human.
|
|
92
|
+
|
|
93
|
+
| Area | Tools | Scope |
|
|
94
|
+
| --- | --- | --- |
|
|
95
|
+
| Form lifecycle | `fillo_pull_form`, `fillo_rename_form`, `fillo_duplicate_form`, `fillo_unpublish_form`, `fillo_discard_changes`, `fillo_delete_form`, `fillo_list_versions` | `forms:read`, `forms:write` |
|
|
96
|
+
| Uploads | `fillo_get_storage`, `fillo_set_storage`, `fillo_list_drive_folders`, `fillo_set_drive_folder`, `fillo_reset_drive_folder` | `storage:manage` |
|
|
97
|
+
| Settings | `fillo_get_settings`, `fillo_update_settings` | `settings:manage` (plus `forms:write` for the presentation keys) |
|
|
98
|
+
| Destinations | `fillo_get_integration`, `fillo_enable_integration`, `fillo_disable_integration`, `fillo_list_connections`, `fillo_select_connection`, `fillo_disconnect_integration`, `fillo_remove_connection_account`, `fillo_rename_discord_channel`, `fillo_hubspot_properties`, `fillo_hubspot_pipelines` | `integrations:manage` |
|
|
99
|
+
| Responses and delivery | `fillo_list_held_responses`, `fillo_release_responses`, `fillo_delete_response`, `fillo_delivery_status`, `fillo_retry_deliveries`, `fillo_redeliver_responses`, `fillo_list_drafts`, `fillo_form_insights`, `fillo_list_respondents`, `fillo_delete_respondent` | `responses:manage`, `respondents:*`; `fillo_form_insights` needs `forms:read` **and** `responses:read` |
|
|
100
|
+
| Webhooks | `fillo_list_webhooks`, `fillo_add_webhook`, `fillo_update_webhook`, `fillo_remove_webhook` | `webhooks:manage` |
|
|
101
|
+
| Workspace | `fillo_rename_workspace`, `fillo_rename_project`, `fillo_get_branding`, `fillo_set_branding`, `fillo_list_members`, `fillo_invite_member`, `fillo_change_member_role`, `fillo_remove_member` | `workspace:manage`, `members:manage` |
|
|
102
|
+
| Credentials | `fillo_list_tokens`, `fillo_revoke_token`, `fillo_list_sync_tokens`, `fillo_create_sync_token`, `fillo_revoke_sync_token`, `fillo_list_api_keys`, `fillo_revoke_api_key`, `fillo_list_agents`, `fillo_revoke_agent` | `workspace:manage` |
|
|
103
|
+
| Developer settings | `fillo_get_code_sync_policy`, `fillo_set_code_sync_policy`, `fillo_get_origins`, `fillo_set_origins`, `fillo_identity_status`, `fillo_enable_identity`, `fillo_disable_identity` | `workspace:manage` |
|
|
104
|
+
|
|
105
|
+
`fillo_delete_form`, `fillo_get_branding`, `fillo_set_branding`,
|
|
106
|
+
`fillo_list_api_keys`, and `fillo_revoke_api_key` need a login token — there is
|
|
107
|
+
no project-API-key route for them, so a leaked key can never enumerate or revoke
|
|
108
|
+
the workspace's credentials. `fillo_delete_response` needs one too, for a
|
|
109
|
+
different reason: its scoped route takes no typed confirmation, so on a project
|
|
110
|
+
API key the confirmation would be checked only by the caller, which is no
|
|
111
|
+
confirmation at all.
|
|
112
|
+
|
|
113
|
+
A webhook's target URL is a credential — the path of a Zapier catch hook or an
|
|
114
|
+
n8n webhook is what authorizes posting to it — so `fillo_delivery_status` names
|
|
115
|
+
destinations without spelling them out: connector-owned hooks come back as
|
|
116
|
+
"Zapier" or "n8n", and other webhooks as their host plus a short fingerprint of
|
|
117
|
+
the path. Read the full URL in the dashboard's Activity page.
|
|
118
|
+
|
|
119
|
+
### The human layer
|
|
120
|
+
|
|
121
|
+
Routine, reversible actions run on the credential alone. Two kinds do not:
|
|
122
|
+
|
|
123
|
+
- **Outward** — unpublishing, starting a third-party destination, adding a
|
|
124
|
+
webhook, releasing or re-sending responses, inviting a member or changing a
|
|
125
|
+
role, a code-sync policy, the allowed origins, or identity verification. These
|
|
126
|
+
take `confirm: true`, and the tool refuses without it with a message telling
|
|
127
|
+
the model to ask a person first. Nothing has changed when it refuses.
|
|
128
|
+
Publishing is the exception on this server: `fillo_push_form` and
|
|
129
|
+
`fillo_publish_form` take no `confirm`, because a login token IS the person
|
|
130
|
+
who ran `fillo login` on this machine — the same reason `fillo publish` runs
|
|
131
|
+
without a flag. The hosted OAuth server, where the grant belongs to an agent
|
|
132
|
+
rather than to you, is what gates publishing behind an approval link.
|
|
133
|
+
- **Destructive** — deleting a form, a response, or a respondent, removing a
|
|
134
|
+
member or an integration account, disconnecting a provider or a Discord
|
|
135
|
+
server, revoking a token, sync token, API key, or MCP grant, turning identity
|
|
136
|
+
verification off. These take `confirm` as a
|
|
137
|
+
string that must equal the target exactly — a member's email, a token id, a
|
|
138
|
+
response id — and the server compares it, so a guess is a 409 that quotes the
|
|
139
|
+
value to retry with.
|
|
140
|
+
|
|
141
|
+
A secret Fillo mints once (a webhook signing secret, an `fsync_` token, an
|
|
142
|
+
identity-verification secret) is returned in that one tool result and never
|
|
143
|
+
again. Store it in a secret manager; it is never written to a log.
|
|
144
|
+
|
|
145
|
+
Write annotations use the conservative worst-case hint because a push can
|
|
146
|
+
replace draft state and a publish can replace the public schema, and
|
|
147
|
+
`openWorldHint` marks exactly the actions whose effect leaves the workspace.
|
|
148
|
+
Every tool is a thin wrapper over Fillo's public HTTP API — the server never
|
|
149
|
+
touches the database and imports no app code, so workspace scoping, rate limits,
|
|
150
|
+
authorization, and validation stay in one place.
|
|
88
151
|
|
|
89
152
|
The three project tools are local-only and require the general token minted by
|
|
90
153
|
`fillo login`. A project-specific handoff and a hosted remote-MCP OAuth grant
|