atmon docs

REFERENCE/TOOLKITS/WEBFLOW.MD

Webflow

Sites and CMS. Manage sites, collections and their fields, and items, publish changes live, and read form submissions and assets.

PropertyValue
Slugwebflow
Definition version0.1.0
Base URLhttps://api.webflow.com/v2
Auth schemesapi_key
Action tools30
By class13 read, 11 write, 6 destructive
Triggers0
Provider rate limit60 requests per 1m, per account

Measured routing accuracy

42 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 30 cases written by hand and 12 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-124/4257.1%
top-842/42100.0%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

api_key

PropertyValue
Placementheader
NameAuthorization
Rendered asBearer {key}

Submit the key with ConnectionsService rather than putting it in a request; it is sealed at rest and never returned.

Tools

30 action tools. The catalog-wide slug is webflow.<tool>, which is what search_tools returns and call_tool takes.

webflow.list_sites

List every Webflow site the connected token can see, each with its id, display name, and short name. Use when the user asks what sites or projects exist in the Webflow account. For one known site's detail use get_site.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /sites.

Takes no arguments.

Also retrieved by: "what projects do I have in webflow", "show every website connected to my webflow account", "which webflow properties can this token reach", "find the id for my webflow project".

webflow.get_site

Get one Webflow site's detail by id: display name, preview URL, time zone, custom domains, and when it was last published. Use when the user names a specific site. For every site use list_sites.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /sites/{{params.site_id}}.

Arguments:

ArgumentTypeRequiredNotes
site_idstringyesWebflow site id, from list_sites.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
customDomainsarray of object
customDomains[].idstring
customDomains[].urlstring
displayNamestring
idstring
lastPublishedstring
previewUrlstring
shortNamestring
timeZonestring

Also retrieved by: "tell me about this webflow project", "when did this website last go live", "what domains are hooked up to this webflow site", "pull up the settings for this webflow property".

webflow.publish_site

Publish a Webflow site's staged changes to its live domains, or to the webflow.io subdomain. Use when the user wants to push, ship, go live, or deploy edits made in the Webflow Designer or CMS. Publishes the whole site; to bring back one removed CMS item use publish_item.

Class write (writes, no confirmation needed). Scopes sites:write. Calls POST /sites/{{params.site_id}}/publish.

Arguments:

ArgumentTypeRequiredNotes
custom_domainsarray of stringnoCustom domain ids to publish to. Omit to publish to every connected domain.
publish_to_webflow_subdomainbooleannoAlso publish to the site's *.webflow.io subdomain. Defaults to true.
site_idstringyesWebflow site id to publish, from list_sites.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
queuedboolean

Also retrieved by: "push my webflow changes live", "ship the staged edits to the real domain", "deploy this website now", "go live with what's in the designer", "send this site out to its custom domain".

webflow.list_collections

List the CMS collections defined on a Webflow site, each with its id, display name, and slug. Use when the user asks what CMS collections, content types, or data models a site has. For one collection's fields use get_collection.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /sites/{{params.site_id}}/collections.

Arguments:

ArgumentTypeRequiredNotes
site_idstringyesWebflow site id, from list_sites.

Also retrieved by: "what content types are set up on this webflow site", "show me the data models on this website", "what's the structure of this site's content", "find the id for a webflow content type".

webflow.get_collection

Get one Webflow CMS collection's detail by id, including its full field list with each field's type and whether it is required. Use when the user asks what fields or structure a collection has before creating or editing items in it.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /collections/{{params.collection_id}}.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id, from list_collections.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
fieldsarray of object
fields[].displayNamestring
fields[].idstring
fields[].isRequiredboolean
fields[].slugstring
fields[].typestring
idstring
singularNamestring
slugstring

Also retrieved by: "what fields does this content type have", "show me the schema for this webflow model", "what columns exist on this data type".

webflow.create_collection

Create a new CMS collection on a Webflow site, e.g. Blog Posts or Team Members. Use when the user wants a new content type or data model to hold CMS items. Add fields to it afterward with create_collection_field.

Class write (writes, no confirmation needed). Scopes cms:write. Calls POST /sites/{{params.site_id}}/collections.

Arguments:

ArgumentTypeRequiredNotes
display_namestringyesPlural display name for the collection, e.g. "Blog Posts".
singular_namestringyesSingular name for one item, e.g. "Blog Post".
site_idstringyesWebflow site id to create the collection on, from list_sites.
slugstringnoURL slug for the collection. Omit to derive it from display_name.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
idstring
slugstring

Also retrieved by: "set up a new content type on this website", "build a fresh data model for blog posts", "start a new structured content section on the site".

webflow.delete_collection

