fine-structure
Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email.
What it can do
- Create App: Create a new application from a natural language prompt. The AI generates a complete web app with pages, components, styling, and data models. Returns a job_id - poll get_job_status to tra
- Agency Create Client: Agency mode only. Create or update a client record for an account-level agent. This does not create a verified Fine Structure user account and does not transfer ownership.
- Agency List Clients: Agency mode only. List client records and app handoff status for the authenticated agent.
What data it sees
Do you need an account
No: the server works without sign-in
Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email. Pages, a managed database, authentication, publishing, custom domains with automatic TLS, restorable saved versions, traffic analytics, and autonomous agents that message their verified owner on WhatsApp through a platform number, with no WhatsApp Business account needed.
How to connect
How to connect fine-structure to Claude
The server address to paste into Claude settings:
https://fine-structure--finestructure.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect fine-structure to ChatGPT
The server address to paste into ChatGPT settings:
https://fine-structure--finestructure.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect fine-structure to Cursor
The server address to paste into Cursor settings:
https://fine-structure--finestructure.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (60)
Raw names from tools/list. Only developers need these.
| create_app | Create a new application from a natural language prompt. The AI generates a complete web app with pages, components, styling, and data models. Returns a job_id - poll get_job_status to track progress. When the job is done, the app is ready. |
| agency_create_client | Agency mode only. Create or update a client record for an account-level agent. This does not create a verified Fine Structure user account and does not transfer ownership. |
| agency_list_clients | Agency mode only. List client records and app handoff status for the authenticated agent. |
| agency_create_client_app | Agency mode only. Create a new app owned by the agent, start generation, and create a claim link for the client. Ownership transfers only when the invited client logs in with the same email and accepts the claim link. |
| agency_create_claim_link | Agency mode only. Create a client claim link for an existing app owned by the agent. The client must log in with the invited email before ownership transfers. |
| agency_get_claim_status | Agency mode only. Inspect one handoff status without exposing the raw claim token. |
| update_app | Update an existing application with a new prompt. The AI modifies the app based on your instructions. Creates a Saved Version before the update. Returns a job_id - poll get_job_status to track progress. |
| publish_app | Publish an app - freeze current state and make it live at a URL. Also configures whether the public URL is open, app-login gated, private, or inferred from the app. |
| get_platform_guide | Return a machine-readable Fine Structure / FSe2 guide for AI agents. Call this at the start of an MCP session to learn app files, entities, safe edit workflows, validation, publishing, A/B testing, secrets, and platform rules. |
| get_recommended_workflow | Return the recommended MCP tool sequence for a task type. Use this before creating apps, editing files, seeding data, publishing, setting up A/B tests, restoring versions, or configuring secrets/integrations. |
| get_job_status | Poll the status of an async generation job. Use this after create_app or update_app to know when the job is done. Returns status ('running' or 'done'), progress events, and result summary when complete. |
| get_app_status | Get app overview: files, published state, URL, active jobs. |
| get_app_links | Return editor, preview, published path, subdomain, and custom-domain links plus whether each works for anonymous visitors, app users, or Studio users based on publish and auth settings. |
| list_app_domains | List an app's platform path, subdomain, and configured custom domain with verification, SSL, primary-domain, redirect, publish, and login-gating status. |
| add_custom_domain | Attach or replace the app custom domain through the same Fine Structure Studio custom-domain flow. Returns exact DNS verification and routing records for the user to configure at their DNS provider. |
| get_domain_verification | Return the exact DNS records and instructions required to verify and route the app custom domain. |
| check_domain_verification | Check Fine Structure custom-domain verification and SSL status for the configured custom domain, then save the latest status. |
| set_primary_domain | Set which app host should be treated as primary for generated links and custom-domain redirects. |
| remove_custom_domain | Remove the configured custom domain from the app and clean up the platform-side hostname registration when possible. |
| get_domain_ssl_status | Return SSL/certificate status and pending certificate validation DNS records for the app custom domain. |
| configure_domain_redirects | Configure custom-domain redirect policy: primary domain, optional www/root redirect, and HTTPS enforcement. |
| list_apps | List applications owned by the authenticated user, newest activity first. Returns up to `limit` apps per call plus the total count; page with `offset` when the account has more. |
| get_app_files | Get the file tree for an app with paths and byte sizes. |
| read_app_file | Read one source file from an app's virtual filesystem. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs. |
| read_app_files | Read several source files from an app's virtual filesystem. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs. |
| write_app_file | Create or replace one file in an app's virtual filesystem. Creates a Saved Version before changing content. Paths and file model follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs. |
| patch_app_file | Patch one file by replacing exact text. Safer than full overwrite for targeted edits. Creates a Saved Version before changing content. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs. |
| rename_app_file | Rename or move one app source file atomically. Internally stages an upsert at new_path and a delete at old_path, validates the resulting app state, and creates a Saved Version before applying. |
| get_app_detail | Deep introspection of an app: entities, pages, settings, integrations, environment variables, and file structure. Use this to understand what an app contains before updating it. |
| get_entities | Get all entity (data model) schemas for an app, with record counts. Each entity has fields, types, and relationships. |
| query_entity | Query app data records for one entity with optional exact-match filters. |
| seed_entity | Compatibility tool for starter-record creation. Inserts directly for the authenticated app owner; by default it only seeds an empty entity (skip_if_not_empty). |
| create_entity_records | Create/insert records in one app entity. Executes directly for the authenticated app owner and returns the created record ids. |
| update_entity_record | Compatibility tool that updates one record by ID. Executes directly for the authenticated app owner. |
| update_entity_records | Update exact records. Select explicit record_ids or exact-match filters and provide shared changes, or provide per-record updates. Executes directly for the authenticated app owner; expected_count aborts the write on a mismatch. |
| delete_entity_records | Delete exact records by ID or exact-match filters. Executes directly for the authenticated app owner; pass expected_count as a safety check to abort on a mismatch. |
| get_pages | Get all pages in an app with their file paths and sizes. |
| get_errors | Get recent runtime errors for an app (last 20). Useful for diagnosing issues before updating. |
| get_app_analytics | Traffic analytics for an app's published site over a chosen window: total views, unique visitors, daily series, top pages, top referrer domains and device split. |
| get_preview_url | Return editor preview and published/public URLs for an app. |
| list_saved_versions | List restorable Saved Versions for an app, including versions created by MCP writes. |
| create_change_set | Create a staged file change set. Add multiple file changes, validate them as one app state, then apply atomically. |
| add_file_change | Stage one file upsert or delete inside a change set. Does not modify the live app until apply_change_set. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs. |
| validate_change_set | Validate current app files plus staged change set files before applying. |
| apply_change_set | Apply a staged change set to the app. Creates a Saved Version before applying. Blocks on validation errors unless force=true. |
| discard_change_set | Discard a pending staged change set without changing app files. |
| validate_app | Run deterministic app checks: syntax, imports, routes/pages, entity schemas, missing entities, and recorded runtime errors. |
| inspect_preview | Return server-side preview context: URLs, persisted runtime/network errors, static clickable candidates, pages, and explicit live-browser availability. |
| get_app_security_context | Return safe security context for one owned app: owner id/email, Studio collaborators, generated-app members, route policies, entity policies, and recent security audit entries. Does not return secrets and does not grant access to other apps. |
| set_route_policy | Create or update a server-owned route policy for a generated app route. |
| set_entity_policy | Create or update server-side read/write role policy for an app entity. |
| list_app_members | List generated-app runtime users/members for an app. This is separate from Studio project collaborators. |
| invite_app_member | Provision a generated-app runtime member with a role. This does not create a Studio collaborator, and the owner role cannot be assigned. Supply password whenever the user can choose one: if it is omitted a temporary password is generated and returned in the result, which puts a live credential into the conversation transcript. |
| update_app_member_role | Update a generated-app runtime member role. This cannot assign owner and cannot change the Fine Structure account owner. |
| remove_app_member | Remove a generated-app runtime member. |
| get_app_security_audit | Read recent server-side security audit events for an app. |
| compare_saved_versions | Compare two Saved Versions and return per-file additions, removals, modifications, and compact diffs. |
| compare_current_to_version | Compare the current app files to a Saved Version and return compact per-file diffs. |
| restore_file_from_version | Restore one file from a Saved Version instead of restoring the entire app. Creates a Saved Version before changing the file. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs. |
| create_entity_schema | Create an entity schema file in entities/<Entity>.json. Creates a Saved Version before writing. |