{"ok":true,"name":"update_project_metadata","description":"Update project settings (current values appear at the top of list_files). Keys: title (2-100 chars), description, iconUrl (the app's icon/logo: favicon, home-screen icon and native app icon — a /_cdn/static/… path from upload_asset, generate_image or request_user_upload, or an absolute https URL; null resets), splashUrl (native splash screen, same value forms), mobileAppId, enableSSR (boolean), flootAiDisallowed (boolean — true opts the project out of @floot/ai), and iOS Info.plist purpose strin","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["projectId"],"properties":{"updates":{"type":"object","description":"Flat metadata fields (see the tool description).","additionalProperties":{"type":["string","boolean","null"]}},"projectId":{"type":"string"},"shareTarget":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"},"mimeTypes":{"type":"array","items":{"type":"string"},"description":"MIME patterns to accept, e.g. [\"image/*\",\"video/*\"] (default). Allowed: image/*, video/*, audio/*, text/plain, application/pdf."},"allowMultiple":{"type":"boolean","description":"Also accept multi-select shares. Default true."}},"description":"Share-sheet target config (iOS Share Extension + Android share sheet). Omit to leave unchanged; { enabled: false } removes it.","additionalProperties":false},"analyticsMode":{"enum":["storage","memory","off"],"type":"string","description":"Built-in visitor analytics mode for the published app: 'storage' (default, session id in localStorage — needs a consent banner for EU/UK visitors), 'memory' (nothing stored on the device, no consent needed) or 'off' (no analytics). Omit to leave unchanged."},"routePrefetch":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["auto","all","viewport","intent","off"],"type":"string"},"skipAutomation":{"type":"boolean"}},"additionalProperties":false},{"type":"null"}],"description":"Published app's page-code prefetching: { mode?: 'auto' | 'all' | 'viewport' | 'intent' | 'off', skipAutomation?: boolean }, merged over the current value; null restores the default. Omit to leave unchanged."},"serverMemoryMb":{"anyOf":[{"anyOf":[{"type":"integer"},{"type":"string"}]},{"type":"null"}],"description":"Memory (MB) of the project's server Lambda, 512–4096. EXPERT SETTING: only on an explicit user request to change the server memory (see the tool description for the risks); never touch it otherwise. Omit to leave unchanged; null restores the platform default."},"iosDeviceFamily":{"enum":["iphone-and-ipad","iphone"],"type":"string","description":"Devices the native iOS app is built for: 'iphone-and-ipad' (default) or 'iphone' (iPhone only). Not possible for an app already released on the App Store with iPad support. Omit to leave unchanged."},"securityHeaders":{"anyOf":[{"type":"object","properties":{"csp":{"anyOf":[{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},{"type":"null"}],"description":"Directive -> its COMPLETE source list, replacing the platform's for that directive, e.g. { \"form-action\": [\"'self'\"] }. A directive set to null goes back to the platform's; directives left out are kept."},"embedding":{"anyOf":[{"anyOf":[{"enum":["anyone","self","none"],"type":"string"},{"type":"array","items":{"type":"string"}}]},{"type":"null"}],"description":"'anyone' (default), 'self', 'none', or a list of https origins (own origin always included)."},"cspReportOnly":{"type":["boolean","null"],"description":"true: send `csp` as Content-Security-Policy-Report-Only (nothing blocked) to try it on the published app first."},"referrerPolicy":{"anyOf":[{"enum":["no-referrer","no-referrer-when-downgrade","origin","origin-when-cross-origin","same-origin","strict-origin","strict-origin-when-cross-origin","unsafe-url"],"type":"string"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"The published app's own page headers. Omit to leave unchanged; null restores the platform defaults. Fields: embedding ('anyone' | 'self' | 'none' | list of https origins), csp ({ directive: [complete source list] } replacing the platform's for that directive; a directive set to null goes back to the platform's), cspReportOnly (boolean), referrerPolicy. A field passed as null is removed; a field left out is kept."},"nativeSystemBars":{"type":"object","required":["mode"],"properties":{"ios":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["inset","edge-to-edge"],"type":"string"},"color":{"type":"string"},"iconStyle":{"enum":["light","dark"],"type":"string"}},"additionalProperties":false},{"type":"null"}],"description":"iOS-only override of mode/color/iconStyle. Unset fields come from the top level."},"mode":{"enum":["inset","edge-to-edge"],"type":"string"},"color":{"type":"string","description":"Inset mode only: #rrggbb paint of the strips under the bars. Default #000000."},"android":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["inset","edge-to-edge"],"type":"string"},"color":{"type":"string"},"iconStyle":{"enum":["light","dark"],"type":"string"}},"additionalProperties":false},{"type":"null"}],"description":"Android-only override of mode/color/iconStyle (e.g. { mode: 'inset' } while iOS is edge-to-edge). Unset fields come from the top level."},"iconStyle":{"enum":["light","dark"],"type":"string","description":"Color of the bar ICONS. Inset: defaults to contrast with `color`. Edge-to-edge: defaults to 'dark'."}},"description":"Native system-bars config, replaced whole. Omit to leave unchanged; { mode: 'inset' } with no color restores the default. Runtime strip color (dark theme): see get_guides(\"native-system-bars\").","additionalProperties":false}},"additionalProperties":false},"serverUrl":"https://mcp.floot.com/mcp","transport":"http","handshake":"ok","host":"floot.com","score":38,"grade":"D","auth":"oauth","lastScannedAt":"2026-10-30T13:09:37.977Z","stale":false,"permalink":"https://agentboardai.app/mcp/floot.com/update_project_metadata","page":"https://agentboardai.app/site/floot.com"}