What your AI can do
The full capability list for the Floot connector — what your assistant does on its own, and the few things you finish in the browser.
Once Floot is connected, your AI assistant has one set of tools for reading, writing, running, and publishing your Floot projects. This page is the honest list: what it can do, what it cannot, and where the line falls.
Not connected yet? Claude and ChatGPT install Floot in one click — see Build from Claude & ChatGPT. For everything else, see Connect any MCP client.
Every client gets the same tools
Floot does not offer a reduced tool set to any client. The Floot app from the ChatGPT app directory gets the full set in a regular ChatGPT chat — you do not need Codex to build. The one exception is a ChatGPT feature that uses only tools named search and fetch, such as deep research: there it can find and read your projects but not change them. See Connector troubleshooting.
Capability matrix
| Task | Your AI assistant | How |
|---|---|---|
| Create a project | Yes | create_project makes a new Floot project and returns its id. |
| Find your projects | Yes | list_projects lists projects you own and ones shared with you; search and fetch search and read them, and are the two tools ChatGPT features such as deep research can call. |
| Read your code | Yes | list_files, read_file, read_files, search_code. |
| Go back to an earlier version of a file | Yes | read_file and read_files with older_than step back through a file's history one change at a time. Restoring a version is an ordinary write, so it can be undone too. |
| Write and edit code | Yes | write_file, edit_file, apply_patch, rename_file, copy_file, delete_file. |
| Add or remove npm packages | Yes | add_dependency and remove_dependency, validated against Floot's supported set. Pinning a safe version of a vulnerable package one of your packages pulls in is a project setting, made with update_project_metadata — see Security and data. |
| Add a database, auth, or a login provider | Yes | provision_resource creates Floot-managed integrations server-side and seeds the code. There are no keys to paste. list_resources shows what is already connected — names and types, never secret values. |
| Run SQL | Yes | query_database for reads, execute_sql for writes and migrations, pull_database_schema to regenerate typed helpers. |
| Read runtime logs | Yes | get_logs reads the preview's backend requests from the last hour and the browser console and network activity of your open project view — the first step for any 500, blank page, or failed request. It also reads your published app's backend logs (kept for 90 days), the push notifications your app sent, and the state of scheduled and queued jobs: what is scheduled, what is running now, and which runs were cut off. |
| Typecheck and run tests | Yes | typecheck, and run_tests for the project's Jasmine specs — see Testing your app. |
| Run code | Yes | run_code_in_vm runs a Node snippet on the project's VM; run_code_in_browser runs inside the live app to read its DOM, which needs the project open in a browser tab that is in front — see Connector troubleshooting. |
| Run your app's own functions | Yes | call_app_function runs a function your app exports for other apps, in the published app, and returns its result. It runs for real, so a function that writes, sends or charges does so. See Connected apps. |
| Look up payments | Yes, read-only | get_live_payments reads your Floot Payments records in Stripe: live payments, or the test payments made in the preview. It cannot refund or cancel; you do that in Stripe. |
| Show you the app | Yes | get_preview_url returns a live link, screenshot_preview captures the screen, navigate_preview points your open preview at a page, a component's examples, a page's example screens, a design on the design canvas, or a page's link preview card. |
| See what you are looking at | Yes | get_current_context reads your open project view — selected element, current page, whether you drew an annotation; view_annotation opens the drawing. |
| Generate images | Yes | generate_image writes AI images into the project. This is the one action that also spends Floot credits. |
| Take a file from you | Yes | request_user_upload shows an upload card you pick a file in; upload_asset uploads bytes it already holds. |
| Delete stored files | Yes, when you ask | delete_storage_file deletes files your app stored, for good. To stop using a file, your assistant removes it from the code instead. |
| Ask for an API key | Yes, through your browser | request_external_resource creates the request and hands you a floot.com link. Keys never travel through the chat, and your assistant only learns the environment variable name. |
| Publish, update, unpublish | Yes | publish_app, unpublish_app, and get_publish_status. Publishing runs the same code as the Publish button in the Floot web app. On an app's first publish your assistant normally shows you a publish form, where you pick the .floot.app address and press Publish; nothing goes live until you do. An app that is already live is published again at once. A privately published app stays private when your assistant publishes it again; switching between public and private is done on the Publish screen. |
| Follow or stop long-running work | Yes | Slow calls return a job id. get_job_status checks on it and cancel_request stops it — both still work after you hit your daily limit. |
| Name a restore point | Yes | create_checkpoint labels a point you can revert to from the Checkpoints panel in your project view. |
| Change project settings | Yes | update_project_metadata — title, description, icon, splash, mobile app ID, server-side rendering, iOS permission strings, iPhone-only or iPad-only iOS builds, the share-sheet target, the native status bar, the visitor-analytics mode, page headers such as who may embed the app, how pages are preloaded, the page language, opting out of Floot's built-in AI, the name under the installed mobile app's icon, and — only when you ask for them — pinned versions of packages your packages pull in, and server memory. See Native app features. |
| Set up a custom domain | Starts it, you finish it | publish_app creates the request and gives you a link to the wizard. |
| Build the native mobile apps | Once a store is connected | publish_app builds the app only when an Apple or Google Play account is connected to the project. Without one it returns a card that sends you to floot.com to connect one. For the APK alone, open the project on floot.com, click Publish, and switch on Publish mobile app. |
| Download the code export zip | No — you do this yourself | The zip is assembled in your browser. Open the project on floot.com, click the arrow beside the project's name at the top left, and choose Download code as zip. |
| Buy anything or change your plan | No — you do this yourself | There is no checkout tool. Plans and purchases are pages on floot.com you open and buttons you click — start at the plan page. |
Building native mobile apps
Your assistant can build the app only once an Apple or Google Play account is connected to the project. Ask it for an iOS or Android build and it calls publish_app with the mobile option. With no store connected, that returns a card that sends you to floot.com to connect one, and nothing is published. With a store connected, it publishes the web app and uploads the new build to the store. On Free and Pro, each such publish uses one of your monthly app builds.
Everything else happens on floot.com. That includes the first build without a store, the Android APK, the project zip, and every test build: your assistant always publishes the live app. Open the project there — any preview link your assistant hands you from get_preview_url goes there, and signed in as the owner you get the full Publish screen. Click Publish, switch on Publish mobile app, and publish. The APK and zip then appear under Last build. Every plan includes app builds: 2 a month on Free, 12 on Pro, unlimited on Power. See Creating mobile apps.
Setting up a custom domain
Your assistant can start a custom-domain setup but cannot complete one — DNS setup needs you. Ask for a domain and it calls publish_app, which creates a request and gives you a floot.com link to open. The app has to be live on a .floot.app subdomain first.
The request stays open for one hour and only one can be pending per project. If it expires, ask again and your assistant creates a fresh one. It is not blocking — your assistant can carry on with other work while you finish the wizard.
Opening the link takes you to your project with the Add Custom Domain wizard already open. Enter the domain and add the DNS records it shows you. Custom domains are a paid feature, resolved against the project's owner — a paid collaborator on a free owner's project still cannot attach one. See How to add a custom domain.
Getting your code out
Your assistant cannot produce the export zip — it is built in your browser, not on Floot's servers. What it can do is read any file in the project with read_file, read_files, and search_code, so asking it to print or copy specific files works fine.
For the whole project as a file, open the project on floot.com, click the arrow beside the project's name at the top left, and choose Download code as zip. Code export is a paid-plan feature — see Code, data, and exports.
No tool can spend your money
Nothing your assistant can call buys anything. There is no checkout tool, no plan-change tool, and no way for an agent to add a payment method or top up an account. Every purchase on Floot is a page you open and a button you click. This is deliberate, not an oversight: an agent must never be able to spend your money by calling a tool.
The one thing a tool can consume is Floot credits you already have, and only through generate_image. Those credits come off the project owner's account rather than whoever is driving the chat — so building in someone else's project spends their credits, not yours. Everything else is metered in build actions, which come with your plan.
Projects other people shared with you
Your assistant can read and edit any project you own. A project another Floot user shared with you needs a paid Floot plan on your own account before the connector will open it, for reading or writing — any paid plan does, not one specific tier. A public project's code stays readable by anyone, but its database, logs and stored files are open only to its owner and collaborators, and write access never rides on a project being public.
Limit what an assistant can do
By default, every assistant you connect can do everything your Floot account can. To limit one, open your account page and, under Connected agents, click the access setting on that assistant's row. It opens What … may do, with the assistant's name (for example What Claude may do), where you choose one of three levels:
- Full access
- Everything your account can do, including publishing and app builds. This is the default, and what every connection had before limits existed.
- Edit, no publishing
- The assistant can change code and data, but it cannot publish, update or unpublish an app, or start an app-store build. You publish from the Publish button in the project's editor on floot.com. Database changes still reach the live app straight away.
- Read only
- The assistant can read files, logs and data, but cannot change anything. Running tests or code counts as a change, because that code can write.
Under Projects you can also limit the assistant to one project. That includes the project's branches. The assistant cannot open other projects, and it cannot do anything that works across your whole account: listing or searching your projects, or creating a new one. Give it the project's link or id when you start, since it cannot look the project up. ChatGPT features that only search and fetch, such as deep research, cannot use an assistant limited to one project.
- Floot checks the limit on every request, so it holds whatever the assistant is asked to do. A refused request changes nothing and does not use any of your build actions. The assistant is told what you set, and that only you can change it.
- Changes apply within a minute. The setting stays if you disconnect the assistant and connect it again.
- A limited assistant shows a shield next to its row under Connected agents.
- Only connected assistants are limited. Floot's own chat in the editor, and what you do yourself on floot.com, are not affected.
Some ways to use it: let a teammate's assistant or a second AI read your code with Read only; let your assistant build while you keep the publish step with Edit, no publishing; keep an assistant to one app with a one-project limit.
Let your app edit its own code
Your app can change its own Floot project through the same tools your assistant uses. Build an agent into the app that edits its pages and endpoints, checks its work and publishes the result: for example an admin chat where you ask for a new report page, or a bot that fixes the text it is told about. The app can change itself and nothing else.
How to set it up: from Claude, ChatGPT or another assistant connected to Floot, ask for it (e.g. "let this app edit its own code, and add an admin chat that can change its pages"). Your assistant adds a Self-edit integration to the project, which gives the app's backend two values, FLOOT_PROJECT_TOKEN and FLOOT_PROJECT_ID, and writes the code that uses them. It is set up only from a connected assistant: there is no button for it on floot.com, and Floot's own chat in the editor cannot add it.
- This project only. The app's key works on its own project and refuses any other. It cannot list or open your other projects, create a project, add integrations, ask you for keys or files, or unpublish the app. It can read and change its code and database, run tests, publish, and create images.
- Easy to undo. Before the app's first change after 30 minutes without one, Floot saves a checkpoint named Before self-edit, so you can go back from the Checkpoints panel.
- Copies get their own key. A duplicate, a project made from it as a template, or a copy you send to someone gets a new key that works only on the copy. The original's key never goes with it.
- It counts like any assistant. The app's calls use the build actions of the account that created the project, and
generate_imageuses its Floot credits. An app that runs out stops changing itself until the next day. - When the key arrives. The preview has it as soon as it is set up; your published app gets it at its next publish.
To turn it off, delete the Self-edit integration from the project under Services → Integrations. The key stops working straight away. Setting it up again makes a new key; the old one never works again.
Whoever can talk to the app's agent can change the app
If people other than you can use that agent (a chat in a public app, a bot that reads emails or messages), make the app ask you before it writes or publishes anything, and treat what people send it as text, not instructions. Keep the key on the server: never send it to the browser, store it in the database or a file, or write it to logs. Your assistant follows these rules when it writes the code.
How your assistant learns Floot's conventions
Floot ships its own documentation to your assistant through the get_guides tool — an overview, design guidance, a first-build walkthrough, backend primitives, publishing, resources, and more. If a build starts drifting away from how Floot works, telling your assistant to read the relevant guide is usually faster than explaining the conventions yourself.