ai.finestructure/fine-structure

Fine Structure

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

Endpointhttps://finestructure.ai/api/mcp (streamable-http)
Registry version1.0.2
Now99 tools · grade D (58) · pin ts_e13db556ffec1830760a0aa526b1081a · protocol 2025-06-18
First / last listed2026-10-27 06:14 UTC / 2026-10-27 06:14 UTC
Grade over time2026-10-27: D (58), 99 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-10-27 06:14 UTC
99 tools, grade D (58)

Tools: create_app agency_create_client agency_list_clients agency_create_client_app agency_create_claim_link agency_get_claim_status update_app publish_app get_platform_guide get_recommended_workflow get_job_status get_app_status get_app_links list_app_domains set_app_subdomain check_subdomain_available add_custom_domain get_domain_verification check_domain_verification set_primary_domain remove_custom_domain get_domain_ssl_status configure_domain_redirects list_apps get_app_files read_app_file read_app_files write_app_file patch_app_file rename_app_file get_app_detail get_entities query_entity seed_entity create_entity_records update_entity_record update_entity_records delete_entity_records get_pages get_errors get_app_analytics get_preview_url list_saved_versions create_change_set add_file_change validate_change_set apply_change_set discard_change_set validate_app inspect_preview get_app_security_context set_route_policy set_function_policy invoke_function create_platform_request get_platform_request list_platform_requests reply_platform_request update_platform_request set_entity_policy list_app_members invite_app_member update_app_member_role remove_app_member get_app_security_audit compare_saved_versions compare_current_to_version restore_file_from_version create_entity_schema update_entity_schema validate_entity_relationships update_entity_metadata list_secret_keys set_secret delete_secret list_integrations configure_integration list_ab_tests create_ab_test update_ab_test delete_ab_test get_ab_test_stats get_app_metadata set_app_metadata preview_saved_version set_agent_owner_relay create_agent list_agents schedule_agent_task list_agent_tasks get_agent_whatsapp start_owner_phone_verification confirm_owner_phone_verification attach_agent_whatsapp detach_agent_whatsapp list_agent_conversations send_agent_message get_agent_conversation get_agent_task

Current tools (99)

