Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Fine Structure

REMOTE · FINESTRUCTURE.AI · SCANNED SEP 21

Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email.

Available components

0 this week 82 Trust /100

Recent critical change

Authorization (15 Aug 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

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
Transport & Reachability100
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
Install

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

# add to Claude Code
claude mcp add --transport http ai-finestructure-fine-structure 'https://finestructure.ai/api/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "ai-finestructure-fine-structure": {
      "url": "https://finestructure.ai/api/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ai-finestructure-fine-structure": {
      "type": "http",
      "url": "https://finestructure.ai/api/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.ai-finestructure-fine-structure]
url = "https://finestructure.ai/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-finestructure-fine-structure": {
      "type": "remote",
      "url": "https://finestructure.ai/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ai-finestructure-fine-structure --url 'https://finestructure.ai/api/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  ai-finestructure-fine-structure:
    url: "https://finestructure.ai/api/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ai-finestructure-fine-structure": {
      "Transport": "http",
      "Url": "https://finestructure.ai/api/mcp"
    }
  }
}
# add to Vellum
assistant mcp add ai-finestructure-fine-structure -t streamable-http -u 'https://finestructure.ai/api/mcp'
// mcp.json
{
  "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.

Changelog

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
  • 20 Aug 26 0
    • The server rewrote its instructions, which are the text every model session reads security
Diagnostics

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 21 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
MCP tools · 84 exposed · ~6,916 tokens

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 →

Tool Tokens
list_app_domains ~52

List an app's platform path, subdomain, and configured custom domain with verification, SSL, primary-domain, redirect, publish, and login-gating status.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

list_app_members ~39

List generated-app runtime users/members for an app. This is separate from Studio project collaborators.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

list_apps ~73

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.

NameTypeReqDescription
limitintegerMax apps to return (1-200)
offsetintegerApps to skip, for paging

No output schema declared.

No examples provided.

list_integrations ~39

List supported integrations and safe connected integration metadata for an app. Tokens/secrets are never returned.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

list_saved_versions ~36

List restorable Saved Versions for an app, including versions created by MCP writes.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

list_secret_keys ~34

List secret key names for an app. Secret values are never returned.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

patch_app_file ~116

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.

NameTypeReqDescription
app_idstringyesThe app ID
new_textstringyesReplacement text
old_textstringyesExact existing text to replace
pathstringyesVirtual file path
replace_allbooleanReplace all matches instead of the first match

No output schema declared.

No examples provided.

publish_app ~165

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.

NameTypeReqDescription
access_modestringLive access policy. public_open = anyone can view. public_auth = public URL opens but app login is required. private = published snapshot remains owner/collaborator-only. keep = preserve current visi…
app_idstringyesThe app ID to publish
auth_requiredbooleanOptional explicit override for generated-app login requirement. Prefer access_mode when possible.
make_publicbooleanOptional explicit override for whether published URLs are publicly reachable. Prefer access_mode when possible.

No output schema declared.

No examples provided.

query_entity ~91

Query app data records for one entity with optional exact-match filters.

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name, for example Patient
filtersobjectExact-match field filters
limitintegerMax records to return
offsetintegerPagination offset
sortstringSort field, prefix with - for descending

No output schema declared.

No examples provided.

read_app_file ~82

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.

NameTypeReqDescription
app_idstringyesThe app ID
max_charsintegerMaximum content characters to return
pathstringyesVirtual file path, for example pages/Home.jsx

No output schema declared.

No examples provided.

read_app_files ~79

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.

NameTypeReqDescription
app_idstringyesThe app ID
max_chars_per_fileintegerMaximum characters per file
pathsarrayyesVirtual file paths to read

No output schema declared.

No examples provided.

remove_app_member ~39

Remove a generated-app runtime member.

NameTypeReqDescription
app_idstringyesThe app ID
user_idstringyesGenerated app user id

No output schema declared.

No examples provided.

remove_custom_domain ~59

Remove the configured custom domain from the app and clean up the platform-side hostname registration when possible.

NameTypeReqDescription
app_idstringyesThe app ID
domainstringOptional configured custom domain. If omitted, removes the current custom domain.

No output schema declared.

No examples provided.

rename_app_file ~115

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.

NameTypeReqDescription
app_idstringyesThe app ID
forcebooleanApply even if validation reports blocking errors
new_pathstringyesNew virtual file path
old_pathstringyesExisting virtual file path to rename
overwritebooleanAllow replacing an existing file at new_path

No output schema declared.

No examples provided.

restore_file_from_version ~97

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.

NameTypeReqDescription
app_idstringyesThe app ID
confirmbooleanyes
pathstringyesVirtual file path to restore
snapshot_idstringyesSaved Version snapshot ID

No output schema declared.

No examples provided.

schedule_agent_task ~280

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.

NameTypeReqDescription
activatebooleanStart the schedule immediately (true) or save as draft (false)
agent_idstringyesThe agent id (from create_agent or list_agents)
instructionsstringyesWhat the agent should do on each run, written as instructions to the agent
max_runsintegerOptional cap on total runs (0 = unlimited)
scheduleobjectyesSchedule object, e.g. {"type":"daily","time":"08:30","timezone":"Asia/Jerusalem"} or {"type":"weekly","time":"09:00","timezone":"Asia/Jerusalem","days_of_week":[0]} or {"type":"once","run_at":"2026-0…
titlestringyesShort task title

No output schema declared.

No examples provided.

seed_entity ~102

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).

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name
modestringappend always inserts; skip_if_not_empty inserts only when the entity is empty
reasonstringWhy these records should be created
recordsarrayyesRecords to insert

No output schema declared.

No examples provided.

set_app_subdomain ~171

Set or clear the app platform subdomain - the '<subdomain>.<base domain>' 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 immediately and creates NO redirect: the previous name stops resolving to this app and is released for anyone to claim. Pass an empty subdomain to clear it. For a domain the user owns, use add_custom_domain instead.

NameTypeReqDescription
app_idstringyesThe app ID
subdomainstringyesSubdomain label: 3-32 characters, lowercase letters, digits and hyphens, no leading or trailing hyphen, not a reserved platform name. Empty string clears the subdomain.

No output schema declared.

No examples provided.

set_entity_policy ~70

Create or update server-side read/write role policy for an app entity.

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name, e.g. Booking
readarrayyesRoles allowed to read
writearrayyesRoles allowed to write

No output schema declared.

No examples provided.

set_primary_domain ~62

Set which app host should be treated as primary for generated links and custom-domain redirects.

NameTypeReqDescription
app_idstringyesThe app ID
domainstringyesPrimary host, for example example.com, www.example.com, or the app subdomain host.

No output schema declared.

No examples provided.

set_route_policy ~78

Create or update a server-owned route policy for a generated app route.

NameTypeReqDescription
allowed_rolesarrayyesAllowed app roles
app_idstringyesThe app ID
redirect_tostring
require_authbooleanyes
routestringyesRoute or wildcard route, e.g. /admin/*

No output schema declared.

No examples provided.

set_secret ~57

Create or update one encrypted app secret. The secret value is never returned.

NameTypeReqDescription
app_idstringyesThe app ID
keystringyesSecret key name
valuestringyesSecret value to encrypt and store

No output schema declared.

No examples provided.

start_owner_phone_verification ~131

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.

NameTypeReqDescription
phonestringyesThe owner's own WhatsApp number, ideally in E.164 form such as +972501234567.
regionstringOptional ISO region hint (for example IL, US) used when the number has no country code.

No output schema declared.

No examples provided.

update_ab_test ~135

Update a native A/B test, including active state, variants, traffic, and conversion goal. Creates a Saved Version before the change.

NameTypeReqDescription
app_idstringyesThe app ID
goal_event_filterobjectOptional conversion goal filter
goal_event_typestringOptional conversion goal type
is_activebooleanOptional active state
namestringOptional new name
page_namestringOptional new base route page
test_idstringyesA/B test ID
variantsarrayOptional replacement variants. Traffic must total 100.

No output schema declared.

No examples provided.

update_app ~74

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.

NameTypeReqDescription
app_idstringyesThe app ID to update
promptstringyesWhat to change in the app

No output schema declared.

No examples provided.

update_app_member_role ~63

Update a generated-app runtime member role. This cannot assign owner and cannot change the Fine Structure account owner.

NameTypeReqDescription
app_idstringyesThe app ID
rolestringyesNew role
user_idstringyesGenerated app user id

No output schema declared.

No examples provided.

update_entity_metadata ~78

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.

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name
indexesarray
metadataobject
relationshipsarray

No output schema declared.

No examples provided.

update_entity_record ~82

Compatibility tool that updates one record by ID. Executes directly for the authenticated app owner.

NameTypeReqDescription
app_idstringyesThe app ID
dataobjectyesFields to merge into the record
entitystringyesEntity name
reasonstringWhy this record should be updated
record_idstringyesRecord ID

No output schema declared.

No examples provided.

update_entity_records ~159

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.

NameTypeReqDescription
app_idstringyesThe app ID
changesobjectShared fields to merge into every selected record
entitystringyesEntity name
expected_countintegerRequired match count safety check, when known
filtersOne exact-match selector or a list of exact-match selectors
reasonstringWhy these records should be updated
record_idsarrayExact record IDs to update
updatesarrayPer-record changes; use instead of shared changes

No output schema declared.

No examples provided.

update_entity_schema ~88

Replace or shallow-merge an existing entity schema file. Creates a Saved Version before writing.

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name
indexesarray
mergeboolean
metadataobject
relationshipsarray
schemaobjectyesSchema fields to set or merge

No output schema declared.

No examples provided.

validate_app ~51

Run deterministic app checks: syntax, imports, routes/pages, entity schemas, missing entities, and recorded runtime errors.

NameTypeReqDescription
app_idstringyesThe app ID
include_runtime_errorsboolean

No output schema declared.

No examples provided.

validate_change_set ~53

Validate current app files plus staged change set files before applying.

NameTypeReqDescription
app_idstringyesThe app ID
change_set_idstringyesChange set ID
include_runtime_errorsboolean

No output schema declared.

No examples provided.

validate_entity_relationships ~34

Validate entity relationship metadata and *_id references against existing entity schemas.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

write_app_file ~97

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.

NameTypeReqDescription
app_idstringyesThe app ID
contentstringyesComplete file contents
file_typestringOptional file type override
pathstringyesVirtual file path

No output schema declared.

No examples provided.

Common questions

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 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.