Arbo
SEO site architecture. Page trees with URL, keyword, status, keyword map and redirect plan exports.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"arbo": {
"url": "https://getarbo.com/api/mcp"
}
}
}Puntos de conexión remotos
https://getarbo.com/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (8)
🟢list_projects
List all projects accessible with this token
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_project(project_id)
Get a project with its full sitemap tree
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "The project ID"
}
},
"required": [
"project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_project(name, client, accent)
Create a new project. Returns the project ID. Add nodes with create_node after.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Project name"
},
"client": {
"description": "Client name",
"type": "string"
},
"accent": {
"description": "Accent color hex (e.g. #2563EB)",
"type": "string"
}
},
"required": [
"name"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_node(project_id, label, type, priority, 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.
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "The project ID"
},
"label": {
"type": "string",
"description": "Page name (e.g. 'Accueil', 'Contact')"
},
"type": {
"description": "Page type: home, listing, detail, form, landing, quiz, search, hub, error, legal",
"type": "string"
},
"priority": {
"description": "Page importance",
"type": "string",
"enum": [
"primary",
"secondary",
"utility"
]
},
"description": {
"description": "Page description. Use real newlines for formatting. Supports long multiline content (SEO, copy, sections, CTAs, FAQ). No length limit.",
"type": "string"
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Parent node ID. Null = root page."
},
"rationale": {
"description": "Why this page exists (UX insight)",
"type": "string"
},
"notes": {
"description": "Additional notes",
"type": "string"
},
"cta": {
"description": "Call-to-action button labels (e.g. ['Acheter', 'En savoir plus'])",
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"description": "Tags for categorization (e.g. ['SEO', 'conversion'])",
"type": "array",
"items": {
"type": "string"
}
},
"entry_points": {
"description": "Traffic entry points for this page",
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"google",
"direct",
"nav",
"social",
"email",
"ads",
"qrcode"
]
},
"label": {
"type": "string"
}
},
"required": [
"type",
"label"
]
}
},
"zoning_blocks": {
"description": "Wireframe zoning blocks (page layout structure)",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique block ID (e.g. 'z1')"
},
"label": {
"type": "string",
"description": "Block label (e.g. 'Hero', 'Navigation')"
},
"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"
},
"height": {
"type": "number",
"description": "Visual height in px (e.g. 18 for nav, 64 for hero, 60 for contenu)"
}
},
"required": [
"id",
"label",
"skin",
"height"
]
}
},
"zoning_expanded": {
"description": "If true, zoning is shown expanded by default on the canvas",
"type": "boolean"
},
"seo": {
"description": "SEO data of the page: URL, target keyword, volume, intent, migration status",
"type": "object",
"properties": {
"url": {
"description": "Page URL or path (e.g. '/services/audit-seo')",
"type": "string"
},
"keyword": {
"description": "Main target keyword",
"type": "string"
},
"volume": {
"description": "Monthly search volume of the main keyword",
"type": "number"
},
"intent": {
"type": "string",
"enum": [
"informational",
"navigational",
"commercial",
"transactional"
]
},
"status": {
"description": "keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)",
"type": "string",
"enum": [
"keep",
"create",
"redirect",
"delete"
]
},
"redirectTo": {
"description": "Destination URL when status is 'redirect'",
"type": "string"
}
}
}
},
"required": [
"project_id",
"label"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡update_node(project_id, node_id, label, type, priority, ...)
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).
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "The project ID"
},
"node_id": {
"type": "string",
"description": "The node ID to update"
},
"label": {
"description": "New page name",
"type": "string"
},
"type": {
"description": "New page type",
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"primary",
"secondary",
"utility"
]
},
"description": {
"description": "Page description. Use real newlines for formatting. Supports long multiline content (SEO, copy, sections, CTAs, FAQ). No length limit.",
"type": "string"
},
"rationale": {
"type": "string"
},
"notes": {
"type": "string"
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Move to new parent"
},
"zoning_html": {
"description": "Full wireframe HTML (lo-fi, inline CSS, standalone). Replaces the current wireframe for this page.",
"type": "string"
},
"annotations": {
"description": "Contextual annotations for wireframe sections. These appear as a sidebar alongside the wireframe preview.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique annotation ID (e.g. 'ann_1')"
},
"section": {
"type": "string",
"description": "Section name in the wireframe this annotation refers to (e.g. 'Hero', 'Navigation')"
},
"tag": {
"type": "string",
"enum": [
"UX",
"COPY",
"SEO",
"DEV",
"DESIGN",
"A11Y",
"PERF",
"TODO"
],
"description": "Annotation category"
},
"title": {
"type": "string",
"description": "Short annotation title"
},
"body": {
"type": "string",
"description": "Detailed annotation content"
}
},
"required": [
"id",
"section",
"tag",
"title",
"body"
]
}
},
"seo": {
"description": "SEO data. Fields sent are merged into the existing SEO block.",
"type": "object",
"properties": {
"url": {
"description": "Page URL or path (e.g. '/services/audit-seo')",
"type": "string"
},
"keyword": {
"description": "Main target keyword",
"type": "string"
},
"volume": {
"description": "Monthly search volume of the main keyword",
"type": "number"
},
"intent": {
"type": "string",
"enum": [
"informational",
"navigational",
"commercial",
"transactional"
]
},
"status": {
"description": "keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)",
"type": "string",
"enum": [
"keep",
"create",
"redirect",
"delete"
]
},
"redirectTo": {
"description": "Destination URL when status is 'redirect'",
"type": "string"
}
}
}
},
"required": [
"project_id",
"node_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪generate_wireframe(project_id, node_id)
Generate a lo-fi wireframe HTML for a page using AI. The wireframe is saved to the node's zoningHtml field. Requires zoning blocks to be defined on the node. Costs 1 AI credit (or uses BYOK key). Returns the generated HTML.
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "The project ID"
},
"node_id": {
"type": "string",
"description": "The node ID to generate wireframe for"
}
},
"required": [
"project_id",
"node_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴delete_node(project_id, node_id, cascade)
Remove a page from the sitemap (soft delete, can be restored via version history)
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "The project ID"
},
"node_id": {
"type": "string",
"description": "The node ID to delete"
},
"cascade": {
"description": "If true, also deletes all children. Default: false (children are reparented to grandparent)",
"type": "boolean"
}
},
"required": [
"project_id",
"node_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡bulk_create_nodes(project_id, nodes)
Create multiple pages at once from a tree structure. Ideal for generating a full sitemap with zoning, entry points, CTAs and tags.
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "The project ID"
},
"nodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"temp_id": {
"type": "string",
"description": "Temporary ID for referencing as parent (e.g. 'home', 'about')"
},
"parent_temp_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Temp ID of the parent node. Null = root."
},
"label": {
"type": "string"
},
"type": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"primary",
"secondary",
"utility"
]
},
"description": {
"type": "string"
},
"rationale": {
"type": "string"
},
"notes": {
"type": "string"
},
"cta": {
"description": "Call-to-action labels",
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"description": "Tags",
"type": "array",
"items": {
"type": "string"
}
},
"entry_points": {
"description": "Traffic sources",
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"google",
"direct",
"nav",
"social",
"email",
"ads",
"qrcode"
]
},
"label": {
"type": "string"
}
},
"required": [
"type",
"label"
]
}
},
"zoning_blocks": {
"description": "Wireframe zoning blocks",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"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"
},
"height": {
"type": "number"
}
},
"required": [
"id",
"label",
"skin",
"height"
]
}
},
"zoning_expanded": {
"type": "boolean"
},
"seo": {
"description": "SEO data of the page: URL, target keyword, volume, intent, migration status",
"type": "object",
"properties": {
"url": {
"description": "Page URL or path (e.g. '/services/audit-seo')",
"type": "string"
},
"keyword": {
"description": "Main target keyword",
"type": "string"
},
"volume": {
"description": "Monthly search volume of the main keyword",
"type": "number"
},
"intent": {
"type": "string",
"enum": [
"informational",
"navigational",
"commercial",
"transactional"
]
},
"status": {
"description": "keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)",
"type": "string",
"enum": [
"keep",
"create",
"redirect",
"delete"
]
},
"redirectTo": {
"description": "Destination URL when status is 'redirect'",
"type": "string"
}
}
}
},
"required": [
"temp_id",
"parent_temp_id",
"label"
]
},
"description": "Flat list of nodes with temp_id references for parent-child relationships"
}
},
"required": [
"project_id",
"nodes"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia