Pedra MCP Server
OfficialPedra MCP server exposes Pedra's AI real-estate media tools: photo editing, video creation/editing, virtual tours, property/photo management, and account actions.
Edit/stage photos: enhance, enhance+correct perspective, empty room, furnish/virtual staging, renovate, edit via prompt, replace sky, remove object via mask, blur objects.
Create property videos from images, edit existing videos without re-rendering unchanged clips, and add music, voiceover, subtitles, branding, and text.
Generate voiceover scripts from photos and render voiceover audio; list music tracks and available narration voices/languages.
Manage properties and photos: list properties/images, create properties, add photos by URL, upload local 360° photos, create no-login upload links (24h).
Build hosted 360° virtual tours: create tours, poll/get tour status, list tours, update in place (rename/reorder/remove/re-link/restyle), and add rooms.
Account/usage: read plan and credits, submit feedback with optional credit-back, and request/check API access without a key.
Use local files directly as image inputs via absolute paths, plus data: URIs and public https URLs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Pedra MCP Server How many Pedra credits do I have left?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Pedra MCP Server
Official Model Context Protocol server for the Pedra API — use Pedra's AI real-estate photo editing (virtual staging, renovation, room emptying, enhancement, sky replacement, object removal/blur, property videos, and hosted 360° virtual tours) directly from Claude, ChatGPT, Cursor, and any other MCP client.
It exposes one tool per API endpoint. Each photo and video tool is a single blocking call that returns the final asset URL(s) — there are no job IDs to poll. Virtual tours build in the background: pedra_create_virtual_tour returns a tourId, and pedra_get_virtual_tour is polled until it's ready.
Quick start
The server reads your Pedra API key (Settings in your Pedra account) from the PEDRA_API_KEY environment variable. No account yet? Start it without a key — see No Pedra account yet?.
The server runs over stdio and is published to npm, so most clients just run it with npx — no global install needed.
Claude Desktop (one-click)
Download the latest pedra-mcp.mcpb from Releases and double-click it (or drag it into Claude Desktop → Settings → Extensions). Claude installs the bundled server and prompts for your PEDRA_API_KEY — no JSON editing.
Claude Desktop (manual)
Or add this to your claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"pedra": {
"command": "npx",
"args": ["-y", "@pedra-ai/mcp"],
"env": { "PEDRA_API_KEY": "your-api-key" }
}
}
}Cursor
In ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"pedra": {
"command": "npx",
"args": ["-y", "@pedra-ai/mcp"],
"env": { "PEDRA_API_KEY": "your-api-key" }
}
}
}Any MCP client
Run the binary directly with the key in the environment:
PEDRA_API_KEY=your-api-key npx -y @pedra-ai/mcpOr install it:
npm install -g @pedra-ai/mcp
PEDRA_API_KEY=your-api-key pedra-mcpSmithery
You can also install and configure Pedra automatically via Smithery:
npx -y @smithery/cli install @pedra-ai/mcp --client claude(swap claude for cursor, windsurf, etc.) Smithery prompts for your PEDRA_API_KEY and writes the client config for you.
No Pedra account yet?
Start the server without PEDRA_API_KEY, for example in Claude Code:
claude mcp add pedra -- npx -y @pedra-ai/mcpThen just ask for something ("stage this photo with Pedra"). Without a key the server adds two tools, and the assistant does the rest:
pedra_request_accesswith your email. Pedra emails you a link (valid 30 minutes): a new account chooses a password there, an existing one clicks Allow. Nothing is created until you click, and you can decline.pedra_check_accessuntil you've confirmed. Once approved, every Pedra tool works for the rest of the session. The key is kept in memory only, never written to disk; the tool result shows it along with how to keep it: add it asPEDRA_API_KEYto the server'senv(e.g.claude mcp add pedra -e PEDRA_API_KEY=<key> -- npx -y @pedra-ai/mcp, or paste it into the extension's settings in Claude Desktop).
Until then, the other tools answer "No API key yet: call pedra_request_access with the user's email". Inbox confirmation is required, disposable email domains are refused, and requests are rate-limited. New accounts start with Pedra's free trial credits.
(In ChatGPT and claude.ai, use Pedra's hosted connector instead: connecting it runs a sign-in where new users can create an account.)
Related MCP server: Rendobar MCP Server
Tools
The nine image-editing tools (enhance through blur) also take propertyId, to save the result into that property's gallery, and name, to save the original photo there under that name in the same call. The result then includes source (imageId, name) of the original. preserveAspectRatio returns the result at the input's exact size.
Tool | Endpoint | What it does |
|
| Improve lighting, color, sharpness |
|
| Enhance + straighten perspective |
|
| Remove all furniture/objects |
|
| Virtually stage a room |
|
| Renovate walls/floors/finishes |
|
| Edit from a natural-language prompt |
|
| Replace a dull sky with clear blue |
|
| Remove an object using a mask |
|
| Blur faces, license plates, etc. |
|
| Render a property video from images |
|
| Edit a video without re-rendering unchanged clips |
|
| Write a voiceover script from property photos |
|
| Turn a script into a voiceover audio track |
|
| List background-music tracks, voice languages + narration voices |
|
| List the account's properties |
|
| List a property's photos (or, with |
|
| Create a property |
|
| Add photos (or, with |
|
| Local only: upload 360° photo files from this computer into a property |
|
| No-login page to upload photos or 360° photos from a phone or computer ( |
|
| Build a hosted 360° virtual tour (AI names and links the rooms) |
|
| Tour status, share link, embed code, scenes, links |
|
| List the account's virtual tours |
|
| Rename, reorder, remove rooms, re-link, restyle (free) |
|
| Add rooms to the end of a tour |
|
| Read plan + remaining credits |
|
| Thumbs up/down + optional credit-back |
|
| Only without an API key: email the user a link to create/allow their account |
|
| Only without an API key: check the request; once approved, every tool works for the session |
Most image tools take an imageUrl plus a few optional parameters; see each tool's input schema in your MCP client. The imageUrl (and maskUrl, and each create_video frame) accepts any of:
a public
https://URL,a
data:URI, oran absolute path to a local image file — the server reads it off disk and inlines it as base64 for you, so you can point a tool at a file you just dragged in without hosting it first (
.jpg,.jpeg,.png,.webp,.gif,.bmp,.tif/.tiff,.heic/.heif,.avif; up to 40 MB).
Note: an image pasted into the chat is not a file path, so it can't be forwarded to the tool — drag in a file, or save the paste and pass its path. Photos on the user's phone go through
pedra_create_upload_link: they upload on a no-login page (up to 100 files, 24 h), thenpedra_list_property_imagesreturns their URLs for editing,pedra_create_videoorpedra_create_virtual_tour.
Uploads are limited per day: 30 images on the free plan, 500 on paid plans (reset at midnight UTC), counting every image stored from outside the app (pedra_add_images_to_property, pedra_add_local_panoramas, URL scenes in tours, upload-link files); over it the call fails with HTTP 429, upload_limit and nothing is stored. Upload links: 5 a day free, 50 paid (upload_link_limit).
Example prompts once connected:
"Use Pedra to virtually stage https://example.com/empty-living-room.jpg as a minimalist living room."
"Virtually stage /Users/me/Desktop/empty-living-room.jpg as a minimalist living room."
"How many Pedra credits do I have left?"
Virtual tours
POST your 360° photos, get back a hosted, linked, shareable virtual tour: AI names the rooms and places the door-to-door navigation points. The tour tools have the same names, descriptions and input schemas as Pedra's hosted MCP server (https://app.pedra.ai/mcp), so an agent behaves the same on either.
A typical flow:
Get the 360° photos into a property.
Files on this computer →
pedra_add_local_panoramaswith the paths in walking order. This tool exists only in this local server: it reads the files off disk and sends them base64-encoded, 10 per call under the API's 50 MB request limit. Files over ~33 MB can't go this way.Photos on someone's phone (or big files) →
pedra_create_upload_linkwithtype: "360", and hand over theuploadUrl(no login, valid 24 h).Photos already online → skip this step and pass the URLs as
scenes.
Build it:
pedra_create_virtual_tourwith thepropertyId(uses every 360° photo in upload order) or withscenes. It returns atourIdstraight away.Wait: poll
pedra_get_virtual_touruntilstatusis"ready"(about 10 s per room) — then sharetourUrlor embedembedCode. A"failed"build says why and costs nothing.Adjust with
pedra_update_virtual_tour(free, instant) or append rooms withpedra_add_virtual_tour_scenes.
Linking costs max(3, ceil(rooms/3)) credits for "sequential" (default; each room to the next), 5–160 for "smart" (AI works out which rooms connect), and nothing for "none". Deleting a tour is API-only (not exposed as a tool).
"Make a Pedra virtual tour of Calle Mayor 12 from /Users/me/360/entrance.jpg, /Users/me/360/living.jpg and /Users/me/360/kitchen.jpg, in that order, and give me the link."
How it works
This server is a thin wrapper over @pedra-ai/sdk, which encodes the API's contract details:
Synchronous by design (except virtual tours). Every photo and video endpoint blocks and returns the final URL(s) in the response body. Even
pedra_create_videopolls server-side and returns the finishedvideoUrlinline (it can take up to ~10 minutes; the API keeps the connection alive with a heartbeat).Errors are tool errors. The API's 4xx responses (insufficient credits, bad image, …) come back as MCP tool errors with a readable message, not crashes.
Privacy Policy
This server sends the image/video URLs and parameters you pass to the Pedra API to perform the requested edit, authenticated with your PEDRA_API_KEY. Without a key, pedra_request_access sends the email address you give it to Pedra so Pedra can email you a confirmation link; a key obtained that way is held in memory for the session only. It stores no data itself. Data collection, usage, storage, retention, third-party sharing, and contact information are covered by Pedra's privacy policy: https://pedra.ai/privacy.
License
MIT © Pedra
Available Tools
27 toolspedra_add_images_to_propertyAdd photos to propertyA
Add photos to a property by URL (the server fetches each one, so any public https image URL or small data: URI works). Returns the stored img.pedra.ai URLs to use with the editing, video and tour tools. For photos on the user's device, use pedra_create_upload_link instead. Pass type "360" for 360° photos (checked to be 2:1 equirectangular), which can then become a virtual tour. (With this local server, 360° photo files on this computer can go through pedra_add_local_panoramas instead.)
Inputs: imageUrls (required), propertyId (required), type, names.
pedra_add_local_panoramasAdd local 360° photos to propertyA
LOCAL-ONLY TOOL (this Pedra MCP server runs on the user's own computer, so it can read files from its disk). Upload 360° photo files (2:1 equirectangular JPEG, PNG or WebP) from absolute local paths into a property, in the order given — that order becomes the walking order when you then call pedra_create_virtual_tour with just the propertyId. Files are sent in batches (10 per call, under the 50 MB request limit); a file over ~33 MB can't be sent this way — use pedra_create_upload_link for those. Prefer this over pedra_create_upload_link whenever the 360° photos are files on this computer. Returns the added photos (imageIds are scene ids) and any that failed, each with its path.
Inputs: paths (required), propertyId (required).
pedra_add_virtual_tour_scenesAdd rooms to virtual tourA
Add rooms to the end of an existing virtual tour. With "sequential" linking (default) only the new stretch is linked: the last existing room to the first new one, then each new room to the next. That costs max(3, ceil(new rooms/3)) credits; "none" is free. The tour stays live while this runs; poll pedra_get_virtual_tour until status is "ready".
Inputs: scenes (required), tourId (required), linking.
pedra_blurBlur objectsA
Blur objects in an image (e.g. faces, license plates) for privacy. Returns the blurred image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: imageUrl (required), objectsToBlur (required), name, propertyId, +1 more.
pedra_create_propertyCreate propertyA
Create a new Pedra property. Returns its propertyId and an appUrl. To add photos that are on the user's device, pedra_create_upload_link is simpler (no login); or give the user the appUrl to open the property in Pedra and drop their photos in, then use pedra_list_property_images.
Inputs: name.
pedra_create_upload_linkCreate photo upload linkA
Get a link where the user (or their photographer) uploads photos from their phone or computer into a property. No login, valid 24 hours. Use this whenever the photos are files on the user's device that weren't attached to the chat: for editing, videos or virtual tours. Regular photos and 360° photos both work (360° photos are recognised automatically); pass type "360" for a virtual tour so anything else is refused. Creates the property if no propertyId is given. Give the user the uploadUrl, wait until they say they're done, then use pedra_list_property_images (type "360" for 360° photos), or pedra_create_virtual_tour with the propertyId. (With this local server, files on this computer can also be passed directly: a local path as imageUrl, or pedra_add_local_panoramas for 360° photos.)
Inputs: name, type, language, propertyId.
pedra_create_videoCreate property videoA
Create a property video from a list of images. Blocks server-side until the video is rendered (up to ~10 min) and returns the finished video URL inline.
Inputs: images (required), music, voice, branding, +4 more.
pedra_create_virtual_tourCreate virtual tourA
Build a hosted 360° virtual tour: the rooms are named and linked with navigation points by AI, and you get a shareable link and embed code. Pass the 360° photos as scenes (URLs, or imageIds of 360° photos already in the property) in the order someone would walk through the home, or just a propertyId to use all its 360° photos. Linking: "sequential" (default) links each room to the next and costs max(3, ceil(rooms/3)) credits; "smart" lets AI work out which rooms connect (slower, 5-160 credits by room count); "none" is free. Returns a tourId immediately — the build takes about 10 seconds per room, so poll pedra_get_virtual_tour until status is "ready". One tour per property.
Inputs: name, scenes, linking, language, +1 more.
pedra_creditsGet creditsARead-only
Read the account's plan and remaining credits. Never deducts credits.
Inputs: no named parameters.
pedra_edit_via_promptEdit via promptA
Edit an image from a natural-language instruction (e.g. "paint the walls sage green"). Returns the edited image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: prompt (required), imageUrl (required), name, propertyId, +1 more.
pedra_empty_roomEmpty roomA
Remove all furniture and objects from a room, leaving an empty space. Returns the emptied image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: imageUrl (required), name, propertyId, preserveAspectRatio.
pedra_enhanceEnhance imageA
Enhance a real-estate photo: improve lighting, color, and sharpness. Returns the enhanced image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: imageUrl (required), name, propertyId, preserveAspectRatio, +1 more.
pedra_enhance_and_correct_perspectiveEnhance + correct perspectiveA
Enhance a photo and correct vertical/horizontal perspective (straighten walls and lines). Returns the corrected image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: imageUrl (required), name, propertyId, preserveAspectRatio, +1 more.
pedra_feedbackSubmit feedbackA
Submit thumbs up/down feedback on a generated image, with an optional credit-back on a thumbs-down (subject to the API's eligibility rules).
Inputs: vote, comment, imageId, imageUrl, +1 more.
pedra_furnishFurnish / virtually stageA
Virtually stage (furnish) a room with AI-generated furniture. Returns the staged image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: imageUrl (required), name, style, roomType, +2 more.
pedra_generate_voiceGenerate voiceover audioA
Render a voiceover from a script via text-to-speech. Returns an audioId — pass it to pedra_create_video / pedra_update_video as voice.audioId to attach the narration (with synced subtitles).
Inputs: text (required), voiceId, language.
pedra_generate_voice_scriptGenerate voiceover scriptA
Write a short voiceover script from property photos (and optional facts). GPT-4o vision reads the images so the script reflects what's actually shown. Returns the script text — pass it to pedra_generate_voice.
Inputs: images, language, propertyCharacteristics.
pedra_get_virtual_tourCheck virtual tourARead-only
Get a virtual tour: status ("processing", "ready" or "failed", with the reason), the shareable tourUrl, an embedCode iframe for a website, and its scenes and navigation links. Poll this after pedra_create_virtual_tour or pedra_add_virtual_tour_scenes. Read-only.
Inputs: tourId (required).
pedra_list_propertiesList propertiesARead-only
List the user's Pedra properties (id, name, photo count, and an appUrl to open each in Pedra). Use this to find photos already in the account — e.g. to build a video from a listing's photos.
Inputs: no named parameters.
pedra_list_property_imagesList property photosARead-only
List the photos in a Pedra property as img.pedra.ai URLs, ready to pass straight to pedra_create_video or the image-editing tools. Get the propertyId from pedra_list_properties. Pass type "360" to list its 360° photos instead (their imageIds are the scenes of a virtual tour).
Inputs: propertyId (required), type.
pedra_list_virtual_toursList virtual toursARead-only
List the account's virtual tours (newest first) with status, share link and room count. Optionally only one property's. Read-only.
Inputs: propertyId.
pedra_music_libraryList music tracksARead-only
List the background-music catalog: valid music.track values (genre keys), plus the voice languages and the narration voices offered for each of them. Read-only.
Inputs: no named parameters.
pedra_remove_objectRemove objectA
Remove an object from an image using a mask. Returns the cleaned image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: maskUrl (required), imageUrl (required), name, propertyId, +1 more.
pedra_renovationRenovate spaceB
Renovate a space (walls, floors, finishes), optionally furnished. Returns the renovated image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: imageUrl (required), name, style, furnish, +3 more.
pedra_sky_blueReplace skyA
Replace a dull or overcast sky with a clear blue one. Returns the image URL with the new sky. Pass propertyId to save the result into that property's gallery instead of only returning a URL.
Inputs: imageUrl (required), name, skyStyle, propertyId, +1 more.
pedra_update_videoEdit existing videoA
Edit an existing video (by videoId) without re-rendering unchanged clips — only new/changed photos re-animate and cost credits; reordering, music, voice, branding and text re-stitch for free. Omit images to change only audio/text/branding while keeping the current timeline. Omit music/voice/branding/ending text to leave them unchanged. Blocks until rendered and returns the new video URL.
Inputs: videoId (required), music, voice, images, +5 more.
pedra_update_virtual_tourEdit virtual tourADestructive
Change a finished virtual tour in place: rename it or its rooms, reorder rooms (the first one is where the tour opens), remove rooms, replace its navigation links, or change how the navigation points look. Free and instant. The tour's public link shows the change right away. Get sceneIds from pedra_get_virtual_tour.
Inputs: tourId (required), name, links, language, +6 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 27 tools
Most tools map to a distinct resource plus action (enhance, furnish, empty_room, sky_blue, blur, remove_object), and the video/tour/voice pipelines are clearly separated. The main soft spots are the three photo-ingestion paths (add_images_to_property, add_local_panoramas, create_upload_link) and the overlap between edit_via_prompt and the specialized edit tools, though descriptions do give guidance.
All 27 tools use the pedra_ prefix with snake_case, and most are verb_noun (pedra_create_video, pedra_list_properties, pedra_remove_object). Minor deviations are noun/attribute-style names like pedra_credits, pedra_music_library, and pedra_sky_blue, but the naming remains predictable.
At 27 tools the surface is heavy; the breadth (video, tours, nine single-purpose image edits, voice, property management) explains some of it, but the cluster of near-synonymous edit tools could be consolidated. It sits at the top edge of what an agent can navigate comfortably.
Creation, editing, listing, and update flows are well covered across properties, images, videos, voice, and tours. However, there are no delete/cleanup operations anywhere (property, image, video, tour) and no video list/get-status tool, leaving lifecycle dead ends an agent cannot resolve.
Maintenance
Related MCP Connectors
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
Official MCP server for Lovable, the AI-powered full-stack app builder.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for AI image generation, transformation, and style management via the Recraft API. Provides tools for text-to-image, image-to-image, inpainting, background operations, vectorization, upscaling, and custom style creation.1643 npm12MIT
- AlicenseAqualityBmaintenanceOfficial MCP server for Rendobar. Lets AI agents run serverless media processing and upload local files.983 npm1MIT
- AlicenseNot gradedqualityDmaintenanceOpen-source MCP server for AI virtual staging and real-estate photography editing. It turns the AI HomeDesign photo API into natural-language tools for virtual staging, redesign, photo enhancement, and more.MIT
- AlicenseAqualityNot gradedmaintenanceRead-only MCP server exposing AI Room Design's image generation styles, pricing, FAQ, and official links to MCP-compatible clients like Claude Desktop, Cursor, and Windsurf.3MIT