{"serverId":"mcp-registry/com.getarbo/arbo","tools":[{"name":"bulk_create_nodes","fixed":{"name":"bulk_create_nodes","description":"Create multiple pages at once from a tree structure. Ideal for generating a full sitemap with zoning, entry points, CTAs and tags.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id","nodes"],"properties":{"nodes":{"type":"array","items":{"type":"object","required":["temp_id","parent_temp_id","label"],"properties":{"cta":{"type":"array","items":{"type":"string"},"description":"Call-to-action labels"},"seo":{"type":"object","properties":{"url":{"type":"string","description":"Page URL or path (e.g. '/services/audit-seo')"},"intent":{"enum":["informational","navigational","commercial","transactional"],"type":"string"},"status":{"enum":["keep","create","redirect","delete"],"type":"string","description":"keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)"},"volume":{"type":"number","description":"Monthly search volume of the main keyword"},"keyword":{"type":"string","description":"Main target keyword"},"redirectTo":{"type":"string","description":"Destination URL when status is 'redirect'"}},"description":"SEO data of the page: URL, target keyword, volume, intent, migration status"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags"},"type":{"type":"string"},"label":{"type":"string"},"notes":{"type":"string"},"temp_id":{"type":"string","description":"Temporary ID for referencing as parent (e.g. 'home', 'about')"},"priority":{"enum":["primary","secondary","utility"],"type":"string"},"rationale":{"type":"string"},"description":{"type":"string"},"entry_points":{"type":"array","items":{"type":"object","required":["type","label"],"properties":{"type":{"enum":["google","direct","nav","social","email","ads","qrcode"],"type":"string"},"label":{"type":"string"}}},"description":"Traffic sources"},"zoning_blocks":{"type":"array","items":{"type":"object","required":["id","label","skin","height"],"properties":{"id":{"type":"string"},"skin":{"type":"string","description":"nav, hero, breadcrumb, titre, contenu, sidebar, cards, grille, filtres, cta, double-cta, form, submit, arguments, social-proof, image, question, reponses, progression, nav-quiz, search-bar, resultats, pagination, footer, dots"},"label":{"type":"string"},"height":{"type":"number"}}},"description":"Wireframe zoning blocks"},"parent_temp_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Temp ID of the parent node. Null = root."},"zoning_expanded":{"type":"boolean"}}},"maxItems":500,"description":"Flat list of nodes with temp_id references for parent-child relationships (500 max)"},"project_id":{"type":"string","description":"The project ID"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":755,"tokensAfter":755},{"name":"create_node","fixed":{"name":"create_node","description":"Add a page to a project's sitemap. Use parent_id to create hierarchy. Supports rich data: zoning blocks (wireframe layout), entry points (traffic sources), CTAs, and tags.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id","label"],"properties":{"cta":{"type":"array","items":{"type":"string"},"description":"Call-to-action button labels (e.g. ['Acheter', 'En savoir plus'])"},"seo":{"type":"object","properties":{"url":{"type":"string","description":"Page URL or path (e.g. '/services/audit-seo')"},"intent":{"enum":["informational","navigational","commercial","transactional"],"type":"string"},"status":{"enum":["keep","create","redirect","delete"],"type":"string","description":"keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)"},"volume":{"type":"number","description":"Monthly search volume of the main keyword"},"keyword":{"type":"string","description":"Main target keyword"},"redirectTo":{"type":"string","description":"Destination URL when status is 'redirect'"}},"description":"SEO data of the page: URL, target keyword, volume, intent, migration status"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for categorization (e.g. ['SEO', 'conversion'])"},"type":{"type":"string","description":"Page type: home, listing, detail, form, landing, quiz, search, hub, error, legal"},"label":{"type":"string","description":"Page name (e.g. 'Accueil', 'Contact')"},"notes":{"type":"string","description":"Additional notes"},"priority":{"enum":["primary","secondary","utility"],"type":"string","description":"Page importance"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Parent node ID. Null = root page."},"rationale":{"type":"string","description":"Why this page exists (UX insight)"},"project_id":{"type":"string","description":"The project ID"},"description":{"type":"string","description":"Page description. Use real newlines for formatting. Supports long multiline content (SEO, copy, sections, CTAs, FAQ). No length limit."},"entry_points":{"type":"array","items":{"type":"object","required":["type","label"],"properties":{"type":{"enum":["google","direct","nav","social","email","ads","qrcode"],"type":"string"},"label":{"type":"string"}}},"description":"Traffic entry points for this page"},"zoning_blocks":{"type":"array","items":{"type":"object","required":["id","label","skin","height"],"properties":{"id":{"type":"string","description":"Unique block ID (e.g. 'z1')"},"skin":{"type":"string","description":"Block skin: nav, hero, breadcrumb, titre, contenu, sidebar, cards, grille, filtres, cta, double-cta, form, submit, arguments, social-proof, image, question, reponses, progression, nav-quiz, search-bar, resultats, pagination, footer, dots"},"label":{"type":"string","description":"Block label (e.g. 'Hero', 'Navigation')"},"height":{"type":"number","description":"Visual height in px (e.g. 18 for nav, 64 for hero, 60 for contenu)"}}},"description":"Wireframe zoning blocks (page layout structure)"},"zoning_expanded":{"type":"boolean","description":"If true, zoning is shown expanded by default on the canvas"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":897,"tokensAfter":897},{"name":"create_project","fixed":{"name":"create_project","description":"Create a new project. Returns the project ID. Add nodes with create_node after.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string","description":"Project name"},"accent":{"type":"string","description":"Accent color hex (e.g. #2563EB)"},"client":{"type":"string","description":"Client name"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":118,"tokensAfter":118},{"name":"delete_node","fixed":{"name":"delete_node","description":"Remove a page from the sitemap (soft delete, can be restored via version history)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id","node_id"],"properties":{"cascade":{"type":"boolean","description":"If true, also deletes all children. Default: false (children are reparented to grandparent)"},"node_id":{"type":"string","description":"The node ID to delete"},"project_id":{"type":"string","description":"The project ID"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":145,"tokensAfter":145},{"name":"get_change_list","fixed":{"name":"get_change_list","description":"Change list from the open review comments: deduplicated and classed (text, visual, structure), out-of-scope requests with a reply and an amendment line, and contradictions with decided points. Costs AI credits (quality model, 3 credits), paid by the token's account or the project owner. Requires write access.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id"],"properties":{"step":{"enum":["wireframe","mockup"],"type":"string","description":"Review step: wireframe or mockup"},"node_id":{"type":"string","description":"Only this page"},"project_id":{"type":"string","description":"The project ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":196,"tokensAfter":196},{"name":"get_project","fixed":{"name":"get_project","description":"Get a project with its full sitemap tree","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id"],"properties":{"project_id":{"type":"string","description":"The project ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"get_review","fixed":{"name":"get_review","description":"Review of a project: per page, the status and version of each step (wireframe, mockup), and the latest Figma link per breakpoint","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id"],"properties":{"project_id":{"type":"string","description":"The project ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":99,"tokensAfter":99},{"name":"list_projects","fixed":{"name":"list_projects","description":"List all projects accessible with this token","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":52,"tokensAfter":52},{"name":"list_review_comments","fixed":{"name":"list_review_comments","description":"Comments left in the review (wireframe or mockup), pinned on a version and a breakpoint. Set open_only true to get only the unresolved ones.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id"],"properties":{"step":{"enum":["wireframe","mockup"],"type":"string","description":"Review step: wireframe or mockup"},"node_id":{"type":"string","description":"Only the comments of this page"},"open_only":{"type":"boolean","description":"Only unresolved comments"},"project_id":{"type":"string","description":"The project ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"set_comment_resolved","fixed":{"name":"set_comment_resolved","description":"Mark a review comment resolved or open again. Same rights as the other write tools (write:nodes, owner or editor).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id","comment_id","resolved"],"properties":{"resolved":{"type":"boolean","description":"true to resolve, false to reopen"},"comment_id":{"type":"string","description":"The comment ID (from list_review_comments)"},"project_id":{"type":"string","description":"The project ID"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":151,"tokensAfter":151},{"name":"update_node","fixed":{"name":"update_node","description":"Update a page's properties. For the description field: use real newlines (not literal \\n). Supports rich multiline content: SEO notes, copy, sections, CTAs, FAQ, maillage, etc. No length limit. You can also set zoning_html (full wireframe HTML) and annotations (contextual notes per wireframe section).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["project_id","node_id"],"properties":{"seo":{"type":"object","properties":{"url":{"type":"string","description":"Page URL or path (e.g. '/services/audit-seo')"},"intent":{"enum":["informational","navigational","commercial","transactional"],"type":"string"},"status":{"enum":["keep","create","redirect","delete"],"type":"string","description":"keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)"},"volume":{"type":"number","description":"Monthly search volume of the main keyword"},"keyword":{"type":"string","description":"Main target keyword"},"redirectTo":{"type":"string","description":"Destination URL when status is 'redirect'"}},"description":"SEO data. Fields sent are merged into the existing SEO block."},"type":{"type":"string","description":"New page type"},"label":{"type":"string","description":"New page name"},"notes":{"type":"string"},"node_id":{"type":"string","description":"The node ID to update"},"priority":{"enum":["primary","secondary","utility"],"type":"string"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Move to new parent"},"rationale":{"type":"string"},"project_id":{"type":"string","description":"The project ID"},"annotations":{"type":"array","items":{"type":"object","required":["id","section","tag","title","body"],"properties":{"id":{"type":"string","description":"Unique annotation ID (e.g. 'ann_1')"},"tag":{"enum":["UX","COPY","SEO","DEV","DESIGN","A11Y","PERF","TODO"],"type":"string","description":"Annotation category"},"body":{"type":"string","description":"Detailed annotation content"},"title":{"type":"string","description":"Short annotation title"},"section":{"type":"string","description":"Section name in the wireframe this annotation refers to (e.g. 'Hero', 'Navigation')"}}},"description":"Contextual annotations for wireframe sections. These appear as a sidebar alongside the wireframe preview."},"description":{"type":"string","description":"Page description. Use real newlines for formatting. Supports long multiline content (SEO, copy, sections, CTAs, FAQ). No length limit."},"zoning_html":{"type":"string","description":"Full wireframe HTML (lo-fi, inline CSS, standalone). Replaces the current wireframe for this page."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":749,"tokensAfter":749}],"toolsChanged":11,"tokensSaved":0,"todo":[{"tool":"update_node","params":["notes","priority","rationale"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}