Fine Structure
REMOTE · FINESTRUCTURE.AI · SCANNED SEP 20
Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email.
Available components
Recent critical change
Authorization (15 Aug 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (set_app_subdomain). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability87
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 7710 tokens (~91/item across 84 items; 84 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management99
- Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 2 additions. See how to fix → Fail
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 91% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 85 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Fine Structure MCP server?
Fine Structure is a hosted endpoint at https://finestructure.ai/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · finestructure.ai
claude mcp add --transport http ai-finestructure-fine-structure 'https://finestructure.ai/api/mcp'
{
"mcpServers": {
"ai-finestructure-fine-structure": {
"url": "https://finestructure.ai/api/mcp"
}
}
} {
"servers": {
"ai-finestructure-fine-structure": {
"type": "http",
"url": "https://finestructure.ai/api/mcp"
}
}
} [mcp_servers.ai-finestructure-fine-structure] url = "https://finestructure.ai/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-finestructure-fine-structure": {
"type": "remote",
"url": "https://finestructure.ai/api/mcp",
"enabled": true
}
}
} openclaw mcp add ai-finestructure-fine-structure --url 'https://finestructure.ai/api/mcp' --transport streamable-http
mcp_servers:
ai-finestructure-fine-structure:
url: "https://finestructure.ai/api/mcp" {
"McpServers": {
"ai-finestructure-fine-structure": {
"Transport": "http",
"Url": "https://finestructure.ai/api/mcp"
}
}
} assistant mcp add ai-finestructure-fine-structure -t streamable-http -u 'https://finestructure.ai/api/mcp'
{
"mcpServers": {
"ai-finestructure-fine-structure": {
"type": "http",
"url": "https://finestructure.ai/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Sept 26 +2
No change was recorded against any check on this day. Stability & Change Management went from 78 to 99.
- 16 Sept 26 −2
No change was recorded against any check on this day. Stability & Change Management went from 98 to 78.
- 14 Sept 26 +4
No change was recorded against any check on this day. Stability & Change Management went from 68 to 98.
- 9 Sept 26 −1
No change was recorded against any check on this day. Stability & Change Management went from 75 to 68.
- 1 Sept 26 0
- New tool “set_app_subdomain”, which the server declares destructive security
- New tool “check_subdomain_available” functional
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Aug 26 0
- A breaking change shipped without a version bump: still 1.0.0 ▼ security
- Tool “invite_app_member” rewrote its description, which is the text the model reads security
- Tool “add_custom_domain” is now declared destructive security
- Tool “detach_agent_whatsapp” is now declared destructive security
- Tool “set_entity_policy” is now declared destructive security
- Tool “set_route_policy” is now declared destructive security
- Tool “set_secret” is now declared destructive security
- Tool “start_owner_phone_verification” is now declared destructive security
- Tool “update_app_member_role” is now declared destructive security
- Tool “update_entity_record” is now declared destructive security
- Tool “update_entity_records” is now declared destructive security
- “invite_app_member” made “password” required, so existing callers break ▼ functional
- “invite_app_member” reworded the description of “password” cosmetic
- 23 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 65 to 68.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://finestructure.ai/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=finestructure.ai | CN=WE1,O=Google Trust Services,C=US | 23 Aug 2026 | 21 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | ec22316dc2ce94a90e629c2398fb8c00 |
| SANs: finestructure.ai, *.finestructure.ai | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of finestructure.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| finestructure.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(self), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://finestructure.ai/api/mcp | Verified | 200 | |
| http (plaintext) | http://finestructure.ai/api/mcp | HTTPS enforced | 301 | https://finestructure.ai/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_custom_domain Add Custom Domain ~74
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| domain | string | yes | Custom domain to connect, for example example.com or app.example.com |
No output schema declared.
No examples provided.
add_file_change Add File Change ~119
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| change_set_id | string | yes | Change set ID |
| content | string | – | Complete file contents for upsert |
| file_type | string | – | Optional file type override |
| operation | string | – | – |
| path | string | yes | Virtual file path |
No output schema declared.
No examples provided.
agency_create_claim_link Agency: Create Claim Link ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | Existing app ID owned by the agent |
| claim_expires_in_days | integer | – | Claim link lifetime, 1-90 days |
| client_email | string | yes | Client email allowed to claim ownership |
| client_full_name | string | – | Optional client display name |
| keep_agent_collaborator | boolean | – | Invite agent as editor after claim |
| note | string | – | Optional internal note |
No output schema declared.
No examples provided.
agency_create_client Agency: Create Client ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_email | string | yes | Client email that will be allowed to claim projects |
| client_full_name | string | – | Optional client display name |
| note | string | – | Optional internal note for the agency |
No output schema declared.
No examples provided.
agency_create_client_app Agency: Create Client App ~176
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.
| Name | Type | Req | Description |
|---|---|---|---|
| claim_expires_in_days | integer | – | Claim link lifetime, 1-90 days |
| client_email | string | yes | Client email allowed to claim ownership |
| client_full_name | string | – | Optional client display name |
| description | string | – | Optional short app description |
| keep_agent_collaborator | boolean | – | After claim, invite the agent back as an editor collaborator |
| name | string | yes | Name for the app (1-100 chars) |
| note | string | – | Optional internal client/project note |
| prompt | string | yes | Detailed description of the app to build |
No output schema declared.
No examples provided.
agency_get_claim_status Agency: Get Claim Status ~49
Agency mode only. Inspect one handoff status without exposing the raw claim token.
| Name | Type | Req | Description |
|---|---|---|---|
| handoff_id | string | yes | Handoff ID returned by agency_create_claim_link or agency_create_client_app |
No output schema declared.
No examples provided.
agency_list_clients Agency: List Clients ~43
Agency mode only. List client records and app handoff status for the authenticated agent.
| Name | Type | Req | Description |
|---|---|---|---|
| include_handoffs | boolean | – | Include claim links status without raw tokens |
No output schema declared.
No examples provided.
apply_change_set Apply Change Set ~69
Apply a staged change set to the app. Creates a Saved Version before applying. Blocks on validation errors unless force=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| change_set_id | string | yes | Change set ID |
| force | boolean | – | Apply even if validation has errors |
No output schema declared.
No examples provided.
attach_agent_whatsapp Attach Agent Whatsapp ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | The agent that should answer on this number. |
| phone_number_id | string | yes | phone_number_id from get_agent_whatsapp claimable_numbers. |
No output schema declared.
No examples provided.
check_domain_verification Check Domain Verification ~64
Check Fine Structure custom-domain verification and SSL status for the configured custom domain, then save the latest status.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| domain | string | – | Optional configured custom domain. If omitted, uses the app's current custom domain. |
No output schema declared.
No examples provided.
check_subdomain_available Check Subdomain Available ~125
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 'taken'.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | – | Optional ID of an app you own. When supplied, this app's own subdomain reports as 'current' instead of 'taken'. |
| subdomain | string | yes | Subdomain label to check |
No output schema declared.
No examples provided.
compare_current_to_version Compare Current To Version ~59
Compare the current app files to a Saved Version and return compact per-file diffs.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| max_diff_chars | integer | – | – |
| snapshot_id | string | yes | Saved Version snapshot ID |
No output schema declared.
No examples provided.
compare_saved_versions Compare Saved Versions ~77
Compare two Saved Versions and return per-file additions, removals, modifications, and compact diffs.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| base_snapshot_id | string | yes | Older/base snapshot ID |
| max_diff_chars | integer | – | – |
| target_snapshot_id | string | yes | Newer/target snapshot ID |
No output schema declared.
No examples provided.
configure_domain_redirects Configure Domain Redirects ~87
Configure custom-domain redirect policy: primary domain, optional www/root redirect, and HTTPS enforcement.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| force_https | boolean | – | Redirect HTTP custom-domain requests to HTTPS |
| primary_domain | string | yes | Canonical primary domain, for example example.com |
| redirect_www | boolean | – | Redirect the www/root counterpart to primary_domain |
No output schema declared.
No examples provided.
configure_integration Configure Integration ~81
Store safe non-secret integration metadata for an app. Use set_secret for API keys/tokens.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| config | object | yes | Safe metadata only, such as workspace/team/name/email |
| is_active | boolean | – | Set false to disconnect this integration metadata |
| provider | string | yes | Integration provider ID |
No output schema declared.
No examples provided.
confirm_owner_phone_verification Confirm Owner Phone Verification ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The 6-digit code from the WhatsApp message. |
| phone | string | yes | The same phone number the code was sent to. |
| region | string | – | Optional ISO region hint, matching the one used when sending. |
No output schema declared.
No examples provided.
create_ab_test Create A/B Test ~152
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| goal_event_filter | object | – | Optional goal filter, for example {'entity_name': 'Lead'} |
| goal_event_type | string | – | Optional conversion goal type: entity_create, any, form_submit |
| is_active | boolean | – | Whether to activate the test immediately |
| name | string | yes | Experiment name |
| page_name | string | yes | Base route page that triggers the experiment |
| variants | array | yes | At least two variants. Traffic must total 100. |
No output schema declared.
No examples provided.
create_agent Create Agent ~233
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | – | Optional app to attach the agent to; account-level when omitted |
| description | string | yes | What this agent is responsible for, one or two sentences |
| name | string | – | Agent display name (e.g. 'Lead Follow-up'). Auto-derived from role when omitted. |
| persona | string | – | Optional working style and tone instructions for the agent |
| role | string | yes | Short role label (e.g. 'sales assistant') |
No output schema declared.
No examples provided.
create_app Create App ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Optional short description |
| name | string | yes | Name for the app (1-100 chars) |
| prompt | string | yes | Detailed description of the app to build |
No output schema declared.
No examples provided.
create_change_set Create Change Set ~54
Create a staged file change set. Add multiple file changes, validate them as one app state, then apply atomically.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| label | string | – | Optional short label |
No output schema declared.
No examples provided.
create_entity_records Create Entity Records ~96
Create/insert records in one app entity. Executes directly for the authenticated app owner and returns the created record ids.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| entity | string | yes | Entity name |
| expected_count | integer | – | Optional safety check; the write aborts if the record count differs |
| reason | string | – | Why these records should be created |
| records | array | yes | Records to create |
No output schema declared.
No examples provided.
create_entity_schema Create Entity Schema ~86
Create an entity schema file in entities/<Entity>.json. Creates a Saved Version before writing.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| entity | string | yes | Entity name |
| indexes | array | – | – |
| metadata | object | – | – |
| overwrite | boolean | – | – |
| relationships | array | – | – |
| schema | object | yes | JSON schema object |
No output schema declared.
No examples provided.
delete_ab_test Delete A/B Test ~50
Delete a native A/B test from an app. Creates a Saved Version before the change.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| test_id | string | yes | A/B test ID |
No output schema declared.
No examples provided.
delete_entity_records Delete Entity Records ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| entity | string | yes | Entity name |
| expected_count | integer | – | Required match count safety check, when known |
| filters | – | – | One exact-match selector or a list of exact-match selectors |
| reason | string | – | Why these records should be deleted |
| record_ids | array | – | Exact record IDs to delete |
No output schema declared.
No examples provided.
delete_secret Delete Secret ~36
Delete one app secret by key.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| key | string | yes | Secret key name |
No output schema declared.
No examples provided.
detach_agent_whatsapp Detach Agent Whatsapp ~55
Disconnect the owner's WhatsApp route from a platform number. Removes only this account's route; other accounts sharing the number keep theirs.
| Name | Type | Req | Description |
|---|---|---|---|
| phone_number_id | string | yes | The number to disconnect, from get_agent_whatsapp. |
No output schema declared.
No examples provided.
discard_change_set Discard Change Set ~44
Discard a pending staged change set without changing app files.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| change_set_id | string | yes | Change set ID |
No output schema declared.
No examples provided.
get_ab_test_stats Get A/B Test Stats ~50
Get views, unique visitors, conversions, and conversion rates for an A/B test.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| test_id | string | yes | A/B test ID |
No output schema declared.
No examples provided.
get_agent_whatsapp Get Agent Whatsapp ~85
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | – | Optional: report only this agent's WhatsApp state. |
No output schema declared.
No examples provided.
get_app_analytics Get App Analytics ~72
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| days | integer | – | Window in days (1-90, default 7) |
No output schema declared.
No examples provided.
get_app_detail Get App Detail ~54
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
get_app_files Get App Files ~33
Get the file tree for an app with paths and byte sizes.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
get_app_links Get App Links ~56
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
get_app_security_audit Get App Security Audit ~40
Read recent server-side security audit events for an app.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| limit | integer | – | – |
No output schema declared.
No examples provided.
get_app_security_context Get App Security Context ~74
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| audit_limit | integer | – | – |
No output schema declared.
No examples provided.
get_app_status Get App Status ~34
Get app overview: files, published state, URL, active jobs.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
get_domain_ssl_status Get Domain SSL Status ~60
Return SSL/certificate status and pending certificate validation DNS records for the app custom domain.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| domain | string | – | Optional configured custom domain. If omitted, uses the app's current custom domain. |
No output schema declared.
No examples provided.
get_domain_verification Get Domain Verification ~60
Return the exact DNS records and instructions required to verify and route the app custom domain.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| domain | string | – | Optional configured custom domain. If omitted, uses the app's current custom domain. |
No output schema declared.
No examples provided.
get_entities Get Entities ~45
Get all entity (data model) schemas for an app, with record counts. Each entity has fields, types, and relationships.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
get_errors Get Errors ~53
Get recent runtime errors for an app (last 20). Useful for diagnosing issues before updating.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| limit | integer | – | Max errors to return (default 20) |
No output schema declared.
No examples provided.
get_job_status Get Job Status ~70
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.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The job_id returned by create_app or update_app |
No output schema declared.
No examples provided.
get_pages Get Pages ~32
Get all pages in an app with their file paths and sizes.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
get_platform_guide Get Platform Guide ~123
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | – | Optional app ID. If provided, the guide includes a safe app context summary. |
| sections | array | – | Optional subset of guide sections to return. |
| task_type | string | – | Optional task hint, for example edit_app, direct_file_edit, seed_data, or publish_app. |
No output schema declared.
No examples provided.
get_preview_url Get Preview URL ~31
Return editor preview and published/public URLs for an app.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
get_recommended_workflow Get Recommended Workflow ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | – | Optional app ID. If provided, the workflow includes a safe app context summary. |
| goal | string | – | Optional short description of the user's goal. |
| task_type | string | – | The task type to plan. |
No output schema declared.
No examples provided.
inspect_preview Inspect Live Preview ~88
Return server-side preview context: URLs, persisted runtime/network errors, static clickable candidates, pages, and explicit live-browser availability.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| auth_as | string | – | Optional auth simulation: anonymous |
| auth_as_role | string | – | Optional app role simulation, e.g. staff/admin/customer |
| route | string | – | Optional route to inspect |
No output schema declared.
No examples provided.
invite_app_member Invite App Member ~152
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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| string | yes | Member email | |
| full_name | string | – | – |
| password | string | yes | The password this member signs in with, chosen by the account owner. Required, and never echoed back in the result. |
| role | string | yes | App role, e.g. admin/staff/customer |
No output schema declared.
No examples provided.
list_ab_tests List A/B Tests ~31
List the platform A/B tests configured for an app.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
list_agent_tasks List Agent Tasks ~75
List scheduled tasks for one agent (or the whole account), including schedule, status and next_run_at.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | – | Optional agent id filter |
| limit | integer | – | Max tasks to return (1-100) |
| status | string | – | Optional status filter: draft, active, paused, archived |
No output schema declared.
No examples provided.
list_agents List Agents ~42
List the AI agents on the user's account with id, name, role, status and FineMail address.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | – | Optional filter by attached app |
No output schema declared.
No examples provided.
What is the Fine Structure MCP server?
Fine Structure is an MCP server listed in the public MCP registry as ai.finestructure/fine-structure. Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email. This page covers its hosted endpoint (https://finestructure.ai/api/mcp).
Is the Fine Structure MCP server safe to use?
Fine Structure scores 82 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Fine Structure MCP server expose?
Fine Structure exposes 84 tools: create_app, agency_create_client, agency_list_clients, agency_create_client_app, agency_create_claim_link, and 79 more. Their descriptions and schemas cost roughly 6,916 tokens of context every time the server is loaded.
Does the Fine Structure MCP server require authentication?
No. We connected to Fine Structure without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Fine Structure MCP server still maintained?
Fine Structure is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.