ZBS Index What actually exists in applied AI, with the source next to it

mcp server

Fine Structure

Remote MCP server for agents that create, edit, validate, and publish Fine Structure apps.

Description as published by the maintainer. Source

  • version 1.0.0
  • active

active — Registry entry last updated 2026-07-17.

What this server can do

105 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.

add_custom_domain(app_id, 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. Required: app_id, domain.
add_file_change(path, app_id, content, file_type, operation, change_set_id)
Stage one file upsert or delete inside a change set. Does not modify the live app until apply_change_set. Required: app_id, change_set_id, path.
agency_create_claim_link(note, app_id, client_email, client_full_name, claim_expires_in_days, keep_agent_collaborator)
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. Required: app_id, client_email.
agency_create_client(note, client_email, client_full_name)
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. Required: client_email.
agency_create_client_app(name, note, prompt, description, client_email, client_full_name, claim_expires_in_days, keep_agent_collaborator)
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. Required: client_email, name, prompt.
agency_get_claim_status(handoff_id)
Agency mode only. Inspect one handoff status without exposing the raw claim token. Required: handoff_id.
agency_list_clients(include_handoffs)
Agency mode only. List client records and app handoff status for the authenticated agent.
apply_change_set(force, app_id, change_set_id)
Apply a staged change set to the app. Creates a Saved Version before applying. Blocks on validation errors unless force=true. Required: app_id, change_set_id.
check_domain_verification(app_id, domain)
Check Fine Structure custom-domain verification and SSL status for the configured custom domain, then save the latest status. Required: app_id.
compare_current_to_version(app_id, snapshot_id, max_diff_chars)
Compare the current app files to a Saved Version and return compact per-file diffs. Required: app_id, snapshot_id.
compare_saved_versions(app_id, max_diff_chars, base_snapshot_id, target_snapshot_id)
Compare two Saved Versions and return per-file additions, removals, modifications, and compact diffs. Required: app_id, base_snapshot_id, target_snapshot_id.
configure_domain_redirects(app_id, force_https, redirect_www, primary_domain)
Configure custom-domain redirect policy: primary domain, optional www/root redirect, and HTTPS enforcement. Required: app_id, primary_domain.
configure_integration(app_id, config, provider, is_active)
Store safe non-secret integration metadata for an app. Use set_secret for API keys/tokens. Required: app_id, provider, config.
create_ab_test(name, app_id, variants, is_active, page_name, goal_event_type, goal_event_filter)
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. Required: app_id, name, page_name, variants.
create_app(name, prompt, description)
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. Required: name, prompt.
create_change_set(label, app_id)
Create a staged file change set. Add multiple file changes, validate them as one app state, then apply atomically. Required: app_id.
create_entity_records(app_id, entity, reason, records, expected_count)
Propose creating/inserting records in one app entity. No records are written until the app owner explicitly approves the frozen request in Studio chat. Required: app_id, entity, records.
create_entity_schema(app_id, entity, schema, indexes, metadata, overwrite, relationships)
Create an entity schema file in entities/<Entity>.json. Creates a Saved Version before writing. Required: app_id, entity, schema.
delete_ab_test(app_id, test_id)
Delete a native A/B test from an app. Creates a Saved Version before the change. Required: app_id, test_id.
delete_entity_records(app_id, entity, reason, filters, record_ids, expected_count)
Propose deleting exact records by ID or exact-match filters. It freezes the matched IDs and returns a pending approval; zero records are deleted until the app owner approves in Studio chat. Required: app_id, entity.
delete_secret(key, app_id)
Delete one app secret by key. Required: app_id, key.
discard_change_set(app_id, change_set_id)
Discard a pending staged change set without changing app files. Required: app_id, change_set_id.
email_marketing_app_configure(app_id, reply_to, is_enabled, sender_name, sender_email, default_name_field, default_email_field, default_contact_entity)
Configure isolated Email Marketing settings for a generated app. Can be used by Studio/chat agents. Required: app_id.
email_marketing_app_contact_profile(app_id, contact)
Read a contact profile with email delivery, tracking, app-event, workflow, suppression, and unsubscribe timeline. Required: app_id, contact.
email_marketing_app_create_broadcast(name, app_id, filters, subject, send_now, timezone, body_html, scheduled_at)
Create an app-scoped broadcast to contacts synced from that generated app, optionally scheduled or sent now. Required: app_id, subject, body_html.
email_marketing_app_create_event_trigger(name, app_id, enabled, filters, subject, body_html, event_name, entity_name)
Create an app-scoped email rule that sends when an app event is recorded, for example entity_created or Customer.created. Required: app_id, event_name, subject, body_html.
email_marketing_app_create_segment(name, app_id, filters, sample_limit)
Create an app-scoped saved audience segment using field, tag, and behavior filters. Required: app_id, name, filters.
email_marketing_app_create_sequence(name, steps, app_id, filters, start_at, timezone, schedule_mode)
Create an app-scoped email sequence using fixed dates or day offsets between emails. Required: app_id, steps.
email_marketing_app_create_workflow(name, steps, app_id, enabled, definition, trigger_event_name, trigger_entity_name)
Create an app-scoped automation workflow with email, wait, condition, split, and goal steps. Required: app_id, trigger_event_name.
email_marketing_app_deliverability(app_id)
Read provider readiness, bounce/complaint rates, suppression reasons, and recent deliverability risk events. Required: app_id.
email_marketing_app_process_queue(app_id, max_jobs)
Process due app-scoped automation workflow runs and email queue jobs with locks, retries, and suppression checks. Required: app_id.
email_marketing_app_queue_status(limit, app_id, status)
Inspect app-scoped Email Marketing queue jobs and per-status counts. Required: app_id.
email_marketing_app_record_event(email, app_id, record, record_id, contact_id, event_name, properties, entity_name)
Record an app event and send matching app-scoped Email Marketing triggers. Required: app_id, event_name.
email_marketing_app_report(limit, app_id, segment_limit, include_events)
Read app-scoped Email Marketing reporting: delivery counts, open/click rates, and recent tracking events. Required: app_id.
email_marketing_app_status(app_id, include_logs)
Inspect app-scoped Email Marketing for one generated app: settings, contacts, campaigns, event triggers, and recent events. Required: app_id.
email_marketing_app_suppress_contact(email, app_id, reason, source, metadata)
Suppress an app contact email after a bounce, complaint, manual block, provider block, or unsubscribe. Required: app_id, email.
email_marketing_app_sync_contacts(limit, app_id, name_field, email_field, entity_name)
Sync an app entity table into app-scoped Email Marketing contacts. Records without a valid email are skipped. Required: app_id, entity_name.
email_marketing_configure_sender(reply_to, is_enabled, sender_name, sender_email, postal_address, default_timezone, organization_name)
Admin only. Configure global Email Marketing sender details and module enabled state. Unsubscribe footer remains mandatory.
email_marketing_create_broadcast(name, filters, subject, send_now, timezone, body_html, scheduled_at)
Admin only. Create a filtered broadcast campaign, optionally scheduled or sent now. Required: subject, body_html.
email_marketing_create_sequence(name, steps, filters, start_at, timezone, schedule_mode)
Admin only. Create a scheduled email sequence using fixed dates or day offsets. Each generated email keeps mandatory unsubscribe. Required: name, schedule_mode, steps.
email_marketing_create_variable_trigger(name, enabled, filters, subject, to_value, body_html, from_value, variable_name)
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. Required: variable_name, subject, body_html.
email_marketing_status(include_logs)
Admin only. Inspect the isolated Email Marketing module: enabled state, sender settings, templates, sequences, variable triggers, and recent campaign status.
email_marketing_trigger_variable(context, user_id, to_value, from_value, variable_name)
Admin only. Manually fire variable-transition email rules for one user. Useful for MCP/agent workflows and tests. Required: user_id, variable_name.
email_marketing_update_template(enabled, subject, body_html, template_id)
Admin only. Update an automatic Email Marketing template, such as user_joined welcome email. The unsubscribe block is still appended by the server. Required: template_id.
estimate_video_cost(model, duration, resolution)
Price a video render before generating it. Returns the duration, resolution, and the exact charge in USD against the prepaid video wallet. Spends nothing.
generate_image(prompt, language, notify_by_email, reference_image_url, reference_image_data_url, reference_image_data_urls)
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. Required: prompt.
generate_slideshow(goal, cta_url, enhanced, language, template, collection, text_align, voice_spec, series_part, slide_count, slide_texts, accent_color, sales_bridge, slide_images, visual_style, content_style, cta_platforms, output_format, render_images, with_graphics, authentic_mode, x_ways_substyle, narrative_device)
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. Required: goal.
generate_video(model, prompt, duration, image_urls, resolution, aspect_ratio, max_charge_usd)
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. Required: prompt.
get_ab_test_stats(app_id, test_id)
Get views, unique visitors, conversions, and conversion rates for an A/B test. Required: app_id, test_id.
get_app_detail(app_id)
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. Required: app_id.
get_app_files(app_id)
Get the file tree for an app with paths and byte sizes. Required: app_id.
get_app_links(app_id)
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. Required: app_id.
get_app_security_audit(limit, app_id)
Read recent server-side security audit events for an app. Required: app_id.
get_app_security_context(app_id, audit_limit)
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. Required: app_id.
get_app_status(app_id)
Get app overview: files, published state, URL, active jobs. Required: app_id.
get_domain_ssl_status(app_id, domain)
Return SSL/certificate status and pending certificate validation DNS records for the app custom domain. Required: app_id.
get_domain_verification(app_id, domain)
Return the exact DNS records and instructions required to verify and route the app custom domain. Required: app_id.
get_entities(app_id)
Get all entity (data model) schemas for an app, with record counts. Each entity has fields, types, and relationships. Required: app_id.
get_errors(limit, app_id)
Get recent runtime errors for an app (last 20). Useful for diagnosing issues before updating. Required: app_id.
get_job_status(job_id)
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. Required: job_id.
get_pages(app_id)
Get all pages in an app with their file paths and sizes. Required: app_id.
get_platform_guide(app_id, sections, task_type)
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_preview_url(app_id)
Return editor preview and published/public URLs for an app. Required: app_id.
get_recommended_workflow(goal, app_id, task_type)
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_slideshow(history_id)
Fetch one slideshow: its script, render status (script_ready, rendering, ready, render_failed), and the image URL of every rendered slide. Spends nothing. Required: history_id.
get_video_status(job_id)
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. Required: job_id.
inspect_preview(route, app_id, auth_as, auth_as_role)
Return server-side preview context: URLs, persisted runtime/network errors, static clickable candidates, pages, and explicit live-browser availability. Required: app_id.
invite_app_member(role, email, app_id, password, full_name)
Provision a generated-app runtime member with a role. This does not create a Studio collaborator. The owner role cannot be assigned. If password is omitted, a temporary password is generated and returned once. Required: app_id, email, role.
list_ab_tests(app_id)
List the platform A/B tests configured for an app. Required: app_id.
list_app_domains(app_id)
List an app's platform path, subdomain, and configured custom domain with verification, SSL, primary-domain, redirect, publish, and login-gating status. Required: app_id.
list_app_members(app_id)
List generated-app runtime users/members for an app. This is separate from Studio project collaborators. Required: app_id.
list_apps
List all applications owned by the authenticated user.
list_integrations(app_id)
List supported integrations and safe connected integration metadata for an app. Tokens/secrets are never returned. Required: app_id.
list_media_capabilities(surfaces)
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.
list_saved_versions(app_id)
List restorable Saved Versions for an app, including versions created by MCP writes. Required: app_id.
list_secret_keys(app_id)
List secret key names for an app. Secret values are never returned. Required: app_id.
list_slideshows(limit)
List this account's slideshows, newest first, without slide bodies. Spends nothing.
list_video_jobs(limit)
List this account's own video jobs, newest first. Spends nothing.
patch_app_file(path, app_id, new_text, old_text, replace_all)
Patch one file by replacing exact text. Safer than full overwrite for targeted edits. Creates a Saved Version before changing content. Required: app_id, path, old_text, new_text.
publish_app(app_id, access_mode, make_public, auth_required)
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. Required: app_id.
query_entity(sort, limit, app_id, entity, offset, filters)
Query app data records for one entity with optional exact-match filters. Required: app_id, entity.
read_app_file(path, app_id, max_chars)
Read one source file from an app's virtual filesystem. Required: app_id, path.
read_app_files(paths, app_id, max_chars_per_file)
Read several source files from an app's virtual filesystem. Required: app_id, paths.
remove_app_member(app_id, user_id)
Remove a generated-app runtime member. Required: app_id, user_id.
remove_custom_domain(app_id, domain)
Remove the configured custom domain from the app and clean up the platform-side hostname registration when possible. Required: app_id.
rename_app_file(force, app_id, new_path, old_path, overwrite)
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. Required: app_id, old_path, new_path.
render_slideshow_images(history_id)
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'. Required: history_id.
restore_file_from_version(path, app_id, confirm, snapshot_id)
Restore one file from a Saved Version instead of restoring the entire app. Creates a Saved Version before changing the file. Required: app_id, snapshot_id, path, confirm.
restore_saved_version(app_id, snapshot_id)
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. Required: app_id, snapshot_id.
seed_entity(mode, app_id, entity, reason, records)
Compatibility tool for proposing starter-record creation. It never inserts records directly: it creates a pending approval that the app owner must approve or reject in Studio chat. Approval-free initial seed is server-controlled inside create_app and cannot be requested through MCP. Required: app_id, entity, records.
set_entity_policy(read, write, app_id, entity)
Create or update server-side read/write role policy for an app entity. Required: app_id, entity, read, write.
set_primary_domain(app_id, domain)
Set which app host should be treated as primary for generated links and custom-domain redirects. Required: app_id, domain.
set_route_policy(route, app_id, redirect_to, require_auth, allowed_roles)
Create or update a server-owned route policy for a generated app route. Required: app_id, route, require_auth, allowed_roles.
set_secret(key, value, app_id)
Create or update one encrypted app secret. The secret value is never returned. Required: app_id, key, value.
update_ab_test(name, app_id, test_id, variants, is_active, page_name, goal_event_type, goal_event_filter)
Update a native A/B test, including active state, variants, traffic, and conversion goal. Creates a Saved Version before the change. Required: app_id, test_id.
update_app(app_id, prompt)
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. Required: app_id, prompt.
update_app_member_role(role, app_id, user_id)
Update a generated-app runtime member role. This cannot assign owner and cannot change the Fine Structure account owner. Required: app_id, user_id, role.
update_entity_metadata(app_id, entity, indexes, metadata, relationships)
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. Required: app_id, entity.
update_entity_record(data, app_id, entity, reason, record_id)
Compatibility tool for proposing an update to one record by ID. It returns a pending approval and never changes the record until the app owner approves it in Studio chat. Required: app_id, entity, record_id, data.
update_entity_records(app_id, entity, reason, changes, filters, updates, record_ids, expected_count)
Propose updates to exact records. Select explicit record_ids or exact-match filters and provide shared changes, or provide per-record updates. The database remains unchanged until the app owner approves the frozen request in Studio chat. Required: app_id, entity.
update_entity_schema(merge, app_id, entity, schema, indexes, metadata, relationships)
Replace or shallow-merge an existing entity schema file. Creates a Saved Version before writing. Required: app_id, entity, schema.
validate_app(app_id, include_runtime_errors)
Run deterministic app checks: syntax, imports, routes/pages, entity schemas, missing entities, and recorded runtime errors. Required: app_id.
validate_change_set(app_id, change_set_id, include_runtime_errors)
Validate current app files plus staged change set files before applying. Required: app_id, change_set_id.
validate_entity_relationships(app_id)
Validate entity relationship metadata and *_id references against existing entity schemas. Required: app_id.
write_app_file(path, app_id, content, file_type)
Create or replace one file in an app's virtual filesystem. Creates a Saved Version before changing content. Required: app_id, path, content.

Last successful function declaration observed on . Source: https://finestructure.ai/api/mcp. We list what the server declared; we do not call any of these functions.

Endpoint status observed on . Source: https://finestructure.ai/api/mcp.

Signals

These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.

Signal Value What it measures Window Observed Source
Latest published version 1.0.0 Latest version string the maintainer published to the registry. as of fetch Model Context Protocol
Registry record last updated 2026-07-17 When the registry record was last updated by its maintainer. point in time Model Context Protocol
First listed in the MCP Registry 2026-07-17 Date this server was first published to the official MCP Registry. Not a usage or quality measure. point in time Model Context Protocol
mcp tools declared 105 tools Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. as of probe finestructure.ai
mcp endpoint status ok The server listed 105 functions when asked. as of probe finestructure.ai

Where to get it

This record as data

Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.

GET /api/v1/entries/mcp_server.json

Sources

  1. Tools declared by the MCP server at https://finestructure.ai/api/mcp — finestructure.ai, observed , trust tier 4.
  2. Official MCP Registry — Model Context Protocol, observed , trust tier 1.