Server definition
- Hash
- sha256:b8fa79bab953542f123df7a26e98570a1d7de473dc7e14243f1ffbc387d2f170
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Create multiple pages at once from a tree structure. Ideal for generating a full sitemap with zoning, entry points, CTAs and tags.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"nodes": {
"description": "Flat list of nodes with temp_id references for parent-child relationships (500 max)",
"items": {
"properties": {
"cta": {
"description": "Call-to-action labels",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"type": "string"
},
"entry_points": {
"description": "Traffic sources",
"items": {
"properties": {
"label": {
"type": "string"
},
"type": {
"enum": [
"google",
"direct",
"nav",
"social",
"email",
"ads",
"qrcode"
],
"type": "string"
}
},
"required": [
"type",
"label"
],
"type": "object"
},
"type": "array"
},
"label": {
"type": "string"
},
"notes": {
"type": "string"
},
"parent_temp_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Temp ID of the parent node. Null = root."
},
"priority": {
"enum": [
"primary",
"secondary",
"utility"
],
"type": "string"
},
"rationale": {
"type": "string"
},
"seo": {
"description": "SEO data of the page: URL, target keyword, volume, intent, migration status",
"properties": {
"intent": {
"enum": [
"informational",
"navigational",
"commercial",
"transactional"
],
"type": "string"
},
"keyword": {
"description": "Main target keyword",
"type": "string"
},
"redirectTo": {
"description": "Destination URL when status is 'redirect'",
"type": "string"
},
"status": {
"description": "keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)",
"enum": [
"keep",
"create",
"redirect",
"delete"
],
"type": "string"
},
"url": {
"description": "Page URL or path (e.g. '/services/audit-seo')",
"type": "string"
},
"volume": {
"description": "Monthly search volume of the main keyword",
"type": "number"
}
},
"type": "object"
},
"tags": {
"description": "Tags",
"items": {
"type": "string"
},
"type": "array"
},
"temp_id": {
"description": "Temporary ID for referencing as parent (e.g. 'home', 'about')",
"type": "string"
},
"type": {
"type": "string"
},
"zoning_blocks": {
"description": "Wireframe zoning blocks",
"items": {
"properties": {
"height": {
"type": "number"
},
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"skin": {
"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",
"type": "string"
}
},
"required": [
"id",
"label",
"skin",
"height"
],
"type": "object"
},
"type": "array"
},
"zoning_expanded": {
"type": "boolean"
}
},
"required": [
"temp_id",
"parent_temp_id",
"label"
],
"type": "object"
},
"maxItems": 500,
"type": "array"
},
"project_id": {
"description": "The project ID",
"type": "string"
}
},
"required": [
"project_id",
"nodes"
],
"type": "object"
},
"name": "bulk_create_nodes",
"outputSchema": null
},
{
"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": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cta": {
"description": "Call-to-action button labels (e.g. ['Acheter', 'En savoir plus'])",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"description": "Page description. Use real newlines for formatting. Supports long multiline content (SEO, copy, sections, CTAs, FAQ). No length limit.",
"type": "string"
},
"entry_points": {
"description": "Traffic entry points for this page",
"items": {
"properties": {
"label": {
"type": "string"
},
"type": {
"enum": [
"google",
"direct",
"nav",
"social",
"email",
"ads",
"qrcode"
],
"type": "string"
}
},
"required": [
"type",
"label"
],
"type": "object"
},
"type": "array"
},
"label": {
"description": "Page name (e.g. 'Accueil', 'Contact')",
"type": "string"
},
"notes": {
"description": "Additional notes",
"type": "string"
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Parent node ID. Null = root page."
},
"priority": {
"description": "Page importance",
"enum": [
"primary",
"secondary",
"utility"
],
"type": "string"
},
"project_id": {
"description": "The project ID",
"type": "string"
},
"rationale": {
"description": "Why this page exists (UX insight)",
"type": "string"
},
"seo": {
"description": "SEO data of the page: URL, target keyword, volume, intent, migration status",
"properties": {
"intent": {
"enum": [
"informational",
"navigational",
"commercial",
"transactional"
],
"type": "string"
},
"keyword": {
"description": "Main target keyword",
"type": "string"
},
"redirectTo": {
"description": "Destination URL when status is 'redirect'",
"type": "string"
},
"status": {
"description": "keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)",
"enum": [
"keep",
"create",
"redirect",
"delete"
],
"type": "string"
},
"url": {
"description": "Page URL or path (e.g. '/services/audit-seo')",
"type": "string"
},
"volume": {
"description": "Monthly search volume of the main keyword",
"type": "number"
}
},
"type": "object"
},
"tags": {
"description": "Tags for categorization (e.g. ['SEO', 'conversion'])",
"items": {
"type": "string"
},
"type": "array"
},
"type": {
"description": "Page type: home, listing, detail, form, landing, quiz, search, hub, error, legal",
"type": "string"
},
"zoning_blocks": {
"description": "Wireframe zoning blocks (page layout structure)",
"items": {
"properties": {
"height": {
"description": "Visual height in px (e.g. 18 for nav, 64 for hero, 60 for contenu)",
"type": "number"
},
"id": {
"description": "Unique block ID (e.g. 'z1')",
"type": "string"
},
"label": {
"description": "Block label (e.g. 'Hero', 'Navigation')",
"type": "string"
},
"skin": {
"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",
"type": "string"
}
},
"required": [
"id",
"label",
"skin",
"height"
],
"type": "object"
},
"type": "array"
},
"zoning_expanded": {
"description": "If true, zoning is shown expanded by default on the canvas",
"type": "boolean"
}
},
"required": [
"project_id",
"label"
],
"type": "object"
},
"name": "create_node",
"outputSchema": null
},
{
"description": "Create a new project. Returns the project ID. Add nodes with create_node after.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"accent": {
"description": "Accent color hex (e.g. #2563EB)",
"type": "string"
},
"client": {
"description": "Client name",
"type": "string"
},
"name": {
"description": "Project name",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_project",
"outputSchema": null
},
{
"description": "Remove a page from the sitemap (soft delete, can be restored via version history)",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cascade": {
"description": "If true, also deletes all children. Default: false (children are reparented to grandparent)",
"type": "boolean"
},
"node_id": {
"description": "The node ID to delete",
"type": "string"
},
"project_id": {
"description": "The project ID",
"type": "string"
}
},
"required": [
"project_id",
"node_id"
],
"type": "object"
},
"name": "delete_node",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"node_id": {
"description": "The node ID to generate wireframe for",
"type": "string"
},
"project_id": {
"description": "The project ID",
"type": "string"
}
},
"required": [
"project_id",
"node_id"
],
"type": "object"
},
"name": "generate_wireframe",
"outputSchema": null
},
{
"description": "Get a project with its full sitemap tree",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"project_id": {
"description": "The project ID",
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "get_project",
"outputSchema": null
},
{
"description": "List all projects accessible with this token",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_projects",
"outputSchema": null
},
{
"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": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"annotations": {
"description": "Contextual annotations for wireframe sections. These appear as a sidebar alongside the wireframe preview.",
"items": {
"properties": {
"body": {
"description": "Detailed annotation content",
"type": "string"
},
"id": {
"description": "Unique annotation ID (e.g. 'ann_1')",
"type": "string"
},
"section": {
"description": "Section name in the wireframe this annotation refers to (e.g. 'Hero', 'Navigation')",
"type": "string"
},
"tag": {
"description": "Annotation category",
"enum": [
"UX",
"COPY",
"SEO",
"DEV",
"DESIGN",
"A11Y",
"PERF",
"TODO"
],
"type": "string"
},
"title": {
"description": "Short annotation title",
"type": "string"
}
},
"required": [
"id",
"section",
"tag",
"title",
"body"
],
"type": "object"
},
"type": "array"
},
"description": {
"description": "Page description. Use real newlines for formatting. Supports long multiline content (SEO, copy, sections, CTAs, FAQ). No length limit.",
"type": "string"
},
"label": {
"description": "New page name",
"type": "string"
},
"node_id": {
"description": "The node ID to update",
"type": "string"
},
"notes": {
"type": "string"
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Move to new parent"
},
"priority": {
"enum": [
"primary",
"secondary",
"utility"
],
"type": "string"
},
"project_id": {
"description": "The project ID",
"type": "string"
},
"rationale": {
"type": "string"
},
"seo": {
"description": "SEO data. Fields sent are merged into the existing SEO block.",
"properties": {
"intent": {
"enum": [
"informational",
"navigational",
"commercial",
"transactional"
],
"type": "string"
},
"keyword": {
"description": "Main target keyword",
"type": "string"
},
"redirectTo": {
"description": "Destination URL when status is 'redirect'",
"type": "string"
},
"status": {
"description": "keep = existing page kept, create = new page, redirect = 301 to redirect_to, delete = removed (410)",
"enum": [
"keep",
"create",
"redirect",
"delete"
],
"type": "string"
},
"url": {
"description": "Page URL or path (e.g. '/services/audit-seo')",
"type": "string"
},
"volume": {
"description": "Monthly search volume of the main keyword",
"type": "number"
}
},
"type": "object"
},
"type": {
"description": "New page type",
"type": "string"
},
"zoning_html": {
"description": "Full wireframe HTML (lo-fi, inline CSS, standalone). Replaces the current wireframe for this page.",
"type": "string"
}
},
"required": [
"project_id",
"node_id"
],
"type": "object"
},
"name": "update_node",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:b8fa79bab953542f123df7a26e98570a1d7de473dc7e14243f1ffbc387d2f170 | sha256sum