Permanently delete a CMS collection from a Webflow site, along with every item in it. Use when the user wants a whole content type removed for good, not just one item. Irreversible.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes cms:write. Calls DELETE /collections/{{params.collection_id}}.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id to delete, from list_collections.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "wipe out this whole content type for good", "get rid of this data model and everything in it", "remove this entire section of structured content".

webflow.create_collection_field

Add a new field to an existing Webflow CMS collection, e.g. a text, image, or reference field. Use when the user wants a collection to hold a new piece of data. To edit an existing field's label instead use update_collection_field.

Class write (writes, no confirmation needed). Scopes cms:write. Calls POST /collections/{{params.collection_id}}/fields.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id to add the field to, from list_collections.
display_namestringyesLabel shown for the field in the Webflow Designer.
field_typestring, one of PlainText, RichText, Image, MultiImage, VideoLink, Link, Email, Phone, Number, DateTime, Switch, Color, Option, Reference, MultiReference, FileyesThe field's data type.
help_textstringnoOptional helper text shown to editors filling in this field.
is_requiredbooleannoWhether an item must fill in this field to be valid. Defaults to false.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
idstring
typestring

Also retrieved by: "add a new column to this content type", "give this data model a new property", "I need a spot to store phone numbers on this content type".

webflow.update_collection_field

Rename a Webflow CMS collection's own field definition, or change its label, help text, or required status. This edits the schema itself, not the content stored in it; to change an item's data use update_item instead. The field's data type cannot be changed once created.

Class write (writes, no confirmation needed). Scopes cms:write. Calls PATCH /collections/{{params.collection_id}}/fields/{{params.field_id}}.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id the field belongs to.
display_namestringnoNew label for the field.
field_idstringyesWebflow field id to update, from get_collection.
help_textstringnoNew helper text shown to editors filling in this field.
is_requiredbooleannoWhether an item must fill in this field to be valid.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
idstring

Also retrieved by: "relabel this column on the content type", "change the help text on this property", "make this field required on the data model".

webflow.delete_collection_field

Permanently delete a field from a Webflow CMS collection, and the data stored in it on every item. Use when the user wants a field removed for good, not just left blank. Irreversible.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes cms:write. Calls DELETE /collections/{{params.collection_id}}/fields/{{params.field_id}}.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id the field belongs to.
field_idstringyesWebflow field id to delete, from get_collection.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "remove this column from the content type entirely", "drop this property off the data model for good", "get rid of a field and the data stored in it".

webflow.list_items

List the CMS items in a Webflow collection, each with its id, draft and archived status, and field values. Use when the user asks what entries, posts, or rows exist in a collection. For one known item use get_item.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /collections/{{params.collection_id}}/items.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id, from list_collections.
limitintegernoMaximum items to return. Default 100.
offsetintegernoNumber of items to skip, for paging past the first page.

Also retrieved by: "what entries exist in this content type", "show me the rows in this data model", "what posts are sitting in this section right now".

webflow.get_item

Get one Webflow CMS item's full detail by id: its field values, draft and archived status, and publish history. Use when the user names a specific entry, post, or row. For every item in a collection use list_items.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /collections/{{params.collection_id}}/items/{{params.item_id}}.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id the item belongs to.
item_idstringyesWebflow item id, from list_items.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
fieldDataobject
idstring
isArchivedboolean
isDraftboolean
lastPublishedstring
lastUpdatedstring

Also retrieved by: "pull up the details on this entry", "what's stored in this specific row", "show me one record from this content type".

webflow.create_item

Create a new CMS item in a Webflow collection, e.g. a new blog post or team member entry. Use when the user wants to add an entry, row, or record to a collection. The item is staged only until published with publish_item or a site-wide publish_site.

Class write (writes, no confirmation needed). Scopes cms:write. Calls POST /collections/{{params.collection_id}}/items.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id to create the item in, from list_collections.
field_dataobjectyesField values for the item, keyed by field slug, e.g. name and slug plus the collection's custom fields.
is_archivedbooleannoCreate the item as archived. Defaults to false.
is_draftbooleannoCreate the item as a draft, hidden from publish. Defaults to false.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
fieldDataobject
idstring
isArchivedboolean
isDraftboolean

Also retrieved by: "add a new blog post to the site", "write a fresh entry into this content type", "file a new team member into the roster".

webflow.update_item

Update the field values (the content) stored on an existing Webflow CMS item, or change its draft or archived status. Use when the user wants to edit, correct, or change data on one entry, post, or row that already exists. For renaming a collection's own field definition instead of an item's data, use update_collection_field. Changes stay staged until published with publish_item or publish_site.

Class write (writes, no confirmation needed). Scopes cms:write. Calls PATCH /collections/{{params.collection_id}}/items/{{params.item_id}}.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id the item belongs to.
field_dataobjectnoField values to change, keyed by field slug. Fields left out are unchanged.
is_archivedbooleannoSet the item's archived status.
is_draftbooleannoSet the item's draft status.
item_idstringyesWebflow item id to update, from list_items.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
fieldDataobject
idstring
isArchivedboolean
isDraftboolean

Also retrieved by: "fix the copy on this entry", "change the values on this row", "edit a post that's already in the content type", "update the data stored on this cms entry", "change what one entry's content actually says".

webflow.delete_item

Permanently delete a CMS item from a Webflow collection, staged and live copies both. Use when the user wants an entry, post, or row removed for good, not just taken off the live site. Irreversible; to only remove it from the published site use unpublish_item.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes cms:write. Calls DELETE /collections/{{params.collection_id}}/items/{{params.item_id}}.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id the item belongs to.
item_idstringyesWebflow item id to delete, from list_items.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "erase this entry from the content type for good", "permanently remove this row and its data", "scrub this post out of the site entirely".

webflow.publish_item

Publish one or more staged Webflow CMS items to the live site, without republishing the whole site. Use when the user wants a specific new or edited entry to go live now. For pushing every staged change across the site use publish_site.

Class write (writes, no confirmation needed). Scopes cms:write. Calls POST /collections/{{params.collection_id}}/items/publish.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id the items belong to.
item_idsarray of stringyesWebflow item ids to publish, from list_items.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
publishedItemIdsarray of string

Also retrieved by: "push just this one entry live", "make this new post visible on the real site", "send this edited row out without a full deploy".

webflow.unpublish_item

Take one Webflow CMS item off the live, published site while keeping its staged CMS record intact. Use when the user wants to hide, pull, or unpublish an entry from the live site without deleting it. To remove it entirely instead use delete_item.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes cms:write. Calls DELETE /collections/{{params.collection_id}}/items/{{params.item_id}}/live.

Arguments:

ArgumentTypeRequiredNotes
collection_idstringyesWebflow collection id the item belongs to.
item_idstringyesWebflow item id to unpublish, from list_items.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
unpublishedboolean

Also retrieved by: "pull this entry off the live site but keep the draft", "hide this post from visitors without deleting it", "take this row down from production for now".

webflow.list_forms

List the forms defined on a Webflow site, each with its id, name, and published page path. Use when the user asks what forms a site has. For one form's submissions use list_form_submissions.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /sites/{{params.site_id}}/forms.

Arguments:

ArgumentTypeRequiredNotes
site_idstringyesWebflow site id, from list_sites.

Also retrieved by: "what forms does this website have", "show me the sign-up or contact forms on the site", "find the id for a form on this project".

webflow.get_form

Get one Webflow form's detail by id: its name, published page path, and field structure. Use when the user names a specific form. For every form on a site use list_forms.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms/{{params.form_id}}.

Arguments:

ArgumentTypeRequiredNotes
form_idstringyesWebflow form id, from list_forms.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
fieldsobject
idstring
publishedPathstring

Also retrieved by: "what fields does this contact form ask for", "tell me about the structure of this form", "show me the setup for this one webflow form".

webflow.list_form_submissions

List the responses submitted to a Webflow form, each with its submitted values and submission date. Use when the user asks what leads, signups, or responses came in through a form. For one submission's full detail use get_form_submission.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms/{{params.form_id}}/submissions.

Arguments:

ArgumentTypeRequiredNotes
form_idstringyesWebflow form id, from list_forms.
limitintegernoMaximum submissions to return. Default 100.

Also retrieved by: "what leads came in through this form", "show me the responses people sent", "who filled out this signup form recently", "pull the recent entries from this contact form".

webflow.get_form_submission

Get one Webflow form submission's full detail by id: every field the respondent filled in and when they submitted it. Use when the user asks about one specific lead or response, not the whole list.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /form_submissions/{{params.submission_id}}.

Arguments:

ArgumentTypeRequiredNotes
submission_idstringyesWebflow form submission id, from list_form_submissions.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
dateSubmittedstring
formIdstring
formResponseobject
idstring

Also retrieved by: "what did this one respondent actually write", "show me the full details on this lead", "pull up a single form response".

webflow.update_form_submission

Edit the field values recorded on a Webflow form submission. Use when the user wants to correct a typo'd field or annotate a lead after it came in, not to remove the submission entirely.

Class write (writes, no confirmation needed). Scopes forms:write. Calls PATCH /form_submissions/{{params.submission_id}}.

Arguments:

ArgumentTypeRequiredNotes
form_responseobjectyesField values to change, keyed by field name. Fields left out are unchanged.
submission_idstringyesWebflow form submission id to update, from list_form_submissions.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
formResponseobject
idstring

Also retrieved by: "fix a typo in this lead's info", "correct the email on this submitted response", "annotate this form entry after the fact".

webflow.delete_form_submission

Permanently delete a Webflow form submission, e.g. a spam or test entry. Use when the user wants a response, lead, or submission erased for good. Irreversible.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes forms:write. Calls DELETE /form_submissions/{{params.submission_id}}.

Arguments:

ArgumentTypeRequiredNotes
submission_idstringyesWebflow form submission id to delete, from list_form_submissions.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "clear out this spam response for good", "erase a test submission from the form", "remove a fake entry that came through the form".

webflow.list_assets

List the files in a Webflow site's asset library, each with its id, file name, and hosted URL. Use when the user asks what images or files are uploaded to a site. For one known asset use get_asset.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /sites/{{params.site_id}}/assets.

Arguments:

ArgumentTypeRequiredNotes
limitintegernoMaximum assets to return. Default 100.
site_idstringyesWebflow site id, from list_sites.

Also retrieved by: "what images are uploaded to this website", "show me the media library for this site", "what files live in the asset folder".

webflow.get_asset

Get one Webflow asset's detail by id: its hosted URL, file size, and content type. Use when the user names a specific image or file in the asset library. For every asset on a site use list_assets.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /assets/{{params.asset_id}}.

Arguments:

ArgumentTypeRequiredNotes
asset_idstringyesWebflow asset id, from list_assets.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
contentTypestring
displayNamestring
hostedUrlstring
idstring
originalFileNamestring
sizeinteger

Also retrieved by: "tell me about this uploaded image", "what's the size and type of this file in the library", "pull up the hosted link for this picture".

webflow.create_asset

Register a new file's metadata in a Webflow site's asset library and get back the signed upload target for it. Use when the user wants to add an image or file to the asset library. The returned target is where the file bytes are then uploaded, outside this toolkit.

Class write (writes, no confirmation needed). Scopes assets:write. Calls POST /sites/{{params.site_id}}/assets.

Arguments:

ArgumentTypeRequiredNotes
file_hashstringyesMD5 hash of the file's bytes, required by Webflow to authorize the upload.
file_namestringyesName of the file being uploaded, e.g. "team-photo.jpg".
site_idstringyesWebflow site id to add the asset to, from list_sites.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
hostedUrlstring
idstring
uploadUrlstring

Also retrieved by: "register a new photo in the media library", "add a file to the site's asset library", "get an upload slot for a new image".

webflow.update_asset

Rename a Webflow asset's display name in the asset library. Use when the user wants to relabel an uploaded image or file, not replace its bytes.

Class write (writes, no confirmation needed). Scopes assets:write. Calls PATCH /assets/{{params.asset_id}}.

Arguments:

ArgumentTypeRequiredNotes
asset_idstringyesWebflow asset id to rename, from list_assets.
display_namestringyesNew display name for the asset.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
idstring

Also retrieved by: "rename this uploaded picture", "relabel a file in the media library", "give this image a new display name".

webflow.delete_asset

Permanently delete a file from a Webflow site's asset library. Use when the user wants an uploaded image or file removed for good. Irreversible; any live page still referencing it will show a broken link.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes assets:write. Calls DELETE /assets/{{params.asset_id}}.

Arguments:

ArgumentTypeRequiredNotes
asset_idstringyesWebflow asset id to delete, from list_assets.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "remove this image from the media library for good", "erase an uploaded file entirely", "clear out an old picture from the asset library".

webflow.list_asset_folders

List the folders used to organize a Webflow site's asset library, each with its id and name. Use when the user asks how assets are grouped or wants a folder id before filing an upload into one.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /sites/{{params.site_id}}/asset_folders.

Arguments:

ArgumentTypeRequiredNotes
site_idstringyesWebflow site id, from list_sites.

Also retrieved by: "how are the files organized on this site", "show me the folders in the media library", "find a folder id before I file something into it".

webflow.create_asset_folder

Create a new folder to organize a Webflow site's asset library. Use when the user wants assets grouped into a new folder, e.g. by campaign or page.

Class write (writes, no confirmation needed). Scopes assets:write. Calls POST /sites/{{params.site_id}}/asset_folders.

Arguments:

ArgumentTypeRequiredNotes
display_namestringyesName for the new asset folder.
parent_folder_idstringnoId of a parent folder to nest this one under. Omit to create it at the top level.
site_idstringyesWebflow site id to create the folder on, from list_sites.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
idstring

Also retrieved by: "make a new folder to group these uploads", "set up a subfolder for campaign images", "organize the media library with a fresh directory".