servers / fine-structure
Fine Structure MCP server
communitystreamable_httpremotedestructive capablehealthy
Remote MCP server for agents that create, edit, validate, and publish Fine Structure apps.
01Tools · 115
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| list_media_capabilities Discovery for the media tools: the active image model and remaining image allowance, the video models this account may use with their per-second prices and prepaid wallet balance, and every valid slideshow style, template, and collection id. Call this before generate_image / generate_video / generate_slideshow instead of guessing enum values. Spends nothing. | read | false | unknown |
| get_video_status Poll one video job by id. Refreshes from the provider while it is still rendering and returns video_url once status is 'completed'. Spends nothing. | read | false | unknown |
| list_video_jobs List this account's own video jobs, newest first. Spends nothing. | read | false | unknown |
| list_slideshows List this account's slideshows, newest first, without slide bodies. Spends nothing. | read | false | unknown |
| estimate_video_cost Price a video render before generating it. Returns the duration, resolution, and the exact charge in USD against the prepaid video wallet. Spends nothing. | read | false | unknown |
| render_slideshow_images Render the images for a slideshow whose script was already written and approved. Charges 1 platform credit per slide, runs in the background, and returns immediately - poll get_slideshow until status is 'ready'. | read | false | unknown |
| get_slideshow Fetch one slideshow: its script, render status (script_ready, rendering, ready, render_failed), and the image URL of every rendered slide. Spends nothing. | read | false | unknown |
| 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. | write | true | unknown |
| 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. | write | true | unknown |
| 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. | write | true | unknown |
| 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. | write | true | unknown |
| create_entity_records Create/insert records in one app entity. Executes directly for the authenticated app owner and returns the created record ids. | write | true | unknown |
| 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. | write | true | unknown |
| update_ab_test Update a native A/B test, including active state, variants, traffic, and conversion goal. Creates a Saved Version before the change. | write | true | unknown |
| 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. | write | true | unknown |
| 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 its owner on WhatsApp and by email through the platform system channels. Pair it with schedule_agent_task for recurring work such as following up new leads on WhatsApp each morning, watching an app for runtime errors, or sending a weekly summary. Messaging anyone other than the verified owner requires a channel the owner connects in the Fine Structure Studio. | write | true | unknown |
| get_ab_test_stats Get views, unique visitors, conversions, and conversion rates for an A/B test. | read | false | unknown |
| agency_list_clients Agency mode only. List client records and app handoff status for the authenticated agent. | read | false | unknown |
| 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. | write | true | unknown |
| email_marketing_create_sequence Admin only. Create a scheduled email sequence using fixed dates or day offsets. Each generated email keeps mandatory unsubscribe. | write | true | unknown |
| email_marketing_app_create_sequence Create an app-scoped email sequence using fixed dates or day offsets between emails. | write | true | unknown |
| agency_get_claim_status Agency mode only. Inspect one handoff status without exposing the raw claim token. | read | false | unknown |
| restore_saved_version Compatibility endpoint for full Saved Version restore. MCP cannot execute this operation because it can replace database records without the dedicated in-chat approval flow. Use list_saved_versions and compare_current_to_version for read-only inspection, then ask the authenticated app owner to restore through the Fine Structure UI. | read | false | unknown |
| inspect_preview Return server-side preview context: URLs, persisted runtime/network errors, static clickable candidates, pages, and explicit live-browser availability. | read | false | unknown |
| email_marketing_app_create_broadcast Create an app-scoped broadcast to contacts synced from that generated app, optionally scheduled or sent now. | write | true | unknown |
| 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. | write | true | unknown |
| query_entity Query app data records for one entity with optional exact-match filters. | read | false | unknown |
| 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 runs on demand). Returns the normalized schedule and the computed next_run_at so you can read the fire time back to the user in their timezone. | write | true | unknown |
| 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. | unknown | unknown | unknown |
| 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. | read | false | unknown |
| 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 account is involved. | unknown | unknown | unknown |
| 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. | unknown | unknown | unknown |
| 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 this owner's verified phone. | unknown | unknown | unknown |
| generate_video Generate an AI video from a text prompt. Submits the render and returns a job_id immediately - poll get_video_status until it completes. Spends the account's prepaid video-credit wallet (NOT platform credits); pass max_charge_usd to cap how much a single call may spend. Video generation may be invitation-gated. | read | false | unknown |
| get_app_status Get app overview: files, published state, URL, active jobs. | read | false | unknown |
| 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. | read | false | unknown |
| set_primary_domain Set which app host should be treated as primary for generated links and custom-domain redirects. | write | true | unknown |
| get_domain_verification Return the exact DNS records and instructions required to verify and route the app custom domain. | read | false | unknown |
| remove_custom_domain Remove the configured custom domain from the app and clean up the platform-side hostname registration when possible. | destructive | true | true |
| check_domain_verification Check Fine Structure custom-domain verification and SSL status for the configured custom domain, then save the latest status. | read | false | unknown |
| 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. | read | false | unknown |
| get_app_files Get the file tree for an app with paths and byte sizes. | read | false | unknown |
| 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 | false | unknown |
| get_entities Get all entity (data model) schemas for an app, with record counts. Each entity has fields, types, and relationships. | read | false | unknown |
| list_saved_versions List restorable Saved Versions for an app, including versions created by MCP writes. | read | false | unknown |
| get_pages Get all pages in an app with their file paths and sizes. | read | false | unknown |
| get_errors Get recent runtime errors for an app (last 20). Useful for diagnosing issues before updating. | read | false | unknown |
| get_preview_url Return editor preview and published/public URLs for an app. | read | false | unknown |
| create_change_set Create a staged file change set. Add multiple file changes, validate them as one app state, then apply atomically. | write | true | unknown |
| discard_change_set Discard a pending staged change set without changing app files. | write | true | unknown |
| validate_change_set Validate current app files plus staged change set files before applying. | write | true | unknown |
| apply_change_set Apply a staged change set to the app. Creates a Saved Version before applying. Blocks on validation errors unless force=true. | write | true | unknown |
| validate_app Run deterministic app checks: syntax, imports, routes/pages, entity schemas, missing entities, and recorded runtime errors. | unknown | unknown | unknown |
| list_app_members List generated-app runtime users/members for an app. This is separate from Studio project collaborators. | read | false | unknown |
| remove_app_member Remove a generated-app runtime member. | destructive | true | true |
| get_app_security_audit Read recent server-side security audit events for an app. | read | false | unknown |
| compare_current_to_version Compare the current app files to a Saved Version and return compact per-file diffs. | unknown | unknown | unknown |
| list_secret_keys List secret key names for an app. Secret values are never returned. | read | false | unknown |
| configure_integration Store safe non-secret integration metadata for an app. Use set_secret for API keys/tokens. | unknown | unknown | unknown |
| set_secret Create or update one encrypted app secret. The secret value is never returned. | write | true | unknown |
| update_entity_schema Replace or shallow-merge an existing entity schema file. Creates a Saved Version before writing. | write | true | unknown |
| list_ab_tests List the platform A/B tests configured for an app. | read | false | unknown |
| validate_entity_relationships Validate entity relationship metadata and *_id references against existing entity schemas. | unknown | unknown | unknown |
| delete_secret Delete one app secret by key. | destructive | true | true |
| 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. | write | true | unknown |
| list_integrations List supported integrations and safe connected integration metadata for an app. Tokens/secrets are never returned. | read | false | unknown |
| 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. | read | false | unknown |
| 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 the result and that is a live credential in the conversation transcript. | write | true | unknown |
| email_marketing_status Admin only. Inspect the isolated Email Marketing module: enabled state, sender settings, templates, sequences, variable triggers, and recent campaign status. | read | false | unknown |
| email_marketing_app_status Inspect app-scoped Email Marketing for one generated app: settings, contacts, campaigns, event triggers, and recent events. | read | false | unknown |
| email_marketing_trigger_variable Admin only. Manually fire variable-transition email rules for one user. Useful for MCP/agent workflows and tests. | unknown | unknown | unknown |
| email_marketing_app_sync_contacts Sync an app entity table into app-scoped Email Marketing contacts. Records without a valid email are skipped. | unknown | unknown | unknown |
| email_marketing_app_create_event_trigger Create an app-scoped email rule that sends when an app event is recorded, for example entity_created or Customer.created. | write | true | unknown |
| email_marketing_app_record_event Record an app event and send matching app-scoped Email Marketing triggers. | unknown | unknown | unknown |
| email_marketing_app_create_workflow Create an app-scoped automation workflow with email, wait, condition, split, and goal steps. | write | true | unknown |
| email_marketing_app_report Read app-scoped Email Marketing reporting: delivery counts, open/click rates, and recent tracking events. | read | false | unknown |
| email_marketing_app_create_segment Create an app-scoped saved audience segment using field, tag, and behavior filters. | write | true | unknown |
| email_marketing_app_deliverability Read provider readiness, bounce/complaint rates, suppression reasons, and recent deliverability risk events. | read | false | unknown |
| email_marketing_app_suppress_contact Suppress an app contact email after a bounce, complaint, manual block, provider block, or unsubscribe. | unknown | unknown | unknown |
| email_marketing_app_process_queue Process due app-scoped automation workflow runs and email queue jobs with locks, retries, and suppression checks. | unknown | unknown | unknown |
| email_marketing_app_queue_status Inspect app-scoped Email Marketing queue jobs and per-status counts. | read | false | unknown |
| 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. | read | false | unknown |
| update_app_member_role Update a generated-app runtime member role. This cannot assign owner and cannot change the Fine Structure account owner. | write | true | unknown |
| configure_domain_redirects Configure custom-domain redirect policy: primary domain, optional www/root redirect, and HTTPS enforcement. | unknown | unknown | unknown |
| delete_ab_test Delete a native A/B test from an app. Creates a Saved Version before the change. | destructive | true | true |
| email_marketing_app_contact_profile Read a contact profile with email delivery, tracking, app-event, workflow, suppression, and unsubscribe timeline. | read | false | unknown |
| 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. | read | false | unknown |
| 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. | write | true | unknown |
| update_entity_record Compatibility tool that updates one record by ID. Executes directly for the authenticated app owner. | write | true | unknown |
| email_marketing_app_configure Configure isolated Email Marketing settings for a generated app. Can be used by Studio/chat agents. | unknown | unknown | unknown |
| 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. | write | true | unknown |
| set_entity_policy Create or update server-side read/write role policy for an app entity. | write | true | unknown |
| email_marketing_create_broadcast Admin only. Create a filtered broadcast campaign, optionally scheduled or sent now. | write | true | unknown |
| generate_image Generate one marketing image (ad creative, thumbnail, hero, social graphic) and return a public URL. Free plans burn one of their monthly free images; paid plans spend 1 platform credit. Optionally pass a reference image to keep a person, product, place, or brand consistent. | unknown | unknown | unknown |
| email_marketing_configure_sender Admin only. Configure global Email Marketing sender details and module enabled state. Unsubscribe footer remains mandatory. | unknown | unknown | unknown |
| email_marketing_update_template Admin only. Update an automatic Email Marketing template, such as user_joined welcome email. The unsubscribe block is still appended by the server. | write | true | unknown |
| email_marketing_create_variable_trigger Admin only. Create an email rule that sends when a named variable changes from one value to another. Empty from_value/to_value acts as wildcard. | write | true | unknown |
| generate_slideshow Write a TikTok/Instagram-style slideshow: hook, per-slide copy, caption, and hashtags, in any supported language. Costs 1 platform credit and returns the script for review. Set render_images=true to start image rendering right away (1 extra credit per slide), then poll get_slideshow until status is 'ready'. Pass slide_images to composite the slides on the account's own photos (Instagram carousel mode) and output_format for 9:16, 4:5, or 1:1 geometry. Call list_media_capabilities for the valid style, template, and collection ids. | read | false | unknown |
| 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. | read | false | unknown |
| 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. | write | true | unknown |
| compare_saved_versions Compare two Saved Versions and return per-file additions, removals, modifications, and compact diffs. | unknown | unknown | unknown |
| list_agents List the AI agents on the user's account with id, name, role, status and FineMail address. | read | false | unknown |
| list_agent_tasks List scheduled tasks for one agent (or the whole account), including schedule, status and next_run_at. | read | false | unknown |
| 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. | read | false | unknown |
| 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. | destructive | true | true |
| set_route_policy Create or update a server-owned route policy for a generated app route. | write | true | unknown |
| create_entity_schema Create an entity schema file in entities/<Entity>.json. Creates a Saved Version before writing. | write | true | unknown |
| 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. | write | true | unknown |
| 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. | write | true | unknown |
| 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. | read | false | unknown |
| get_domain_ssl_status Return SSL/certificate status and pending certificate validation DNS records for the app custom domain. | read | false | unknown |
| 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). | unknown | unknown | unknown |
| 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. | read | false | unknown |
| 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. | read | false | unknown |
| 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. | unknown | unknown | unknown |
02Install & source
https://finestructure.ai/api/mcp
remote_url- homepagehttps://finestructure.ai/api/mcp
03Access granted
Schedule a meeting · write
The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.
05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-08-30 23:05Z
next_check2026-09-01 23:05Z
cadenceevery 48h
verifiedtools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed
index_statusindex — 5 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/fine-structure)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →