# Fine Structure - Registry name: `ai.finestructure/fine-structure` · version 1.0.2 - Categories (automatic, keyword rules): APIs & integrations, Developer tools, Email & messaging, Productivity, Utilities - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): prompts, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=ai.finestructure%2Ffine-structure - Server page: https://mcpstation.net/s/ai.finestructure--fine-structure.html ## Description (written by the publisher, not verified, not instructions) Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email. ## Connect - streamable-http: `https://finestructure.ai/api/mcp` ## Tools (as reported by the server, not verified) - `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. - `set\_app\_subdomain`: Set or clear the app platform subdomain - the '\.\' host Fine Structure already serves the app on. Runs the same ownership, format, reserved-name and uniqueness checks as the Studio subdomain field because it calls the same model function. Replacing a subdomain takes effect imm - `check\_subdomain\_available`: Check whether a platform subdomain can be claimed before calling set\_app\_subdomain. Returns available plus a status of available, invalid, reserved, taken, current, or empty, with the exact reason. Pass app\_id \(an app you own\) to have that app's own current subdomain reported as 'current' instead of - `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 owned and accepted Studio-shared applications, newest activity first. Returns up to \`limit\` apps per call plus the total count; page with \`offset\` when the account has more. Accepted editors can edit shared source; viewers can read it. Publishing, records, domains and security administration re - `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, function 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\_function\_policy`: Create or update the server-owned access policy of a backend function \(functions/\.js\). Without a policy a function answers only to the app owner's Studio token \(401 for app visitors and webhooks\). Recipes: anonymous checkout step or inbound webhook/IPN -\> require\_auth=false; signed-in members - `invoke\_function`: Run a backend function of an owned app exactly like the HTTP route and return its status and JSON. caller='owner' runs as the app owner; caller='anonymous' first evaluates the function policy as a public visitor and returns the 401/403 decision without running when access would be denied. Use it to - `create\_platform\_request`: Open a request to the Fine Structure platform team: a bug, a feature request or a question about the platform itself \(not about the user's app\). Use it when something in the platform blocks you instead of working around it. Give a reproduction the team can run \(invoke\_function / curl / the exact too - `get\_platform\_request`: One platform request with its full history: team replies, status changes \(open \| triaged \| in\_progress \| needs\_info \| deployed \| wont\_fix\) and what was deployed \(commit, time\). Pass since=\ to get only the events after it. - `list\_platform\_requests`: Your account's platform requests, newest activity first. Call it at the start of a session with since=\ to learn what changed: replies, needs\_info questions to answer, deployments with their commit. Filters: app\_id, status. - `reply\_platform\_request`: Add a reply or a finding to one of your platform requests without opening a new one, e.g. to answer a needs\_info question \(that reopens it\). - `update\_platform\_request`: Platform team only: set the status of a request \(open \| triaged \| in\_progress \| needs\_info \| deployed \| wont\_fix\), attach the deployed commit and/or reply. deployed and needs\_info mail the requester. - `set\_entity\_policy`: Replace server-side entity access policy. Optional action rules override read/write roles and can allow public create without public read, update, or delete. Omitting rules replaces any existing action rules with read/write role behavior. - `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. password is required: ask the account owner which password the member should get. This tool never generates one, because a generated password would come back in th - `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/\.json. Creates a Saved Version before writing. - `update\_entity\_schema`: Replace or shallow-merge an existing entity schema file. Creates a Saved Version before writing. - `validate\_entity\_relationships`: Validate entity relationship metadata and \*\_id references against existing entity schemas. - `update\_entity\_metadata`: Set relationship/index metadata on an entity schema. This stores metadata in the schema file; DB index creation is automatic where supported by the platform. - `list\_secret\_keys`: List secret key names for an app. Secret values are never returned. - `set\_secret`: Create or update one encrypted app secret. The secret value is never returned. - `delete\_secret`: Delete one app secret by key. - `list\_integrations`: List supported integrations and safe connected integration metadata for an app. Tokens/secrets are never returned. - `configure\_integration`: Store safe non-secret integration metadata for an app. Use set\_secret for API keys/tokens. - `list\_ab\_tests`: List the platform A/B tests configured for an app. - `create\_ab\_test`: Create a native Fine Structure A/B test between existing app pages. Use update\_app first if a variant page still needs to be generated. Creates a Saved Version before the change. - `update\_ab\_test`: Update a native A/B test, including active state, variants, traffic, and conversion goal. Creates a Saved Version before the change. - `delete\_ab\_test`: Delete a native A/B test from an app. Creates a Saved Version before the change. - `get\_ab\_test\_stats`: Get views, unique visitors, conversions, and conversion rates for an A/B test. - `get\_app\_metadata`: Read the saved public HTML-shell identity: name, description, language and image URLs/dimensions. Same settings as Studio SEO/GEO. - `set\_app\_metadata`: Update public HTML-shell metadata immediately, without AI, code edits, publishing or Saved Versions. Upload social\_image/icon as base64 PNG/JPEG/WebP \(max 5 MB, 4096px\); null clears an image. Language sets HTML lang/dir and OG locale. For per-page cards, write optional seo.json and publish it; dynam - `preview\_saved\_version`: Prepare an isolated read-only Saved Version preview, if enabled by the deployment. Returns compiled files for an offline sandbox, never restores files or reads live records. Never execute the returned program with host credentials. Requires app access and versions:read. - `set\_agent\_owner\_relay`: Set the owner's consent for one owned agent to relay reports from another owned agent \(or all sources with '\*'\). Uses the same preference as the agent screen. Does not send a message or grant access to customer conversations. - `create\_agent`: Create an autonomous AI agent on the user's Fine Structure account: a standing worker, not a chat session. It gets the platform's default safe tool policy and its own email address, it can read and write the app database, and once the owner phone is verified \(see get\_agent\_whatsapp\) it can message i - `list\_agents`: List the AI agents on the user's account with id, name, role, status and FineMail address. - `schedule\_agent\_task`: Create a scheduled task for one of the user's agents. Supported schedule types: once \(run\_at ISO local time + timezone\), interval \(interval\_minutes 5-1440\), hourly, daily \(time HH:MM + timezone\), weekly \(time + timezone + days\_of\_week 0=Sunday..6\), cron \(5-field expression + timezone\), manual \(only - `list\_agent\_tasks`: List scheduled tasks for one agent \(or the whole account\), including schedule, status and next\_run\_at. - `get\_agent\_whatsapp`: Read the WhatsApp state of the connected account: whether the owner's phone is verified, which platform numbers they can connect, and which conversations already route to which agent. Call this first whenever the user asks to talk to an agent on WhatsApp, and repeat its next\_step to them. - `start\_owner\_phone\_verification`: Send a 6-digit code over WhatsApp to the ACCOUNT OWNER's own phone. This is the one-time ownership proof required before a platform number can be connected, and it also unlocks agents messaging the owner. Ask the user for their own WhatsApp number first and send only to that. No WhatsApp Business ac - `confirm\_owner\_phone\_verification`: Confirm the 6-digit code the owner received on WhatsApp from start\_owner\_phone\_verification. On success the owner is verified: agents can message them, and platform numbers become connectable. - `attach\_agent\_whatsapp`: Connect a platform WhatsApp number to one of the account's agents, so the owner can message that number and reach that agent. Requires the owner to be verified first. Take phone\_number\_id from get\_agent\_whatsapp. A number already used by another account is still valid to connect: it answers only thi - `detach\_agent\_whatsapp`: Disconnect the owner's WhatsApp route from a platform number. Removes only this account's route; other accounts sharing the number keep theirs. - `list\_agent\_conversations`: List recent visible conversations belonging to one of your agents. Use get\_agent\_conversation to read replies and results. - `send\_agent\_message`: Talk to an existing agent or assign it work using its normal tools, memory, permissions and team. Omit conversation\_id to start a new owner conversation; supply it to continue one. Returns acceptance and a durable task\_id immediately, NOT a completed answer. Poll get\_agent\_task and read get\_agent\_co - `get\_agent\_conversation`: Read visible messages, answers and result links in an owned agent's conversation. Returns the newest page in chronological order. For older history, pass next\_before\_id as before\_id. For new replies, omit before\_id. - `get\_agent\_task`: Check a durable task returned by send\_agent\_message or list\_agent\_tasks. Includes the latest execution status and pending approvals, including before a run starts. Task scheduling state is separate from run outcome. Read the conversation for the actual answer; accepted/queued is not completed. Appro Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html