create_appCreate 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.
params: name*, prompt*, description
agency_create_clientAgency 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.
params: client_email*, client_full_name, note
agency_list_clientsAgency mode only. List client records and app handoff status for the authenticated agent.
params: include_handoffs
agency_create_client_appAgency 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.
params: client_email*, client_full_name, name*, prompt*, description, note, keep_agent_collaborator, claim_expires_in_days
agency_create_claim_linkAgency 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.
params: app_id*, client_email*, client_full_name, note, keep_agent_collaborator, claim_expires_in_days
agency_get_claim_statusAgency mode only. Inspect one handoff status without exposing the raw claim token.
params: handoff_id*
update_appUpdate 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.
params: app_id*, prompt*
publish_appPublish 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.
params: app_id*, access_mode, auth_required, make_public
get_platform_guideReturn 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.
params: app_id, sections, task_type
get_recommended_workflowReturn 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.
params: task_type, goal, app_id
get_job_statusPoll 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.
params: job_id*
get_app_statusGet app overview: files, published state, URL, active jobs.
params: app_id*
get_app_linksReturn 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.
params: app_id*
list_app_domainsList an app's platform path, subdomain, and configured custom domain with verification, SSL, primary-domain, redirect, publish, and login-gating status.
params: app_id*
set_app_subdomainSet 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
params: app_id*, subdomain*
check_subdomain_availableCheck 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'.
params: subdomain*, app_id
add_custom_domainAttach 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.
params: app_id*, domain*
get_domain_verificationReturn the exact DNS records and instructions required to verify and route the app custom domain.
params: app_id*, domain
check_domain_verificationCheck Fine Structure custom-domain verification and SSL status for the configured custom domain, then save the latest status.
params: app_id*, domain
set_primary_domainSet which app host should be treated as primary for generated links and custom-domain redirects.
params: app_id*, domain*
remove_custom_domainRemove the configured custom domain from the app and clean up the platform-side hostname registration when possible.
params: app_id*, domain
get_domain_ssl_statusReturn SSL/certificate status and pending certificate validation DNS records for the app custom domain.
params: app_id*, domain
configure_domain_redirectsConfigure custom-domain redirect policy: primary domain, optional www/root redirect, and HTTPS enforcement.
params: app_id*, primary_domain*, redirect_www, force_https
list_appsList owned and accepted Studio-shared applications, newest activity first. Returns up to `limit` apps per call plus the total count; page with `offset` when the account has more. Accepted editors can edit shared source; viewers can read it. Publishing, records, domains and security administration remain owner-only.
params: limit, offset
get_app_filesGet the file tree for an app with paths and byte sizes.
params: app_id*
read_app_fileRead 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.
params: app_id*, path*, max_chars
read_app_filesRead 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.
params: app_id*, paths*, max_chars_per_file
write_app_fileCreate 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.
params: app_id*, path*, content*, file_type
patch_app_filePatch 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.
params: app_id*, path*, old_text*, new_text*, replace_all
rename_app_fileRename 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.
params: app_id*, old_path*, new_path*, overwrite, force
get_app_detailDeep introspection of an app: entities, pages, settings, integrations, environment variables, and file structure. Use this to understand what an app contains before updating it.
params: app_id*
get_entitiesGet all entity (data model) schemas for an app, with record counts. Each entity has fields, types, and relationships.
params: app_id*
query_entityQuery app data records for one entity with optional exact-match filters.
params: app_id*, entity*, filters, sort, limit, offset
seed_entityCompatibility tool for starter-record creation. Inserts directly for the authenticated app owner; by default it only seeds an empty entity (skip_if_not_empty).
params: app_id*, entity*, records*, mode, reason
create_entity_recordsCreate/insert records in one app entity. Executes directly for the authenticated app owner and returns the created record ids.
params: app_id*, entity*, records*, reason, expected_count
update_entity_recordCompatibility tool that updates one record by ID. Executes directly for the authenticated app owner.
params: app_id*, entity*, record_id*, data*, reason
update_entity_recordsUpdate 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.
params: app_id*, entity*, record_ids, filters, changes, updates, reason, expected_count
delete_entity_recordsDelete 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.
params: app_id*, entity*, record_ids, filters, reason, expected_count
get_pagesGet all pages in an app with their file paths and sizes.
params: app_id*
get_errorsGet recent runtime errors for an app (last 20). Useful for diagnosing issues before updating.
params: app_id*, limit
get_app_analyticsTraffic 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.
params: app_id*, days
get_preview_urlReturn editor preview and published/public URLs for an app.
params: app_id*
list_saved_versionsList restorable Saved Versions for an app, including versions created by MCP writes.
params: app_id*
create_change_setCreate a staged file change set. Add multiple file changes, validate them as one app state, then apply atomically.
params: app_id*, label
add_file_changeStage 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.
params: app_id*, change_set_id*, path*, content, file_type, operation
validate_change_setValidate current app files plus staged change set files before applying.
params: app_id*, change_set_id*, include_runtime_errors
apply_change_setApply a staged change set to the app. Creates a Saved Version before applying. Blocks on validation errors unless force=true.
params: app_id*, change_set_id*, force
discard_change_setDiscard a pending staged change set without changing app files.
params: app_id*, change_set_id*
validate_appRun deterministic app checks: syntax, imports, routes/pages, entity schemas, missing entities, and recorded runtime errors.
params: app_id*, include_runtime_errors
inspect_previewReturn server-side preview context: URLs, persisted runtime/network errors, static clickable candidates, pages, and explicit live-browser availability.
params: app_id*, route, auth_as, auth_as_role
get_app_security_contextReturn safe security context for one owned app: owner id/email, Studio collaborators, generated-app members, route policies, entity policies, function policies, and recent security audit entries. Does not return secrets and does not grant access to other apps.
params: app_id*, audit_limit
set_route_policyCreate or update a server-owned route policy for a generated app route.
params: app_id*, route*, require_auth*, allowed_roles*, redirect_to
set_function_policyCreate or update the server-owned access policy of a backend function (functions/<name>.js). Without a policy a function answers only to the app owner's Studio token (401 for app visitors and webhooks). Recipes: anonymous checkout step or inbound webhook/IPN -> require_auth=false; signed-in members -> require_auth=true + allowed_roles (e.g. ['authenticated'] or ['admin','staff']); webhook with a s
params: app_id*, function*, require_auth*, allowed_roles, require_secret, secret_name, secret_header, allowed_hosts, sdk_identity
invoke_functionRun a backend function of an owned app exactly like the HTTP route and return its status and JSON. caller='owner' runs as the app owner; caller='anonymous' first evaluates the function policy as a public visitor and returns the 401/403 decision without running when access would be denied. Use it to verify a function (secrets, outbound calls, policy) before wiring it into the app.
params: app_id*, function*, params, caller, headers
create_platform_requestOpen a request to the Fine Structure platform team: a bug, a feature request or a question about the platform itself (not about the user's app). Use it when something in the platform blocks you instead of working around it. Give a reproduction the team can run (invoke_function / curl / the exact tool call and result), what you expected, and how the team will know it is closed. Credential-looking v
params: type*, title*, body*, app_id, severity, reproduction, expected, acceptance, attachments
get_platform_requestOne platform request with its full history: team replies, status changes (open | triaged | in_progress | needs_info | deployed | wont_fix) and what was deployed (commit, time). Pass since=<ISO timestamp> to get only the events after it.
params: request_id*, since
list_platform_requestsYour account's platform requests, newest activity first. Call it at the start of a session with since=<the updated_date you last saw> to learn what changed: replies, needs_info questions to answer, deployments with their commit. Filters: app_id, status.
params: app_id, status, since, limit, scope
reply_platform_requestAdd a reply or a finding to one of your platform requests without opening a new one, e.g. to answer a needs_info question (that reopens it).
params: request_id*, body*, as_team
update_platform_requestPlatform team only: set the status of a request (open | triaged | in_progress | needs_info | deployed | wont_fix), attach the deployed commit and/or reply. deployed and needs_info mail the requester.
params: request_id*, status, reply, deployed_commit
set_entity_policyReplace server-side entity access policy. Optional action rules override read/write roles and can allow public create without public read, update, or delete. Omitting rules replaces any existing action rules with read/write role behavior.
params: app_id*, entity*, read*, write*, rules
list_app_membersList generated-app runtime users/members for an app. This is separate from Studio project collaborators.
params: app_id*
invite_app_memberProvision 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.
params: app_id*, email*, role*, full_name, password*
update_app_member_roleUpdate a generated-app runtime member role. This cannot assign owner and cannot change the Fine Structure account owner.
params: app_id*, user_id*, role*
remove_app_memberRemove a generated-app runtime member.
params: app_id*, user_id*
get_app_security_auditRead recent server-side security audit events for an app.
params: app_id*, limit
compare_saved_versionsCompare two Saved Versions and return per-file additions, removals, modifications, and compact diffs.
params: app_id*, base_snapshot_id*, target_snapshot_id*, max_diff_chars
compare_current_to_versionCompare the current app files to a Saved Version and return compact per-file diffs.
params: app_id*, snapshot_id*, max_diff_chars
restore_file_from_versionRestore 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.
params: app_id*, snapshot_id*, path*, confirm*
create_entity_schemaCreate an entity schema file in entities/<Entity>.json. Creates a Saved Version before writing.
params: app_id*, entity*, schema*, relationships, indexes, metadata, overwrite
update_entity_schemaReplace or shallow-merge an existing entity schema file. Creates a Saved Version before writing.
params: app_id*, entity*, schema*, relationships, indexes, metadata, merge
validate_entity_relationshipsValidate entity relationship metadata and *_id references against existing entity schemas.
params: app_id*
update_entity_metadataSet relationship/index metadata on an entity schema. This stores metadata in the schema file; DB index creation is automatic where supported by the platform.
params: app_id*, entity*, relationships, indexes, metadata
list_secret_keysList secret key names for an app. Secret values are never returned.
params: app_id*
set_secretCreate or update one encrypted app secret. The secret value is never returned.
params: app_id*, key*, value*
delete_secretDelete one app secret by key.
params: app_id*, key*
list_integrationsList supported integrations and safe connected integration metadata for an app. Tokens/secrets are never returned.
params: app_id*
configure_integrationStore safe non-secret integration metadata for an app. Use set_secret for API keys/tokens.
params: app_id*, provider*, config*, is_active
list_ab_testsList the platform A/B tests configured for an app.
params: app_id*
create_ab_testCreate 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.
params: app_id*, name*, page_name*, variants*, goal_event_type, goal_event_filter, is_active
update_ab_testUpdate a native A/B test, including active state, variants, traffic, and conversion goal. Creates a Saved Version before the change.
params: app_id*, test_id*, name, page_name, variants, is_active, goal_event_type, goal_event_filter
delete_ab_testDelete a native A/B test from an app. Creates a Saved Version before the change.
params: app_id*, test_id*
get_ab_test_statsGet views, unique visitors, conversions, and conversion rates for an A/B test.
params: app_id*, test_id*
get_app_metadataRead the saved public HTML-shell identity: name, description, language and image URLs/dimensions. Same settings as Studio SEO/GEO.
params: app_id*
set_app_metadataUpdate public HTML-shell metadata immediately, without AI, code edits, publishing or Saved Versions. Upload social_image/icon as base64 PNG/JPEG/WebP (max 5 MB, 4096px); null clears an image. Language sets HTML lang/dir and OG locale. For per-page cards, write optional seo.json and publish it; dynamic entries may read only explicitly public entity records.
params: app_id*, name, description, language, social_image, icon, structured_data
preview_saved_versionPrepare an isolated read-only Saved Version preview, if enabled by the deployment. Returns compiled files for an offline sandbox, never restores files or reads live records. Never execute the returned program with host credentials. Requires app access and versions:read.
params: app_id*, snapshot_id*
set_agent_owner_relaySet the owner's consent for one owned agent to relay reports from another owned agent (or all sources with '*'). Uses the same preference as the agent screen. Does not send a message or grant access to customer conversations.
params: receiving_agent_id*, enabled*, source_agent_id
create_agentCreate 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_
params: name, role*, description*, persona, app_id
list_agentsList the AI agents on the user's account with id, name, role, status and FineMail address.
params: app_id
schedule_agent_taskCreate 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 fi
params: agent_id*, title*, instructions*, schedule*, max_runs, activate
list_agent_tasksList scheduled tasks for one agent (or the whole account), including schedule, status and next_run_at.
params: agent_id, status, limit
get_agent_whatsappRead 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.
params: agent_id
start_owner_phone_verificationSend 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.
params: phone*, region
confirm_owner_phone_verificationConfirm 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.
params: phone*, code*, region
attach_agent_whatsappConnect 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.
params: agent_id*, phone_number_id*
detach_agent_whatsappDisconnect the owner's WhatsApp route from a platform number. Removes only this account's route; other accounts sharing the number keep theirs.
params: phone_number_id*
list_agent_conversationsList recent visible conversations belonging to one of your agents. Use get_agent_conversation to read replies and results.
params: agent_id*, limit
send_agent_messageTalk to an existing agent or assign it work using its normal tools, memory, permissions and team. Omit conversation_id to start a new owner conversation; supply it to continue one. Returns acceptance and a durable task_id immediately, NOT a completed answer. Poll get_agent_task and read get_agent_conversation for the actual response. Work continues after MCP disconnects. A follow-up in a busy conv
params: agent_id*, message*, conversation_id
get_agent_conversationRead visible messages, answers and result links in an owned agent's conversation. Returns the newest page in chronological order. For older history, pass next_before_id as before_id. For new replies, omit before_id.
params: agent_id*, conversation_id*, limit, before_id
get_agent_taskCheck a durable task returned by send_agent_message or list_agent_tasks. Includes the latest execution status and pending approvals, including before a run starts. Task scheduling state is separate from run outcome. Read the conversation for the actual answer; accepted/queued is not completed. Approvals must still be decided by the owner in Fine Structure.
params: agent_id*, task_id*

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.