VEDUTUM
Floor plan to measured 3D model: rooms and areas, furnishing, roof, solar, site and share links.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"vedutum": {
"url": "https://www.vedutum.com/mcp"
}
}
}Remote endpoints
https://www.vedutum.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (19)
🟢vedutum_estimate_points(storeys, check_run, images_hd, images_2k, images_4k, ...)
Counts the points VEDUTUM needs for a job: reading a floor plan (per storey), an optional check run, images and 8-second videos in three quality levels (hd ≈ 1,024 px, praesentation ≈ 2,048 px, druck ≈ 4,096 px). Use when someone asks what a set of renderings or videos takes. Returns points only, with a breakdown; the 3D model, share page and exports need none.
Input Schema
{
"type": "object",
"properties": {
"storeys": {
"description": "Number of storeys to read from the floor plans, e.g. 2",
"type": "integer",
"minimum": 0,
"maximum": 20
},
"check_run": {
"description": "Also run the automatic check of each storey",
"type": "boolean"
},
"images_hd": {
"description": "Images in HD (draft)",
"type": "integer",
"minimum": 0,
"maximum": 200
},
"images_2k": {
"description": "Images in 2K (presentation)",
"type": "integer",
"minimum": 0,
"maximum": 200
},
"images_4k": {
"description": "Images in 4K (print)",
"type": "integer",
"minimum": 0,
"maximum": 200
},
"videos_hd": {
"description": "8-second videos in HD",
"type": "integer",
"minimum": 0,
"maximum": 50
},
"videos_2k": {
"description": "8-second videos in 2K",
"type": "integer",
"minimum": 0,
"maximum": 50
},
"videos_4k": {
"description": "8-second videos in 4K",
"type": "integer",
"minimum": 0,
"maximum": 50
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_sun_and_shadow(site, date, times, building_height_m, language)
Sun azimuth and elevation, shadow length per metre of building height and shadow direction for a building site on a given day and local times (Central European time), plus sunrise and sunset. Use for orientation, terrace or window planning and quick shadow questions. Looks the site up by town or address via OpenStreetMap. A study on flat ground without neighbouring buildings, not a legal shadow certificate.
Input Schema
{
"type": "object",
"properties": {
"site": {
"type": "string",
"minLength": 2,
"maxLength": 160,
"description": "Town, postcode or street address of the building site, e.g. \"8010 Graz\" or \"Lindenweg 7, Linz\""
},
"date": {
"type": "string",
"description": "Day as YYYY-MM-DD, e.g. \"2026-12-21\""
},
"times": {
"description": "Local times as HH:MM, e.g. [\"09:00\",\"12:00\",\"15:00\"]. Default 09:00, 12:00, 15:00, 18:00",
"maxItems": 12,
"type": "array",
"items": {
"type": "string"
}
},
"building_height_m": {
"description": "Height of the building or wall in metres, to give shadow lengths in metres",
"type": "number",
"minimum": 0,
"maximum": 300
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"site",
"date"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_check_floor_plan(file_type, size_mb, pages, scanned_or_photo, has_dimensions, ...)
Checks a floor plan file against VEDUTUM’s upload rules before anyone uploads it: file type, size, pages, scan or vector, scale, title block. Use when someone asks which format to export from CAD (Archicad, Revit, AutoCAD, Vectorworks) or whether a scan or photo of a plan works. Nothing is uploaded.
Input Schema
{
"type": "object",
"properties": {
"file_type": {
"type": "string",
"minLength": 1,
"maxLength": 10,
"description": "File extension, e.g. \"pdf\", \"jpg\", \"dwg\", \"ifc\""
},
"size_mb": {
"description": "File size in megabytes",
"type": "number",
"minimum": 0,
"maximum": 2000
},
"pages": {
"description": "Number of pages (PDF)",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"scanned_or_photo": {
"description": "True if the plan is a scan or a photo rather than a CAD export",
"type": "boolean"
},
"has_dimensions": {
"description": "True if the plan shows at least one dimension line or a scale bar",
"type": "boolean"
},
"title_block_with_names": {
"description": "True if a title block with names or an address is on the page",
"type": "boolean"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"file_type"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_print_resolution(width_cm, height_cm, dpi, long_edge_px, language)
Converts a print size (cm) and dpi, or a pixel width, into the pixels needed on the long edge and the fitting quality level, with the largest print each level allows at 300 and 150 dpi. Use for brochures, boards, site hoardings, websites.
Input Schema
{
"type": "object",
"properties": {
"width_cm": {
"description": "Print width in centimetres",
"type": "number",
"minimum": 0,
"maximum": 2000
},
"height_cm": {
"description": "Print height in centimetres",
"type": "number",
"minimum": 0,
"maximum": 2000
},
"dpi": {
"description": "Print resolution, default 300",
"type": "number",
"minimum": 30,
"maximum": 1200
},
"long_edge_px": {
"description": "Or: pixels needed on the long edge, e.g. 1920",
"type": "number",
"minimum": 0,
"maximum": 20000
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_search_knowledge(query, limit, language)
Searches VEDUTUM’s published articles, service pages and feature documentation (German or English) and returns titles, short answers and links. Use for questions about architectural visualisation: floor plan to 3D, rendering costs and resolutions, IFC and CAD formats, sign-off with clients, AI labelling of images.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "Search words, e.g. \"Grundriss in 3D umwandeln\" or \"rendering resolution print\""
},
"limit": {
"description": "Number of results, default 5",
"type": "integer",
"minimum": 1,
"maximum": 10
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_example_project(language)
Returns VEDUTUM’s examples: the share page a client receives (Villa Gündel, a public-domain plan from 1893), a step-by-step demo, and five pictures of the fictional study „Haus Lindenweg“ from plan to finished visualisation, with captions. Use when someone wants to see what the result looks like.
Input Schema
{
"type": "object",
"properties": {
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_get_started(language)
Returns the links to open an account or sign in and the four steps from floor plan to share page. Use when someone wants to try it with their own plan. Creates nothing.
Input Schema
{
"type": "object",
"properties": {
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_list_projects(status, limit, language)
Lists the projects in the connected VEDUTUM account with id, client, whether the floor plan has been read, last change, and the points left. Use first when the person talks about one of their projects, to find its id.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Which projects: \"active\" (default), \"archived\" or \"all\"",
"type": "string",
"enum": [
"active",
"archived",
"all"
]
},
"limit": {
"description": "Number of projects, default 20, newest change first",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_get_project(project_id, language)
Returns one project of the connected account: the state of each floor plan reading (also while it runs), storeys, rooms with their approximate areas, outline area per storey and in total, windows and doors, roof, facade and style, solar modules, surroundings, share link and approval, number of images, and the link into the app. Use after vedutum_read_floor_plan to see the result, and for questions about areas or rooms.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡vedutum_create_project(title, client_name, address, language)
Creates a new, empty project in the connected account, optionally with the client and the site address (looked up for sun and surroundings). Returns its id and the link where the floor plan can be uploaded. Costs no points.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Project name, e.g. \"Haus Berger\" or \"Wohnanlage Lindenweg\""
},
"client_name": {
"description": "Client or owner, optional",
"type": "string",
"maxLength": 120
},
"address": {
"description": "Site address, optional, e.g. \"Lindenweg 7, 8010 Graz\"",
"type": "string",
"maxLength": 200
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"title"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡vedutum_read_floor_plan(project_id, file_url, storey, label, hint, ...)
Loads a floor plan from a public https link (PDF, JPG, PNG or WebP, up to 15 MB, one storey per sheet) into a project of the connected account and starts reading walls, openings and rooms into a measured model. Costs 1 point per storey from the account, as in the app; refuses with the reason when points or the free month have run out. Reading runs one to three minutes; check the result with vedutum_get_project. For a file on the person’s computer, give them the upload link from vedutum_get_project instead.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"file_url": {
"type": "string",
"maxLength": 2000,
"format": "uri",
"description": "Direct https link to the plan file (not a preview page), e.g. a download link"
},
"storey": {
"description": "Which storey the sheet shows: 0 ground floor (default), 1 first floor, -1 basement",
"type": "integer",
"minimum": -1,
"maximum": 5
},
"label": {
"description": "Name of the sheet, e.g. \"EG 1:100\"",
"type": "string",
"maxLength": 120
},
"hint": {
"description": "Optional note for the reading, e.g. \"the overall width is 12.40 m\"",
"type": "string",
"maxLength": 300
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id",
"file_url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴vedutum_furnish_rooms(project_id, storey, room, mode, terraces, ...)
Places furniture in the rooms of a project’s model the way a planner would: by room type (living, kitchen, bedroom, bath, office, meeting…), clear of doors and windows, with 90 cm passages. One room by name or every room of a storey or of the house; "add" fills only empty rooms, "replace" furnishes anew. Changes the model; vedutum_undo_last_change takes it back. Costs no points.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"storey": {
"description": "Only this storey (0 = ground floor); default every read storey",
"type": "integer",
"minimum": 0,
"maximum": 5
},
"room": {
"description": "Only this room, by its name on the plan, e.g. \"Wohnen\" or \"Kind 1\"",
"type": "string",
"maxLength": 80
},
"mode": {
"description": "\"add\" (default) leaves furnished rooms as they are; \"replace\" removes their furniture first",
"type": "string",
"enum": [
"add",
"replace"
]
},
"terraces": {
"description": "Also set out the ground floor terraces (default true when furnishing a whole storey)",
"type": "boolean"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴vedutum_set_design(project_id, roof, facade, frame, style, ...)
Changes the design settings of a project’s model: roof shape, facade material, window frames, building style, roof covering, number and height of storeys, north direction. Only the values given change. The model and every later image use them. vedutum_undo_last_change goes back. Costs no points.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"roof": {
"description": "flat, gable (Satteldach) or shed (Pultdach)",
"type": "string",
"enum": [
"flat",
"gable",
"shed"
]
},
"facade": {
"description": "render (white), renderGrey, larch (light timber), larchDark, brick, brickLight, concrete, metal",
"type": "string",
"enum": [
"render",
"renderGrey",
"larch",
"larchDark",
"brick",
"brickLight",
"concrete",
"metal"
]
},
"frame": {
"description": "Window frames: anthracite, white, oak, bronze, black",
"type": "string",
"enum": [
"anthracite",
"white",
"oak",
"bronze",
"black"
]
},
"style": {
"description": "modern, klassisch, gruenderzeit, laendlich, alpin, mediterran, skandinavisch, bauhaus",
"type": "string",
"enum": [
"modern",
"klassisch",
"gruenderzeit",
"laendlich",
"alpin",
"mediterran",
"skandinavisch",
"bauhaus"
]
},
"roof_cover": {
"description": "standard (fits the style), tileRed, tileAnthracite, slate, metal, green; no effect on a flat roof except green",
"type": "string",
"enum": [
"standard",
"tileRed",
"tileAnthracite",
"slate",
"metal",
"green"
]
},
"storeys": {
"description": "Storeys above ground; storeys without their own plan repeat the ground floor",
"type": "integer",
"minimum": 1,
"maximum": 6
},
"storey_height": {
"description": "Storey height in metres, default 2.95",
"type": "number",
"minimum": 2.2,
"maximum": 5
},
"north_angle": {
"description": "Turn of the plan against north in degrees",
"type": "number",
"minimum": 0,
"maximum": 359
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴vedutum_add_solar(project_id, kind, flat_roof_layout, remove, language)
Lays out photovoltaic modules (or solar thermal collectors) on every roof face of the model that does not face north, with edge margins, as rows on racks on a flat roof; returns module count, area and rated power in kWp. Or removes them. Replaces an earlier layout on those faces; vedutum_undo_last_change goes back. A layout, not a yield forecast. Costs no points.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"kind": {
"description": "\"pv\" photovoltaics (default) or \"thermal\" collectors",
"type": "string",
"enum": [
"pv",
"thermal"
]
},
"flat_roof_layout": {
"description": "Flat roof only: racks facing south (default) or east-west",
"type": "string",
"enum": [
"south",
"eastWest"
]
},
"remove": {
"description": "True removes all modules instead",
"type": "boolean"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴vedutum_set_site_address(project_id, address, surroundings, language)
Sets the address of a project’s building site: looks it up on OpenStreetMap for sun position and shadows, and loads neighbouring buildings, roads and terrain around it into the model (OpenStreetMap, EU-DEM; takes about a minute, then visible in vedutum_get_project). Replaces the previous address; vedutum_undo_last_change goes back. Costs no points.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"address": {
"type": "string",
"minLength": 3,
"maxLength": 200,
"description": "Street address with postcode and town, e.g. \"Lindenweg 7, 8010 Graz\""
},
"surroundings": {
"description": "Also load neighbouring buildings and terrain (default true)",
"type": "boolean"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id",
"address"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪vedutum_share_link(project_id, language)
Returns the share link of a project (creating it the first time): the page where a client sees the model and the images, comments and approves, without an account. Also says how often it was opened and whether it was approved.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴vedutum_undo_last_change(project_id, language)
Restores a project to the state before the last change made with vedutum_furnish_rooms, vedutum_set_design, vedutum_add_solar or vedutum_set_site_address. One step; changes made in the app are not touched.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"project_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_view_model(project_id, language)
Shows a building model in 3D inside the conversation: turn it, look at single storeys or a cut-away view. Without project_id it shows VEDUTUM’s example house „Haus Lindenweg“ (no account needed); with project_id a project of the connected account. Returns a short summary for clients without the view.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢vedutum_model_geometry(project_id, language)
Returns the plan geometry (walls, openings, rooms, furniture, roof and facade settings) that the VEDUTUM 3D view draws. Used by the view itself.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 40
}
],
"description": "Project id, as vedutum_list_projects returns it"
},
"language": {
"description": "Language of the answer: \"de\" (German) or \"en\" (English). Default \"de\".",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence