community-ff-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@community-ff-mcpList my FlutterFlow projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
community-ff-mcp
Disclaimer: This is an unofficial, community-built project. It is not affiliated with, endorsed by, or sponsored by FlutterFlow. "FlutterFlow" is a trademark of FlutterFlow Inc. This project uses the FlutterFlow public API.
MCP server for the FlutterFlow Project API. Enables AI-assisted FlutterFlow development through Claude and other MCP-compatible clients.
What This MCP Does Best
This MCP excels at reading, exploring, and understanding your FlutterFlow projects. Here's what it's great at:
Project exploration — Browse your projects, pages, components, and file structure
Understanding functionality — Get clear summaries of what a page or component does, including its widget tree, actions, parameters, and state
Tracing usage — Find everywhere a component is used, or every navigation action that leads to a page
Inspecting configuration — View theme settings, API endpoints, data models, custom code, app state, integrations, and more
Searching — Search project files by keyword, prefix, or regex to find exactly what you need
YAML reference — Built-in documentation for FlutterFlow's YAML schema, so your AI assistant can understand and generate valid YAML
Guided editing — A workflow guide (
get_editing_guide) that walks through the correct steps before making any YAML changes
In short: Think of it as giving your AI assistant full read access to your FlutterFlow project, plus careful write access when needed.
Related MCP server: Claude MCP Server Integration
Quick Start
1. Get Your FlutterFlow API Token
You need a FlutterFlow API token to authenticate. Here's how to get one:
Open FlutterFlow and log in
Click your profile picture (bottom-left corner)
Go to Account Settings
Scroll to the API Token section
Click Copy to copy your token
Note: The API token requires a paid FlutterFlow subscription (Standard plan or above). Free-tier accounts do not have API access.
2. Add to Your MCP Client
Choose your AI client below and follow the setup instructions.
Run this command to add the MCP server:
claude mcp add flutterflow -e FLUTTERFLOW_API_TOKEN=your_token_here -- npx -y community-ff-mcpReplace your_token_here with the token you copied in step 1.
This adds the server to your project's .claude/settings.json. You can also manually edit the config:
{
"mcpServers": {
"flutterflow": {
"command": "npx",
"args": ["-y", "community-ff-mcp"],
"env": {
"FLUTTERFLOW_API_TOKEN": "your_token_here"
}
}
}
}Open Settings > Developer > Edit Config and add:
{
"mcpServers": {
"flutterflow": {
"command": "npx",
"args": ["-y", "community-ff-mcp"],
"env": {
"FLUTTERFLOW_API_TOKEN": "your_token_here"
}
}
}
}Replace your_token_here with your token. Restart Claude Desktop after saving.
Open Settings > MCP and add a new server with this configuration:
{
"mcpServers": {
"flutterflow": {
"command": "npx",
"args": ["-y", "community-ff-mcp"],
"env": {
"FLUTTERFLOW_API_TOKEN": "your_token_here"
}
}
}
}Add the following to your MCP configuration file (check your client's docs for the exact location):
{
"mcpServers": {
"flutterflow": {
"command": "npx",
"args": ["-y", "community-ff-mcp"],
"env": {
"FLUTTERFLOW_API_TOKEN": "your_token_here"
}
}
}
}3. Start Building
Ask your AI assistant to list your FlutterFlow projects, inspect pages, or explore your app — it handles the rest.
Example prompts to get started:
"List my FlutterFlow projects"
"Show me all the pages in project X"
"What does the HomePage do? Walk me through its widget tree"
"Where is the PaywallCard component used?"
"What API endpoints are configured?"
"Show me the theme colors"
How It Works Under the Hood
This MCP is designed to make AI agents as effective as possible when working with FlutterFlow. Here's what makes it work well:
Smart Local Caching
Instead of hitting the FlutterFlow API for every question, the MCP downloads your entire project once (sync_project) and caches it locally. After that, most tools read from the cache — making them instant and free of API rate limits. If you've made changes in FlutterFlow, just re-sync to refresh the cache.
Built-in Documentation
AI models don't natively understand FlutterFlow's internal structure. This MCP ships with 21 reference documents covering every widget type, action, variable, theme setting, and editing pattern. The AI can look up exactly how a Button, Column, or Navigation action is structured — so it doesn't have to guess.
Guided Editing Workflow
Before making any change, the AI can call get_editing_guide with a plain-English description of what it wants to do (e.g., "change the button color on the login page"). The MCP returns the exact steps, relevant documentation, and rules to follow — reducing the chance of mistakes.
25 Purpose-Built Tools
Rather than one generic "read project" tool, the MCP provides 25 specialized tools — each designed for a specific task. Want to know where a component is used? There's a dedicated tool for that. Want to see all navigation actions pointing to a page? There's one for that too. This means the AI always picks the right tool for the job instead of downloading everything and searching through it.
Limitations and Cautions
Be Careful with Edits
This MCP can make changes to your FlutterFlow project, but edits should be treated with care:
Always review before pushing — Ask your AI assistant to show you exactly what it plans to change before it pushes anything. Make sure you understand the change.
There's no undo button for API changes — Changes are applied immediately to your project. You can roll back using FlutterFlow's version history, but it's better to prevent a bad edit than to fix one.
Start with read-only tasks — Get comfortable asking questions about your project (page summaries, component usage, theme inspection) before asking the AI to modify anything.
Smaller edits are safer — Editing a single widget is safer than replacing an entire page. The AI knows to make targeted changes, but it's good to be aware.
What the FlutterFlow API Can't Do
These are limitations in FlutterFlow's own API. They affect any tool that connects to FlutterFlow, not just this MCP.
Custom code can be read but not edited — The AI can read your custom actions, custom functions, and custom widgets, but it cannot push code changes back to FlutterFlow. The API doesn't support it properly — attempting to push code corrupts the FlutterFlow editor. Instead, the AI will show you the modified code and you copy-paste it into the FlutterFlow code editor.
Unlocked
main.dartcan't be updated — If you've unlockedmain.dartfor raw Dart editing, the AI can read it but can't push code changes. Startup/shutdown action lists can still be modified.Platform config files are indirect — You can't directly edit
AndroidManifest.xml,Info.plist, orbuild.gradle. Instead, you configure hooks and settings in FlutterFlow, which generates those files for you. The AI can read and modify those hooks.Editing platform config files requires extra care — FlutterFlow groups all platform config files together internally. If the AI pushes a change to just one (e.g., Android Manifest), FlutterFlow may delete the others (e.g., ProGuard rules, Gradle config). The MCP handles this by always including all existing files in the same push, but it's something to be aware of.
Disabling conditional actions works differently — In the FlutterFlow editor, you can toggle a conditional action on/off with a switch. The API handles this slightly differently, so the AI uses a workaround that achieves the same result.
Validation isn't perfect — The validation step catches most errors, but occasionally something that passes validation can still fail when pushed. This is rare, but it's why reviewing changes before pushing is important.
Project list may be incomplete — The API may not return all projects you have access to, especially shared or team projects. If a project is missing, copy its ID directly from the FlutterFlow editor (click the project name in the top-left corner) and paste it into your AI prompt.
General Limitations
No live sync — The MCP works with a snapshot of your project. It doesn't watch for changes you make in the FlutterFlow editor in real time. If you've been editing in FlutterFlow, re-sync before asking the AI to make changes.
Very large pages — Some extremely large pages may fail to load. The AI can work around this by loading individual widgets instead of the whole page.
Cache can go stale — If you edit your project in FlutterFlow after syncing, the AI's local copy is outdated. Re-run the sync (the AI will tell you when it detects stale data).
For the full technical details on each API limitation, see
docs/flutterflow-api-limitations.md.
Tools
Discovery and Exploration
Tool | Description |
| List all FlutterFlow projects for your account |
| List YAML file keys in a project (supports prefix filter) |
| List all pages with human-readable names, scaffold IDs, and folders |
| Search file keys by keyword, prefix, or regex |
| Bulk download all project YAML to local cache for fast offline reads |
Reading and Understanding
Tool | Description |
| Fetch a page by its human-readable name |
| Download specific YAML files by file key |
| Quick page overview from cache — widget tree, actions, params, state |
| Quick component overview from cache — widget tree, actions, params |
| Find all pages and components where a given component is used |
| Find all actions that navigate to a given page |
Project Configuration
Tool | Description |
| Theme colors, typography, breakpoints, and widget defaults |
| App state variables, constants, and environment settings |
| API endpoint definitions — method, URL, variables, headers, response |
| Data structs, enums, Firestore collections, and Supabase tables |
| Custom actions, functions, widgets, AI agents, and app-action components |
| App Details, App Assets, Nav Bar & App Bar settings |
| Firebase, Languages, Platforms, Permissions, Dependencies |
| Authentication, Push Notifications, Mobile/Web Deployment |
| Stripe, Braintree, RevenueCat, Razorpay configuration |
| Supabase, SQLite, GitHub, Algolia, Google Maps, AdMob, and more |
Editing
Tool | Description |
| Get the recommended workflow and docs for an editing task — call this before modifying any YAML |
| Search/retrieve FlutterFlow YAML reference docs by topic or file |
| Validate YAML content before pushing — always call before |
| Push YAML changes to a project |
Resources
Resource | URI | Description |
Docs Index |
| List all available YAML reference documentation files |
Doc File |
| Read a specific YAML reference doc (e.g. |
Prompts
Prompt | Description |
| Generate a new page from a description |
| Modify an existing component |
| Summarize project structure |
| Efficient workflow guide for AI-assisted FlutterFlow development |
Built-in YAML Reference
This MCP ships with a comprehensive FlutterFlow YAML reference catalog that AI models can access at runtime:
get_yaml_docstool — Search by topic (e.g.get_yaml_docs(topic: "Button")) or browse the full indexff://docsresources — Direct access to all 21 reference docs covering widgets, actions, variables, theming, and editing workflows
See docs/ff-yaml/ for the full catalog.
AI Agent Skill
This MCP includes a skills.sh-compatible skill that teaches AI assistants how to use FlutterFlow MCP effectively. The skill provides tool orchestration workflows, critical YAML rules, and reference documentation for widgets, actions, data binding, theming, and more.
Install the Skill
npx skills add mohn93/ff-mcp --skill community-ff-mcpThis works with 18+ AI agents including Claude Code, Cursor, GitHub Copilot, Codex, Goose, Windsurf, and more. The skills CLI auto-detects your AI tool and installs the skill to the correct location.
What the Skill Teaches Your AI
Once installed, your AI assistant will know how to:
Discover — List projects, pages, components, and search project files
Read — Summarize pages/components, trace component usages, inspect navigations
Edit — Follow the correct read → guide → edit → validate → push workflow
Configure — Read theme, app state, API endpoints, data models, and integrations
Skill + MCP Setup
The skill and the MCP server are installed separately:
MCP server gives the AI the tools (see Quick Start above)
Skill teaches the AI how to use those tools effectively
If the skill detects the MCP tools aren't connected, it will guide the user through setup automatically.
Claude Code Skills
You can also copy Claude Code-specific skills from skills/ into your project's .claude/skills/ directory:
ff-yaml-dev.md— Core workflow: reading, editing, and creating FlutterFlow pages/componentsff-widget-patterns.md— Quick reference for common widget YAML patterns and snippets
Development
git clone https://github.com/mohn93/ff-mcp.git
cd ff-mcp
npm install
npm run build
npm run dev # watch modeRequirements
Node.js 18+
FlutterFlow API token (paid FlutterFlow subscription required)
License
MIT
Available Tools
25 toolsfind_component_usagesA
Find all pages and components where a given component is used, with parameter pass details. Cache-only, no API calls. Run sync_project first.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID | |
| componentId | No | Container ID (e.g. 'Container_ffzg5wc5'). | |
| componentName | No | Human-readable component name (e.g. 'PremuimContentWall'). Case-insensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so all behavior must be disclosed. The description states 'Cache-only, no API calls' and instructs to run sync_project first, which tells the agent about side effects and data source. It doesn't mention error handling or return format, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. The second sentence provides essential usage constraints without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose, cache behavior, and prerequisite. It lacks return format, but without an output schema and with a simple query tool, this is acceptable. The schema fully documents parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters have descriptions in the schema. The tool description mentions 'parameter pass details' in the output but does not add extra meaning for the input parameters themselves, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Find' and identifies the resource 'all pages and components where a given component is used', which clearly distinguishes it from sibling tools like get_component_summary. It also mentions 'parameter pass details', giving a precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite 'Run sync_project first' and the cache-only constraint, giving clear context for when it should be used. It does not explicitly name alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_endpointsA
Get API endpoint definitions from local cache — method, URL, variables, headers, response fields. No API calls. Run sync_project first if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Case-insensitive filter on endpoint name | |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses that the tool reads from a local cache, makes no API calls, and requires sync_project as a prerequisite if data isn't cached. However, it doesn't specify the exact behavior when data is absent (e.g., error vs. empty result), leaving minor ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core purpose in the first sentence and a necessary precondition in the second. No redundant wording; every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description covers purpose, data scope, and the cache prerequisite, while also listing the output fields. It lacks detail on failure behavior when not cached, but given the lack of an output schema, the field enumeration is helpful. Overall the description is sufficient for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'projectId' and 'name' are already well-documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, hence a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies it retrieves API endpoint definitions from a local cache, listing included fields (method, URL, variables, headers, response fields). It also distinguishes itself by stating 'No API calls', setting it apart from siblings like sync_project or get_project_yaml.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance to run sync_project first if not cached, implying when this tool is appropriate (local cached data) and the prerequisite. It doesn't explicitly name alternatives, but the mention of sync_project serves as a clear usage context. A small gap is no explicit 'when not to use' beyond the no-API-calls note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_settingsA
Get App Settings — Authentication, Push Notifications, Mobile Deployment (version, build, stores), Web Deployment (SEO, title). Mirrors the FlutterFlow 'App Settings' section. Cache-based, no API calls. Run sync_project first.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fills the burden by disclosing cache-based behavior and no API calls, which implies a read-only, fast operation. It could further state that data may be stale until sync_project is run, but the current disclosure is valuable and context-rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the tool name and key categories immediately. It uses two efficient sentences, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for a simple getter: what it returns (settings areas), how it behaves (cache-based, no API), and prerequisite (sync_project). While it lacks explicit return format details, the listed categories give a clear picture, and no output schema exists to rely on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (projectId) and its schema description provides complete coverage. The tool description adds no extra semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets App Settings and enumerates specific areas (Authentication, Push Notifications, Mobile Deployment, Web Deployment), making the scope unambiguous. It also references the FlutterFlow 'App Settings' section, which distinguishes it from sibling tools like get_general_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to run sync_project first, which is a clear prerequisite. It implies usage when app settings are needed, but does not list alternatives or exclusions relative to other get_* tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_stateA
Get app state variables, constants, and environment settings from local cache. No API calls. Run sync_project first if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavior: reads from local cache, performs no API calls, and requires a prior sync step. This gives the agent important context about side effects and dependencies, though it does not describe error handling or return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose and then key constraints. Every sentence adds value without any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description covers the core function, cache behavior, and prerequisite. It could elaborate on what 'app state variables' encompass, but overall it is sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the only parameter 'projectId' fully described in the schema. The description itself adds no extra parameter-specific details, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and specifies the resource: 'app state variables, constants, and environment settings'. It also distinguishes from siblings by noting 'local cache' and 'No API calls', making the tool's scope immediate and explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite: 'Run sync_project first if not cached', which guides when to use this tool. It also implicitly differentiates from network-based tools by stating 'No API calls'. However, it does not explicitly mention alternative tools for when cached data is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_component_summaryA
Get a readable summary of a FlutterFlow component from local cache — widget tree, actions, params. Nested component references are resolved to show [ComponentName] (ComponentId). No API calls. Run sync_project first if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID | |
| componentId | No | Container ID (e.g. 'Container_ffzg5wc5'). Provide either componentName or componentId. | |
| componentName | No | Human-readable component name (e.g. 'PremuimContentWall'). Case-insensitive. Provide either componentName or componentId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool reads from local cache, makes no API calls, and resolves nested component references in a specific format. It doesn't explicitly state whether it's read-only or what happens on missing cache, but 'No API calls' and 'from local cache' strongly imply a non-mutating operation, which is meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, then adds relevant details about output format and caching. Every clause earns its place; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by outlining what the summary includes (widget tree, actions, params) and the nested reference format. It covers the key operational context (local cache, sync prerequisite). Minor omissions like error behavior are not critical for this simple read-from-cache tool, so it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a clear description (e.g., componentId and componentName with usage notes). The tool description does not introduce new parameter-level meaning beyond what the schema provides, so it meets the baseline for well-documented parameters but adds no extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get a readable summary of a FlutterFlow component from local cache' – a specific verb, resource, and source. It clearly distinguishes from siblings by targeting components (not pages), and lists summary contents (widget tree, actions, params). This provides an unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the prerequisite explicitly: 'Run sync_project first if not cached.' It also sets expectations by noting 'No API calls' and that data comes from local cache. While it doesn't name alternative tools like get_page_summary, the context clearly implies component-specific use, and the prerequisite guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_codeA
Get custom actions, functions, widgets, AI agents, app action components, and custom files from local cache — signatures, arguments, return types, and optionally Dart source code. No API calls. Run sync_project first if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Case-insensitive filter on identifier name | |
| type | No | Type of custom code to retrieve | all |
| projectId | Yes | The FlutterFlow project ID | |
| includeCode | No | Include Dart source code in output |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is cache-based, performs no API calls, and that sync_project may be needed first. These are important behavioral traits. It does not mention side effects or error handling, but the disclosure is adequate for a read-only local operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, followed by a key usage prerequisite. Every word contributes value, with no wasted text, and the structure makes it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description explains what the output will include (signatures, arguments, return types, optional source code) and provides context about the cache and sync_project prerequisite. It is comprehensive for a retrieval tool, though it does not describe error cases or empty results. Overall, it is well-rounded for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds context about the output content (signatures, arguments, return types, optionally Dart source) which indirectly relates to includeCode, but it does not provide per-parameter semantics beyond the schema. Thus, it meets the baseline without adding significant parameter-level value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' and enumerates the resource types: custom actions, functions, widgets, AI agents, app action components, and custom files. It also states the source (local cache) and what is returned (signatures, arguments, return types, optionally Dart source), making it easy to distinguish from sibling tools like list_pages or get_page_by_name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: it reads from local cache, makes no API calls, and instructs to run sync_project first if not cached. This gives clear usage direction and a prerequisite, though it does not explicitly name alternatives or state when not to use it, leaving some room for interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_modelsA
Get data structs, enums, Firestore collections, and Supabase tables from local cache. No API calls. Run sync_project first if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Case-insensitive filter by identifier name. | |
| type | No | Filter by model type: structs, enums, collections, supabase, or all (default). | all |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently discloses that the tool makes no API calls and reads from a local cache, and warns about the sync_project prerequisite. However, it does not describe error behavior if data is not cached or the exact return format, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first declares the purpose, the second states the prerequisite. Every word earns its place, with no redundancy or filler, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple local-cache read tool, the description is reasonably complete. It clarifies the local nature, the sync prerequisite, and the data types covered. It lacks detail on return values or failure behavior when data isn't cached, but given the tool's simplicity, these are not critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all parameters. The description restates the type filter (structs, enums, collections, supabase) but adds no new semantic details beyond what the schema provides. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and enumerates the exact resources: data structs, enums, Firestore collections, and Supabase tables. It also specifies the source as 'local cache', distinguishing it from API-based sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context by instructing 'Run sync_project first if not cached', which is a clear prerequisite. It implies when to use the tool (after syncing) but does not explicitly state when not to use it or name alternative tools. The phrase 'No API calls' provides context that this is for cached data access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_editing_guideA
Get the recommended workflow and relevant documentation for a FlutterFlow editing task. Call this BEFORE modifying any YAML. Describe what you want to do (e.g. 'change button color', 'add a TextField to the login page', 'create a reusable header component') and receive the correct workflow steps, YAML schemas, and critical rules.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Natural language description of what you want to do | |
| projectId | No | Optional project ID to include in workflow steps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the output (workflow steps, schemas, rules) and implies the tool is a guide rather than a mutator, but it does not explicitly state whether it is read-only, requires authentication, or has any limitations. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, then provides timing, usage examples, and expected output. Every word earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a guidance tool with only two parameters and no output schema, the description effectively covers what to do, when to call, and what to expect in return. It could mention prerequisites like project sync or error handling, but it is largely complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value by elaborating on the 'task' parameter with concrete examples and explaining the purpose. The projectId parameter is already well-described in the schema, so the description goes beyond the baseline by making the task parameter's usage clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides recommended workflows and documentation for FlutterFlow editing tasks. It uses a specific verb ('Get') and resource ('recommended workflow and relevant documentation'), and the focus on guidance before modification distinguishes it from sibling tools that perform direct actions like listing pages or updating YAML.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this BEFORE modifying any YAML', providing clear timing guidance. It also gives concrete examples of tasks to describe, implying when to use it. However, it does not explicitly mention alternatives or situations where this tool should not be used, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_general_settingsA
Get General settings — App Details (name, package, initial page, routing), App Assets (icon, splash, error image), Nav Bar & App Bar. Mirrors the FlutterFlow 'General' settings section. Cache-based, no API calls. Run sync_project first.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the cache-based behavior, absence of API calls, and the need for a prior sync, which is valuable beyond a simple 'get' statement. It doesn't cover error cases or stale data, but the key behavioral traits are clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all informative, with the main purpose front-loaded. No redundant or vague text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read operation, the description fully covers what the tool does and the prerequisite. Although there is no output schema, the list of included sections gives a clear sense of the return content. It could mention the return format, but it isn't essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a clear description for projectId. The tool description adds nothing about the parameter, so the baseline of 3 applies; no deduction or bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'General settings' and enumerates the specific content (App Details, App Assets, Nav Bar & App Bar), which is a specific verb+resource. It distinguishes from siblings by referencing the FlutterFlow 'General' settings section, though it doesn't explicitly name alternative tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: 'Cache-based, no API calls' and instructs to 'Run sync_project first,' implying the prerequisite and typical use case. It doesn't specify when not to use it or mention alternatives, but the guidance is sufficient for a read-only cache tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_in_app_purchasesA
Get In-App Purchases & Subscriptions settings — Stripe, Braintree, RevenueCat, Razorpay. Mirrors the FlutterFlow 'In App Purchases & Subscriptions' section. Cache-based, no API calls. Run sync_project first.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses that it is cache-based, makes no API calls, and requires a prior sync. This sets clear expectations for data freshness and side effects. It doesn't explicitly state it's read-only or what happens if cache is missing, but the disclosed traits are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: the first phrase gives the action and resource, the second adds providers and the mirrored section, and the final sentence covers behavior and prerequisite. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and no output schema, the description is remarkably complete. It explains what is returned, which UI section it mirrors, that it uses cached data, and what precondition must be met. This is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (projectId) is fully described in the schema with 100% coverage, so the description does not need to add parameter details. The tool description adds no extra parameter-level meaning beyond what's in the schema, matching the baseline for good schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves In-App Purchases & Subscriptions settings, names the specific providers (Stripe, Braintree, RevenueCat, Razorpay), and references a specific FlutterFlow section. This clearly distinguishes it from sibling settings tools like get_integrations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context by mapping to the FlutterFlow section and provides an actionable prerequisite ('Run sync_project first') plus states it is cache-based. However, it doesn't explicitly mention when to avoid using this tool or discuss alternatives, so it stops short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integrationsA
Get Integrations settings — Supabase, SQLite, GitHub, Algolia, Google Analytics, Google Maps, AdMob, Mux Livestream, OneSignal, Gemini. Mirrors the FlutterFlow 'Integrations' section. Cache-based, no API calls. Run sync_project first.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently discloses that the tool is cache-based and makes no API calls, which is crucial for understanding data freshness and side effects. It stops short of explaining error behavior when the cache is missing or stale, which would enhance transparency further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a clear action verb with resource, a provider list, and a critical usage note. Every sentence adds value without redundancy, achieving high information density in just two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description sufficiently covers what the tool returns (integration settings for the listed providers), the caching mechanism, and the prerequisite sync step. For a tool with a single parameter and simple purpose, this is adequate and complete context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the only parameter (projectId) with 100% coverage, so the description does not need to add much. It provides no additional semantic detail about the parameter, but the baseline of 3 applies since the schema handles the documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: 'Get Integrations settings' and enumerates the specific providers (Supabase, SQLite, GitHub, etc.). It distinguishes itself from sibling tools like get_general_settings or get_app_settings by explicitly mirroring the FlutterFlow Integrations section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: 'Run sync_project first.' It also notes the tool is 'cache-based, no API calls,' implying it is a lightweight, non-fetching operation. However, it does not explicitly state when to avoid this tool or mention alternatives, so it doesn't meet the 5-criterion of explicit when/when-not/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_by_nameA
Fetch a FlutterFlow page by its human-readable name (e.g. 'Welcome', 'GoldPass'). Resolves the name to the correct scaffold ID and returns the full page YAML. Case-insensitive matching.
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | Yes | The human-readable page name (e.g. 'Welcome', 'GoldPass'). Case-insensitive. | |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool resolves names to scaffold IDs, returns the full page YAML, and uses case-insensitive matching. These are meaningful behavioral traits beyond a simple 'fetch'. It does not cover failure modes (e.g., page not found), but for a fetch operation with no side effects, this is acceptable and adds good context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and outcome. It includes an example of page names and key behavioral details (case-insensitivity, returns full YAML) without any redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description must convey what is returned; it does so by stating 'returns the full page YAML'. It also explains the resolution process and matching behavior. It could mention error handling or the structure of the YAML, but for a simple get/read operation with simple parameters, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both pageName and projectId are described in the schema. The description adds slight extra context (e.g., 'human-readable name', 'resolves to scaffold ID'), but this largely mirrors the schema's parameter descriptions. Since the schema already documents the parameters fully, the description does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a FlutterFlow page by its human-readable name, resolves it to a scaffold ID, and returns the full page YAML. This distinguishes it from siblings like list_pages (which lists pages) and get_page_summary (which likely returns a summary rather than full YAML).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you have a human-readable page name and need the full YAML. It also notes case-insensitive matching, which is useful. However, it does not explicitly mention alternatives or exclusions (e.g., 'Use get_page_summary for summaries'), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_summaryA
Get a readable summary of a FlutterFlow page from local cache — widget tree, actions, params, state. Component references are resolved to show [ComponentName] (ComponentId) instead of plain Container. Use the ComponentId with get_component_summary to drill into a component. No API calls. Run sync_project first if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | No | Human-readable page name (e.g. 'PaywallPage'). Case-insensitive. Provide either pageName or scaffoldId. | |
| projectId | Yes | The FlutterFlow project ID | |
| scaffoldId | No | Scaffold ID (e.g. 'Scaffold_tydsj8ql'). Provide either pageName or scaffoldId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool reads from local cache, performs no API calls, and resolves component references to [ComponentName] (ComponentId). However, it does not specify what happens if the page is not cached (e.g., error versus empty result), leaving a minor transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, and every sentence adds value: what it does, a key behavior (component resolution), and a prerequisite/alternative. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, cache behavior, contents, and related tools, which is strong for a tool with no annotations and no output schema. It falls short of a 5 by not describing the expected return format or error behavior when a page is missing from cache, which would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains the either/or relationship between pageName and scaffoldId. The description adds no additional parameter-level detail, only mentions component IDs in output, which is not a parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get a readable summary of a FlutterFlow page from local cache' and enumerates the contents (widget tree, actions, params, state). It also distinguishes itself from siblings by explicitly pointing to get_component_summary for component drill-down and mentioning sync_project as a prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: it is a local-cache read ('No API calls'), requires sync_project if not cached, and directs users to get_component_summary for component-level details. This gives clear when-to-use guidance and a concrete alternative for further drilling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_setupA
Get Project Setup settings — Firebase services, Languages, Platforms, Permissions, Project Dependencies, Dev Environments. Mirrors the FlutterFlow 'Project Setup' settings section. Cache-based, no API calls. Run sync_project first.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses important behavioral traits: cache-based, no API calls, and the need to run sync_project first. This gives the agent a clear operational understanding beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the purpose, followed by relevant clarifying context (mirroring section and caching behavior). Every sentence earns its place with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema, no annotations), the description provides a good overview of what settings are included and how it behaves (cache, sync requirement). It could be more explicit about the exact response shape, but the listed categories suffice for a get-operation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter projectId is fully described in the schema (100% coverage), so the description doesn't need to repeat it. The description adds no extra semantic detail about the ID format or usage, which aligns with the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Get Project Setup settings' and enumerates the specific categories (Firebase services, Languages, etc.), distinguishing it from sibling get_* tools by referencing the FlutterFlow 'Project Setup' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it is cache-based and requires running sync_project first. This implies when to use (after syncing) and the operational mode. However, it does not explicitly name alternatives or exclusions, so it's a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_yamlA
Read YAML files from the local project cache. Requires sync_project to be run first. Returns one file if fileName is specified, or lists all cached file keys if omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | No | Specific YAML file name to read (e.g. 'app-details', 'page/id-xxx'). Omit to list all cached file keys. | |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the cache read nature, the prerequisite, and the return behavior for both parameter states. It does not cover error cases, but for a simple read tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences with no redundant information. Every clause contributes meaningful usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool without an output schema, the description covers the prerequisite, the selection behavior, and the return mode. It could mention alternative YAML-reading tools for fuller context, but this is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes both parameters (100% coverage), so the description adds little beyond what is already structured. The description restates the fileName behavior but does not introduce new semantic details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read YAML files'), the resource ('local project cache'), and the two possible outcomes (single file or list of keys). It is distinct from sibling tools like sync_project or update_project_yaml.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly requires sync_project to be run first, which is a clear prerequisite. It also explains when fileName should be omitted, though it does not name alternative read tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_themeA
Get theme colors, typography, breakpoints, and widget defaults from local cache. No API calls. Run sync_project first if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Which theme section to return. Defaults to 'all'. | all |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: it reads from local cache, makes no API calls, and requires sync_project beforehand. Since no annotations are provided, this carries the transparency burden; it doesn't state what happens if data is absent (e.g., error vs empty result), but is otherwise strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense set of three sentences: purpose, behavior, prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description hints at return content (theme sections) and covers source, network behavior, and prerequisite. It lacks explicit error handling or return format details, but for a simple getter it's near-complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes both parameters, including the 'section' enum and 'projectId'. The description echoes the categories but adds minimal value; the phrase 'widget defaults' clarifies that the 'widgets' enum means widget defaults, but overall the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and names the exact resources (theme colors, typography, breakpoints, widget defaults), clearly distinguishing it from sibling tools like get_app_settings. It also specifies the data source ('local cache').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a clear prerequisite ('Run sync_project first if not cached') and notes it makes no API calls, implying it's the lightweight cache read path. It doesn't explicitly name alternatives or exclusion conditions, but gives enough context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_yaml_docsA
Search and retrieve FlutterFlow YAML reference documentation. Use topic to search by keyword (e.g. 'Button', 'actions', 'theming') or file to fetch a specific doc file. Returns the full doc content.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Specific doc file path (e.g. '04-widgets/button', '05-actions', 'README'). Omit .md extension. | |
| topic | No | Search topic/keyword (e.g. 'Button', 'actions', 'theme', 'Column', 'variables'). Case-insensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that it returns full doc content and explains the two modes. However, it doesn't address edge cases like empty results, mutual exclusivity enforcement, or whether both parameters can be provided. For a simple read-only tool, this is acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and every sentence adds value. Examples are embedded efficiently without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and lack of output schema, the description covers the essentials: what it does, how to invoke it, and what it returns. It could mention what happens if neither parameter is supplied, but this is a minor gap for a doc retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaningful semantics by explaining the relationship between 'topic' and 'file' (using 'or'), providing concrete examples for each, and clarifying they are alternative modes. This goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search and retrieve FlutterFlow YAML reference documentation.' The verb is specific, the resource is well-defined, and it distinguishes itself from sibling tools that deal with project files and pages rather than documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use 'topic' for keyword search or 'file' for fetching specific docs. It doesn't explicitly name alternatives, but the distinction from siblings is evident. No exclusions are mentioned, but the guidance is adequate for a doc-lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesA
List all pages in a FlutterFlow project with human-readable names, scaffold IDs, and folder assignments. Use this FIRST to discover pages before fetching their YAML.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation is a read-only listing ('List all pages') and specifies the kind of data returned. While it doesn't mention pagination or response format, the tool's simplicity mitigates the omission, and the described behavior is clear and consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. The first sentence states purpose and output; the second provides a usage hint. It's front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list tool without an output schema, the description provides sufficient context: what it returns, why to use it, and when in the workflow. Minor gaps like response shape or edge cases are not critical for selection and invocation, making it nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter (projectId) with a clear description. The tool description does not add additional meaning to the parameter, but none is needed given the schema's completeness. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all pages in a FlutterFlow project, with specific output details (human-readable names, scaffold IDs, folder assignments). The verb 'List' and resource 'all pages' are specific, and the mention 'Use this FIRST' distinguishes it from sibling tools like get_page_by_name and get_project_yaml.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool first to discover pages before fetching their YAML, giving a clear workflow context. It stops short of naming alternative tools or providing when-not-to-use cases, but the instruction is actionable and implies the tool's role in the overall process.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_filesA
List all YAML file names in a FlutterFlow project. Supports optional prefix filter (e.g. 'page/', 'component/') to narrow results.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | Optional prefix to filter file keys (e.g. 'page/', 'custom-file/') | |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It clarifies that the tool returns file names only, not contents, and explains the prefix filtering behavior. However, it does not disclose potential limitations such as pagination, sorting, or error behavior, but for a simple read-only list this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, leading with the core action and then the optional filter. No extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with good schema coverage and no output schema, the description is nearly complete. It omits details like return ordering or whether file extensions are included, but these are minor and the core behavior is clearly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (100% coverage), including the prefix filter with examples. The description adds little beyond restating the prefix filter, so the schema carries the semantic weight. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and names the resource 'YAML file names in a FlutterFlow project.' It also mentions an optional prefix filter, which differentiates it from siblings like list_pages (which likely lists only pages) and search_project_files (which searches content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the tool lists all YAML file names and supports an optional prefix filter, giving enough context for when to use it. However, it does not explicitly mention alternatives or when not to use it, e.g., if looking for page-specific listings, so it falls short of explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List FlutterFlow projects for the authenticated user. NOTE: This may not return all projects you have access to (shared/team projects can be missing). If a project is missing, copy its ID directly from the FlutterFlow editor (click the project name in the top-left corner).
| Name | Required | Description | Default |
|---|---|---|---|
| project_type | No | Optional filter for project type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses an important behavioral trait not evident from the schema: the result set may be incomplete (shared/team projects can be missing). This is critical for an agent to know. It also provides a workaround. No annotations are present, so the description carries the full burden and does it well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It leads with the primary action and follows with a critical caveat, earning its place entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description adequately covers purpose and key limitations. It could mention return format but that is not necessary for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the only parameter (project_type) with 100% coverage, so the description adds no additional meaning. This meets the baseline for adequate parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to list FlutterFlow projects for the authenticated user. The verb 'list' and resource 'projects' are specific, and this is distinct from sibling tools like list_pages or list_project_files, which list sub-resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides useful usage context by warning that shared/team projects may be missing and advising how to obtain a missing project ID from the FlutterFlow editor. This implies when to use the tool and offers a fallback, though it doesn't explicitly contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_project_filesA
Search cached project file keys by keyword, prefix, or regex. Returns matching file keys for use with get_project_yaml. Cache-only, no API calls. Run sync_project first.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Search mode: prefix (startsWith), contains (case-insensitive includes), or regex (case-insensitive RegExp) | contains |
| query | Yes | Search query string | |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that it is cache-only and makes no API calls, which implies read-only behavior. It also states the prerequisite 'Run sync_project first.' It does not disclose error handling or what happens on empty results, but covers the essential behavioral traits for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short sentences, front-loaded with purpose. Each sentence contributes: what it does, what it returns, cache behavior, and prerequisite. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with no output schema or annotations, the description is largely complete: it covers purpose, modes, return value, cache-only nature, and prerequisite. It falls slightly short of a 5 by not mentioning result limits or error/empty-response behavior, but these are not critical for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds little beyond the schema: 'keyword, prefix, or regex' essentially restates the mode enum, and the downstream use with get_project_yaml is contextual rather than parameter-specific. It does not enrich parameter meanings materially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search cached project file keys by keyword, prefix, or regex.' This clearly identifies the operation and differentiates it from sibling tools like list_project_files (which lists all keys) and get_project_yaml (which fetches content). The mention of search modes further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear contextual guidance: it is cache-only, requires 'Run sync_project first,' and returns keys for use with get_project_yaml. This implies when to use it and the prerequisite, but it does not explicitly state when not to use it or compare against alternatives like list_project_files, stopping short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_projectA
Sync an entire FlutterFlow project to the local cache. Downloads all YAML files (bulk or batched fallback) for fast offline reads. Use force=true to re-sync an already cached project.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force re-sync even if cache already exists (default: false) | |
| projectId | Yes | The FlutterFlow project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It reveals that the tool downloads all YAML files, may use bulk or batched fallback, and that force=true re-syncs an already cached project—important caveats. It doesn't cover potential side effects like cache overwriting, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every clause adds value. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description provides adequate high-level context: what it does, how it works (downloads all YAML), and the force option. It is slightly incomplete regarding the lifecycle of the local cache or how to verify sync success, but not critically so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters: projectId and force. The description adds no new semantic meaning beyond the schema; it only restates the force behavior ('Use force=true to re-sync an already cached project') which matches the schema description. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Sync an entire FlutterFlow project to the local cache') with a specific verb and resource. It distinguishes itself from sibling tools by emphasizing the whole-project cache download, not just fetching individual files or listings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: use for 'fast offline reads' and to re-sync with 'force=true'. Though it doesn't explicitly name alternatives or when-not-to-use, the context is sufficient to identify appropriate usage compared to more targeted file-fetching tools like get_project_yaml.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_yamlA
Push YAML changes to a FlutterFlow project. IMPORTANT: Always call validate_yaml first to check for errors before updating. For best results, call get_editing_guide before writing YAML to get the correct workflow and schema documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The FlutterFlow project ID | |
| fileKeyToContent | Yes | Map of file keys to YAML content. Pass each value as a normal multi-line YAML string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It includes an IMPORTANT warning about validating first, implying potential risks of updating without validation. However, it does not disclose specific consequences, side effects, or reversibility beyond that. Some behavior is inferred but not fully detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with the primary purpose front-loaded and then key warnings. Every sentence adds value; no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (map-of-content parameter, no output schema, no annotations), the description appropriately directs users to validate first and consult get_editing_guide for full workflow and schema documentation. This is likely sufficient for an AI agent to invoke correctly, though it could explicitly state output expectations or failure modes. Overall quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for both projectId and fileKeyToContent. The description does not add additional parameter semantics beyond what the schema states, such as the multi-line YAML format requirement mentioned in the schema itself. Therefore, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Push YAML changes to a FlutterFlow project.' This distinguishes it from reading tools like get_project_yaml and validation tools like validate_yaml. The verb 'push' implies writing/updating, which matches the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs users to call validate_yaml first and get_editing_guide before writing, giving clear when-to-use and sequence guidance. It names the alternative tools that should be used in conjunction, which is exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_yamlA
Validate YAML content before pushing changes to a FlutterFlow project. Always call this before update_project_yaml. Tip: Call get_editing_guide or get_yaml_docs BEFORE writing YAML to understand the correct schema and field names. Validation catches syntax errors but not semantic mistakes.
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The YAML file key (e.g. 'app-details', 'page/id-xxx') | |
| projectId | Yes | The FlutterFlow project ID | |
| fileContent | Yes | Pass YAML content as a normal multi-line string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: 'Validation catches syntax errors but not semantic mistakes.' However, it omits important details such as what happens on validation failure, whether it returns a report or throws an error, and confirmation that it does not modify anything. This is a gap for a validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the primary purpose, and every sentence earns its place. It delivers the core action, when to use it, and a limitation without any redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains why and when to use the tool and its limitation, but since there is no output schema, it should describe what the tool returns or how validation results are conveyed. This missing information leaves the description somewhat incomplete for an agent needing to handle outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented in the schema. The description adds context about the overall workflow but does not provide per-parameter elaboration beyond schema descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Validate YAML content before pushing changes to a FlutterFlow project.' It uses a specific verb (validate) and resource (YAML content), and explicitly distinguishes itself from sibling tools like update_project_yaml by instructing 'Always call this before update_project_yaml.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context and a direct usage instruction: call before update_project_yaml. It also offers a complementary tip to consult get_editing_guide or get_yaml_docs before writing YAML. However, it does not explicitly mention when not to use the tool or name alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
25 tool updates
v0.4.3- First observed
find_component_usages - First observed
find_page_navigations - First observed
get_api_endpoints - First observed
get_app_settings - First observed
get_app_state - First observed
get_component_summary - First observed
get_custom_code - First observed
get_data_models - First observed
get_editing_guide - First observed
get_general_settings - First observed
get_in_app_purchases - First observed
get_integrations - First observed
get_page_by_name - First observed
get_page_summary - First observed
get_project_setup - First observed
get_project_yaml - First observed
get_theme - First observed
get_yaml_docs - First observed
list_pages - First observed
list_project_files - First observed
list_projects - First observed
search_project_files - First observed
sync_project - First observed
update_project_yaml - First observed
validate_yaml
TDQS
Tools are mostly distinct, with clear separation between listing, reading, searching, and updating. Some overlap exists among the many settings getters and between get_editing_guide and get_yaml_docs, but descriptions are specific enough to avoid major confusion.
All tools use consistent snake_case verb_noun naming with uniform prefixes like list_, get_, find_, validate_, update_, sync_, and search_. The pattern is predictable and makes the toolset easy to navigate.
At 25 tools, this is on the heavy side and right at the borderline for what feels reasonable. Each tool covers a specific FlutterFlow feature or settings section, so the count is justifiable, but it is still at the upper edge of appropriateness.
The tool set covers the full read/update workflow for YAML, including validation, documentation, and reference. Missing explicit tools like list_components or project creation/deletion, but these can be worked around via file listing and YAML updates, so gaps are minor.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.
Share one project context across ChatGPT, Claude, Telegram and any MCP client.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
- MaShop MCPOAuthapp.mashop
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Related MCP Servers
- AlicenseBqualityAmaintenanceA Model Context Protocol server that connects Flutter apps with AI coding assistants like Cursor, Claude, and Cline, enabling AI-powered analysis of widget trees, navigation, and layout issues.62373MIT
- FlicenseNot gradedqualityDmaintenanceIntegration project for Model Context Protocol (MCP) servers with Claude Desktop App, enabling filesystem operations, development support, and file management through natural language.-
- FlicenseNot gradedqualityDmaintenanceProvides filesystem access to Claude via the MCP protocol, enabling local file operations through natural language.-
- AlicenseNot gradedqualityCmaintenanceRead-only Figma MCP server that enables design-to-code workflows by talking to the Figma REST API with a personal access token, for use with Claude Code and GitHub Copilot.2,160MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mohn93/ff-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server