Skip to main content
Glama
pedra-ai

Pedra MCP Server

Official
by pedra-ai

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.

npm version Official MCP registry

Add to Cursor

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/mcp

Or install it:

npm install -g @pedra-ai/mcp
PEDRA_API_KEY=your-api-key pedra-mcp

Smithery

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/mcp

Then just ask for something ("stage this photo with Pedra"). Without a key the server adds two tools, and the assistant does the rest:

  1. pedra_request_access with 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.

  2. pedra_check_access until 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 as PEDRA_API_KEY to the server's env (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

Tool

Endpoint

What it does

pedra_enhance

/enhance

Improve lighting, color, sharpness

pedra_enhance_and_correct_perspective

/enhance_and_correct_perspective

Enhance + straighten perspective

pedra_empty_room

/empty_room

Remove all furniture/objects

pedra_furnish

/furnish

Virtually stage a room

pedra_renovation

/renovation

Renovate walls/floors/finishes

pedra_edit_via_prompt

/edit_via_prompt

Edit from a natural-language prompt

pedra_sky_blue

/sky_blue

Replace a dull sky with clear blue

pedra_remove_object

/remove_object

Remove an object using a mask

pedra_blur

/blur

Blur faces, license plates, etc.

pedra_create_video

/create_video

Render a property video from images

pedra_update_video

/update_video

Edit a video without re-rendering unchanged clips

pedra_generate_voice_script

/generate_voice_script

Write a voiceover script from property photos

pedra_generate_voice

/generate_voice

Turn a script into a voiceover audio track

pedra_music_library

/music_library

List background-music tracks, voice languages + narration voices

pedra_list_properties

/list_properties

List the account's properties

pedra_list_property_images

/list_property_images

List a property's photos (or, with type: "360", its 360° photos) as URLs

pedra_create_property

/create_property

Create a property

pedra_add_images_to_property

/add_images_to_property

Add photos (or, with type: "360", 360° photos) to a property by URL

pedra_add_local_panoramas

/add_images_to_property (batched)

Local only: upload 360° photo files from this computer into a property

pedra_create_upload_link

/create_upload_link

No-login page to upload photos or 360° photos from a phone or computer (type: "360" for tours only)

pedra_create_virtual_tour

/create_virtual_tour

Build a hosted 360° virtual tour (AI names and links the rooms)

pedra_get_virtual_tour

/get_virtual_tour

Tour status, share link, embed code, scenes, links

pedra_list_virtual_tours

/list_virtual_tours

List the account's virtual tours

pedra_update_virtual_tour

/update_virtual_tour

Rename, reorder, remove rooms, re-link, restyle (free)

pedra_add_virtual_tour_scenes

/add_virtual_tour_scenes

Add rooms to the end of a tour

pedra_credits

/credits

Read plan + remaining credits

pedra_feedback

/feedback

Thumbs up/down + optional credit-back

pedra_request_access

/agent_signup

Only without an API key: email the user a link to create/allow their account

pedra_check_access

/agent_signup_status

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, or

  • an 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), then pedra_list_property_images returns their URLs for editing, pedra_create_video or pedra_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:

  1. Get the 360° photos into a property.

    • Files on this computer → pedra_add_local_panoramas with 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_link with type: "360", and hand over the uploadUrl (no login, valid 24 h).

    • Photos already online → skip this step and pass the URLs as scenes.

  2. Build it: pedra_create_virtual_tour with the propertyId (uses every 360° photo in upload order) or with scenes. It returns a tourId straight away.

  3. Wait: poll pedra_get_virtual_tour until status is "ready" (about 10 s per room) — then share tourUrl or embed embedCode. A "failed" build says why and costs nothing.

  4. Adjust with pedra_update_virtual_tour (free, instant) or append rooms with pedra_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_video polls server-side and returns the finished videoUrl inline (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 tools
pedra_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.)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoWhat the images are: regular photos ("photo", the default) or 360° photos ("360").
imageUrlsYesImage URLs to fetch and add to the property: up to 20 photos, or up to 10 when type is "360".
propertyIdYesTarget property id (from pedra_list_properties or pedra_create_property).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=true; the description goes beyond them by disclosing that the server performs the fetch (so https public URLs or small data: URIs are required) and that 360° images are validated as 2:1 equirectangular. It stops short of covering failure behavior or whether re-adding duplicates images, which keeps it off a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the primary action and the returned artifact before the alternatives. The nested parenthetical about local 360° files is slightly awkward but carries non-redundant routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description states what is returned (stored img.pedra.ai URLs) and how they are used downstream. Combined with the sibling routing and 360° validation notes, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: the acceptable URL forms and the network-fetch implication, plus the semantic consequence of passing type "360" (equirectangular check and tour eligibility).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add) and resource (photos to a property) and explicitly scopes the input mechanism to URLs fetched by the server. It distinguishes itself from the sibling tools pedra_create_upload_link and pedra_add_local_panoramas by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: use pedra_create_upload_link for device photos, pedra_add_local_panoramas for local 360° files. It also names the downstream consumers (editing, video, tour tools) that the returned URLs feed, which tells the agent when this call is a prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesAbsolute paths to 360° photo files on this computer, in walking order (file:// URLs and ~ are accepted).
propertyIdYesTarget property id (from pedra_list_properties or pedra_create_property).

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds valuable operational context — local-disk-only access, 10-file batching under the 50 MB request limit, the ~33 MB per-file cap, and the order-becomes-walking-order effect — but does not describe auth requirements or failure handling in depth. Strong added context against an already-covered safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the critical LOCAL-ONLY framing and is dense with useful detail, but it is delivered as a single long paragraph. Every sentence earns its place, though the batching and size-limit clauses could be more scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description steps in by describing the return value (added photos with imageIds as scene ids, plus failed files each with their path). Combined with limits, batching and the sibling cross-reference, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are documented structurally, giving a baseline of 3. The description goes beyond that by explaining that the supplied order becomes the walking order used by pedra_create_virtual_tour and by specifying accepted image formats (2:1 equirectangular JPEG/PNG/WebP), adding meaning the schema alone doesn't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (upload/add) and resource (360° photo files from local disk into a property), and explicitly distinguishes itself from the sibling pedra_create_upload_link. An agent can tell immediately what this does and how it differs from the alternative path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit selection criteria: prefer this over pedra_create_upload_link whenever the photos are files on this computer, and use the upload link instead for files over ~33 MB. Both the when and the when-not are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
scenesYesThe new rooms, in walking order.
tourIdYesThe tour to extend.
linkingNoDefaults to "sequential".

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, but the description adds substantial behavioral detail beyond them: credit cost formula for sequential linking, free option for linking none, async behavior, and the need to poll until status ready. This is exactly the kind of operational context an agent needs for a mutating, credit-consuming, asynchronous tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then efficiently packs linking behavior, cost implications, and required polling into three sentences. Every sentence earns its place with no redundant restatement of the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with annotations covering safety hints, no output schema, and full parameter schema coverage, the description supplies the critical missing operational context: async execution, cost model, and polling instructions. An agent has enough information to call this correctly without opening other tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3. The description adds meaning beyond the schema by explaining the effect of the linking parameter, including the difference between sequential and none and the resulting credit cost. It also clarifies that new rooms are appended and linked in walking order, which reinforces the scenes parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: add rooms to the end of an existing virtual tour. This clearly distinguishes it from sibling tools like pedra_create_virtual_tour and pedra_update_virtual_tour, which create or modify tour metadata rather than append scenes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence establishes clear context for when this tool applies: extending an existing tour. It also instructs the agent to poll pedra_get_virtual_tour until status is ready after invocation. However, it does not explicitly state exclusions or contrast with alternative sibling tools beyond the polling helper.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_blurBlur objectsA

Blur objects in an image (e.g. faces, license plates) for privacy. Returns the blurred image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.
objectsToBlurYesLabels/regions to blur, e.g. ["faces", "license plates"].

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is largely covered. The description adds the return value (blurred image URL), which is genuinely useful, but says nothing about credit cost, whether the source is modified, or whether this is asynchronous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, purpose front-loaded before the return-value note. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with full schema coverage and no output schema, the description supplies the one thing the schema omits (the returned blurred image URL). Minor gaps like cost or sync/async behavior remain but are not critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are fully documented in the schema, including the fallback to pedra_create_upload_link for unreachable device photos. The description adds no parameter detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (blur objects in an image) with concrete examples of the targets (faces, license plates) and the intent (privacy). It is distinguishable from siblings like pedra_remove_object or pedra_enhance, though it never names an alternative to sharpen the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for privacy' implies the use case, but there is no explicit when-to-use vs. when-to-use-something-else guidance and no mention of the sibling tools an agent might confuse this with (e.g. pedra_remove_object).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoProperty name, e.g. the listing address.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, open-world, non-destructive operation. The description adds context annotations cannot convey: the returned propertyId and appUrl, and the implicit auth distinction (upload link works 'no login'). Permissions for creation itself are not spelled out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the purpose and return values, then the optional workflow guidance. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming the return values (propertyId, appUrl). It also closes the loop on the natural next step (photos via upload link or appUrl), so an agent has everything needed to call it and act on the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (name) and schema description coverage is 100%, so the schema already explains it as the listing address. The description adds no syntax, format, or default guidance for name, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a new Pedra property') and immediately names the return values. It also references the sibling tools (pedra_create_upload_link, pedra_list_property_images) that handle the adjacent photo workflow, so an agent can place it in the tool set without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing advice for the follow-on photo step: use pedra_create_upload_link for device photos (noting it needs no login), or hand the user the appUrl and then call pedra_list_property_images. It does not say when creating a property is appropriate relative to e.g. pedra_list_properties, but the alternatives it does name are actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_create_videoCreate property videoB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
musicNo
voiceNo
imagesYesOrdered list of images that make up the video.
brandingNo
isVerticalNoForce a vertical (9:16) video.
endingTitleNo
endingSubtitleNo
propertyCharacteristicsNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, open-world, non-destructive write, and the description adds genuine behavioral context beyond them: the call blocks server-side for up to ~10 minutes and returns the rendered URL inline rather than requiring a polling step. That latency and return-shape disclosure is exactly what an agent needs to avoid a timeout surprise. It stops short of 5 because no auth, quota, or failure behavior is mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, fully front-loaded: the action first, then the operational caveat. Nothing is padded and every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a heavy composite tool with 8 parameters, nested objects, and no output schema, the description covers the crucial return value and blocking behavior well. But it leaves the multi-input composition story (music library, voiceover dependency, branding, aspect ratio) entirely to a low-coverage schema, so the definition is adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% across 8 parameters, so the description carries a heavier burden — yet it only restates 'a list of images' and says nothing about music, voice, branding, ending titles, or property characteristics. Nested structures like music.track and voice.audioId carry their own schema text, but the top-level composition options are undocumented in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Create a property video from a list of images.' It is immediately clear what the tool produces and its input source. It does not, however, differentiate itself from the sibling pedra_update_video, which an agent would need to distinguish creation from modification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use or when-not-to-use guidance and names no alternatives, even though the sibling list contains pedra_update_video, pedra_generate_voice, and pedra_music_library which are all relevant to composing a video. The only routing hint ('get a link from pedra_create_upload_link') lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoTour title, e.g. the listing address.
scenesNoThe rooms in walking order. Omit to use every 360° photo in propertyId.
linkingNoHow rooms get connected. Defaults to "sequential".
languageNoLanguage of the tour page and of AI room names. Defaults to "en".
propertyIdNoProperty the tour belongs to. Omit to create a new property.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnly=false, openWorld=true, destructive=false) by disclosing that a tourId returns immediately, that the build takes ~10s/room, that the caller must poll pedra_get_virtual_tour until status is 'ready', and the exact credit formula per linking mode.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information-dense and front-loaded with the outcome, then inputs, then linking costs, then async behavior. Slightly long for a single paragraph, but nearly every clause carries unique operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by explaining the immediate return value (tourId), the polling requirement, and the terminal status — everything an agent needs to invoke and follow up correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds real semantic value: what 'sequential'/'smart'/'none' actually do, their relative cost, and the walking-order meaning of the scenes array.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Build a hosted 360° virtual tour') plus the concrete outputs (shareable link and embed code), clearly distinguishing it from siblings like pedra_add_virtual_tour_scenes or pedra_update_virtual_tour.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers the two mutually exclusive input paths (pass scenes in walking order, or just propertyId to use all 360° photos), names the alternative linking modes with their tradeoffs, and states the 'one tour per property' constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_creditsGet creditsA
Read-only

Read the account's plan and remaining credits. Never deducts credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that it reads 'plan and remaining credits', providing specific data beyond annotations. This is useful context for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core purpose and behavioral guarantee. Every word is informative; no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool without output schema, the description sufficiently explains what is returned (plan and remaining credits). It fully covers the agent's needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline is 4 per rule. The description correctly implies no input is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'Get credits' and description clearly specify the verb 'Read' and the resource 'account's plan and remaining credits'. It unambiguously distinguishes from sibling tools that perform image editing operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states it never deducts credits, implying safe usage. While no alternatives are mentioned, the zero-parameter interface makes usage straightforward and self-evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_edit_via_promptEdit via promptB

Edit an image from a natural-language instruction (e.g. "paint the walls sage green"). Returns the edited image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesNatural-language description of the edit to apply.
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, open-world, non-destructive operation, so the safety profile is covered. The description adds one genuinely useful behavioral fact that annotations do not convey — that the result is returned as a new edited image URL rather than modifying in place. It says nothing about cost/credits, latency, or whether the source image is preserved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and the core purpose is front-loaded with the example and return value following. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with full schema coverage, the description covers what it does and what it returns, which matters since there is no output schema. It is slightly thin on routing among edit siblings and on cost/side-effect behavior, but nothing required to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are fully documented in the schema, including the accepted imageUrl forms and the fallback to pedra_create_upload_link. The description only echoes the prompt concept via its example and adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('edit an image') plus the mechanism ('from a natural-language instruction') and gives a concrete example. It does not, however, distinguish itself from the many specialized edit siblings such as pedra_remove_object, pedra_furnish, or pedra_enhance, so the agent cannot tell from the description alone when this generic prompt-edit is the right choice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage signal is the example instruction ('paint the walls sage green'), which implies an open-ended edit. There is no guidance on when to prefer this over the many narrower edit tools in the sibling list, and no exclusions or prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_empty_roomEmpty roomA

Remove all furniture and objects from a room, leaving an empty space. Returns the emptied image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is already covered. The description adds the return value (emptied image URL), which is useful given there is no output schema, but says nothing about cost (pedra_credits exists), whether the source image is preserved, or processing behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the return value. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with a fully documented schema, the description covers the action and the return shape adequately. The only gap is usage context relative to siblings, which is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself documents the accepted input forms (https URL, data URI, local path) plus a fallback to pedra_create_upload_link. The description adds no parameter meaning beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: remove all furniture and objects from a room, producing an empty space. It is distinguishable from the sibling pedra_remove_object (single object removal) by the word 'all', though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the description; there is no explicit when-to-use, when-not-to-use, or routing to alternatives such as pedra_remove_object or pedra_furnish. An agent can infer the scenario but must reason about sibling selection itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_enhanceEnhance imageB

Enhance a real-estate photo: improve lighting, color, and sharpness. Returns the enhanced image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.
preserveOriginalFramingNoPreserve the original framing/aspect ratio/resolution exactly (for verification verticals where the output must legally represent the captured photo). Defaults to false.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation/safety profile is covered. The description adds the return contract ('Returns the enhanced image URL'), which is genuinely useful since there is no output schema, but says nothing about processing time, async behavior, or credit consumption.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler, with the core action and the return value front-loaded. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, stating the effect and the returned URL covers the essentials an agent needs to invoke it. The only real gap is sibling routing, which is a usage-guideline concern rather than a structural omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both imageUrl and preserveOriginalFraming, including the cross-reference to pedra_create_upload_link. The description adds no parameter detail beyond that, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (enhance) and resource (real-estate photo) and enumerates the concrete effects: lighting, color, sharpness. It is clear, but it does not differentiate itself from the near-identical sibling pedra_enhance_and_correct_perspective, leaving the agent to guess which enhancement to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all. With siblings like pedra_enhance_and_correct_perspective, pedra_edit_via_prompt, pedra_renovation and pedra_furnish all plausible for a given photo, the description never says which condition selects this tool over those.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_enhance_and_correct_perspectiveEnhance + correct perspectiveB

Enhance a photo and correct vertical/horizontal perspective (straighten walls and lines). Returns the corrected image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.
preserveOriginalFramingNoPreserve the original framing/aspect ratio/resolution exactly (for verification verticals where the output must legally represent the captured photo). Defaults to false.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-destructive (destructiveHint=false) and openWorld. The description adds that it returns the corrected image URL, which is genuinely useful given no output schema exists. It does not clarify whether the original is left untouched or whether the operation consumes credits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: the action with its clarifying parenthetical, then the return value. Zero waste and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description covers the action and the return type, and annotations cover safety. It is nearly complete, missing only the sibling-differentiation and any credit/permission implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (imageUrl, preserveOriginalFraming) are fully documented in the schema, including the upload-link fallback. The description adds no parameter detail beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair and resource: enhance a photo AND correct vertical/horizontal perspective, with the parenthetical clarifying what correction means (straighten walls and lines). This distinguishes it from the sibling pedra_enhance, which presumably only enhances, though the description never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. It doesn't say to prefer pedra_enhance when perspective correction isn't needed, nor what input constraints apply. The only routing hint (use pedra_create_upload_link for phone photos) lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
voteNoThumbs up/down. An empty string clears a previous vote.
commentNo
imageIdNoExplicit image id. One of imageUrl/imageId is required.
imageUrlNoThe generated image URL to vote on (id is parsed from it).
creditBackNoRequest a credit refund (only honored on a thumbs-down).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false and destructiveHint=false, so the description must add behavioral context. It mentions credit-back subject to eligibility rules, but does not elaborate on eligibility or other behaviors like clearing votes, which is partially captured in schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, no fluff, and front-loaded with the primary action and key nuance (credit-back on thumbs-down). Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 5 parameters, the description does not explain parameter interdependencies (imageUrl/imageId), success/error responses, or the behavior of the empty vote string. No output schema exists, so the description should compensate, but it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, and the description adds minimal value beyond what the schema already provides. It restates that vote is thumbs up/down and that creditBack is optional, but does not clarify the required relationship between imageUrl and imageId or explain the empty string vote clearing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Submit thumbs up/down feedback on a generated image', which is a specific verb and resource. It distinguishes well from sibling tools that focus on image editing operations like blur, create video, enhance, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for providing feedback with optional credit-back, but does not explicitly state when to use this tool vs alternatives, nor does it explain the eligibility rules for credit-back or when to clear a vote.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_furnishFurnish / virtually stageB

Virtually stage (furnish) a room with AI-generated furniture. Returns the staged image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoe.g. "Minimalist", "Scandinavian", "Modern".
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.
roomTypeNoe.g. "Living room", "Bedroom", "Kitchen". Auto-detected if omitted.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the agent already knows this is a non-destructive generative operation. The description adds the key behavioral fact that this is AI generation producing a staged image URL, but discloses nothing about processing time, failure modes, or cost/credits (despite a pedra_credits sibling).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, the action stated first and the return value second. No filler, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter, non-destructive generation tool with fully documented schema and annotations, the description covers the essential action and return value even without an output schema. It could say more about outputs beyond the URL (e.g., whether multiple variants are returned), but nothing blocking an agent is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents imageUrl, style, and roomType in detail, including the upload-link fallback. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Virtually stage (furnish) a room with AI-generated furniture') and specifies the output ('Returns the staged image URL'). It is clear on its own, but it does not distinguish itself from similarly-named siblings like pedra_empty_room (the inverse) or pedra_renovation, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use, when-not-to-use, or alternative-tool guidance. With ~26 siblings including pedra_empty_room and pedra_create_upload_link, an agent gets no routing help from the description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe script to narrate (max 1000 characters).
voiceIdNoWhich voice narrates. Call pedra_music_library for the voices offered per language — a voice is only valid for the language it is listed under. Defaults to that language's first voice.
languageNoVoice language, e.g. "English", "Español". Defaults to English.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the main remaining burden is workflow behavior. The description usefully discloses that it returns an audioId for downstream attachment with synced subtitles, but omits cost/credit consumption and any rate or length constraints beyond the schema's 1000-char note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and the primary action is front-loaded ahead of the downstream-chaining note. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by stating the return value (audioId) and how to consume it. For a simple three-param TTS tool this is nearly sufficient; only cost/limits are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema params are richly documented (voiceId points at pedra_music_library, language defaulting rules, text length cap). The description adds no parameter meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Render a voiceover from a script via text-to-speech') and names the enabling mechanism. It is clearly distinguishable from pedra_generate_voice_script, which is the script-writing sibling, because this tool's output is audio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent what to do with the result: pass the audioId to pedra_create_video / pedra_update_video as voice.audioId. That is real workflow routing, but there is no when-not-to-use guidance or prerequisite (e.g. credits) noted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesNoPhotos to base the script on (URLs or { imageUrl }).
languageNoScript language, e.g. "English", "Español". Defaults to English.
propertyCharacteristicsNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and openWorldHint=true, so the bar for safety disclosure is partially met, but the description adds genuinely useful behavior: GPT-4o vision actually reads the images, and the return value is raw script text meant to be chained into pedra_generate_voice. It omits cost/credit implications, which matters for a paid-generation sibling set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no filler, with the core action and its downstream handoff front-loaded. Every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by stating the return value ('Returns the script text') and its consumer. The remaining gap is operational context such as credit cost and whether images are effectively required despite zero required parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, so the schema already documents the image source formats, language default, and the propertyCharacteristics label/value pair. The description only adds that facts are optional, which is marginal over the schema's own text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Write a short voiceover script from property photos') and immediately distinguishes itself from the sibling pedra_generate_voice by naming it as the downstream consumer. An agent can tell what this produces versus what the voice tool produces without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for use (photos + optional facts) and explicitly routes the result to pedra_generate_voice, which is a strong 'when to use' signal. It stops short of saying when NOT to use it or what alternative to pick if no photos exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_get_virtual_tourCheck virtual tourA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tourIdYesId from pedra_create_virtual_tour or pedra_list_virtual_tours.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description's real added value is the asynchronous lifecycle disclosure (status can be "processing", "ready" or "failed", with reason) plus the polling directive. It does not mention rate limits or how long processing typically takes, but the async behavior is clearly signposted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded: the return payload comes first, the polling trigger second. The trailing "Read-only." is redundant with readOnlyHint and does not fully earn its place, keeping it just under a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields and their meaning, and it explains the async status lifecycle the agent must handle. Nothing needed to call a single-parameter read tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one parameter (tourId), whose provenance is already documented in the schema ("Id from pedra_create_virtual_tour or pedra_list_virtual_tours"). The description adds no syntax or format detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (virtual tour) and enumerates the payload the agent receives: status with reason, tourUrl, embedCode iframe, scenes and navigation links. This clearly separates it from siblings like pedra_list_virtual_tours and pedra_update_virtual_tour.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Poll this after pedra_create_virtual_tour or pedra_add_virtual_tour_scenes" gives explicit when-to-use context and names the triggering siblings. It stops short of stating when not to use it (e.g., use list_virtual_tours for discovery), so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_list_propertiesList propertiesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context by listing the return fields, which is beneficial beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence defines the tool, the second provides a usage example. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters and no output schema, the description fully explains what it does and why to use it. Complete for the given complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description does not need to add parameter detail. The schema coverage is 100%, achieving the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool lists the user's Pedra properties and specifies the fields returned (id, name, photo count, appUrl). However, it does not differentiate from sibling tools like pedra_list_property_images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit use case (find photos for building a video) but does not mention when not to use or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_list_property_imagesList property photosA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoWhich images to list: regular photos ("photo", the default) or 360° photos ("360").
propertyIdYesThe property's id (from pedra_list_properties).

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: the output are img.pedra.ai URLs ready for downstream tools, and in 360 mode the imageIds are the scenes of a virtual tour. It stops short of documenting ordering/pagination, but adds real value over the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each earning its place: what is returned, where to get the input, and the alternate mode. Front-loaded with the primary behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description covers the return value (img.pedra.ai URLs), the input source (pedra_list_properties), and the mode switch. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: the "360" value's imageIds are the scenes of a virtual tour, and propertyId is sourced from pedra_list_properties. That is semantic context the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list the photos in a Pedra property) and specifies the return form (img.pedra.ai URLs). It clearly distinguishes the default photo listing from the 360 mode, so an agent can tell what this tool produces without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to siblings: get propertyId from pedra_list_properties, and the returned URLs feed directly into pedra_create_video or the image-editing tools. It also states the condition that selects the alternate mode (pass type "360").

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_list_virtual_toursList virtual toursA
Read-only

List the account's virtual tours (newest first) with status, share link and room count. Optionally only one property's. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdNoOnly this property's tour.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so 'Read-only' is partly redundant. The description does add value beyond the annotations, though: it discloses result ordering (newest first) and the shape of the returned records (status, share link, room count), which matters because no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core action and ordering lead, the optional filter follows, and the safety note is a compact trailing clause. Nothing wastes space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields and ordering, and the annotations cover the safety profile, so an agent has enough to call it correctly. Minor gaps remain: no mention of pagination or result-size limits on an account-wide listing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single optional propertyId parameter and schema description coverage is 100%, with the schema already stating 'Only this property's tour.' The description's 'Optionally only one property's' conveys the same meaning in prose but adds no format or semantic detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the account's virtual tours') plus the ordering and the fields returned (status, share link, room count). The scope clearly differs from pedra_get_virtual_tour, but the description never names that sibling to make the distinction explicit, which is the only thing separating it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Optionally only one property's' implies the filtering use case, and the plural 'tours' implies this is the bulk-listing option versus a single-tour getter. However there is no explicit when-to-use statement, no when-not condition, and no named alternative, so usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_music_libraryList music tracksA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the trailing 'Read-only.' adds no new information. The description does add useful behavioral context by disclosing the catalog's structure (genres plus per-genre languages and voices), but says nothing about caching, freshness, or how large the result may be.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence carries the catalog contents, and the content description is not padded. The appended 'Read-only.' is redundant with the annotations and is the only wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no input parameters, no output schema, and safety fully covered by annotations, the description's job is mainly to explain what comes back — which it does by naming the genre keys, languages, and voices. Complete enough to call correctly, with only minor omissions such as result size or format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description usefully clarifies the shape of the returned catalog entries (genre keys mapped to languages and narration voices), which is the closest analogue to parameter meaning for a filterless listing tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a clear verb-plus-resource ('List the background-music catalog') and then enumerates exactly what the catalog contains: `music.track` genre keys, voice languages, and narration voices per genre. That is far more specific than a bare title restatement, though it does not explicitly contrast itself with the voice-generation siblings it feeds into.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Calling this a list of 'valid `music.track` values' implies it is a lookup/reference step used before invoking a generation tool, which is reasonable implied usage. However, no when-to-use or when-not-to-use condition is stated and no sibling (e.g. pedra_generate_voice) is named as the downstream alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_remove_objectRemove objectB

Remove an object from an image using a mask. Returns the cleaned image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
maskUrlYesMask image marking the region to remove: a public https:// URL, a data: URI, or a local file path.
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds the return value ('cleaned image URL'), which is useful since no output schema exists, but says nothing about credits consumed, processing time, or whether the source image is modified in place.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the operation and followed by the return value. No filler, though it is arguably too terse given the gaps elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with a fully documented schema and no output schema, the description covers what the tool does and what it returns. Missing only usage routing and cost/behavioral context, which are minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already details acceptable input forms (https URL, data URI, local path) plus the pedra_create_upload_link fallback. The description adds no parameter meaning beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (remove) and resource (an object from an image via a mask), and it names the artifact it returns (cleaned image URL). It does not distinguish itself from sibling image-editing tools like pedra_enhance or pedra_blur, but the mask-based removal is self-evidently distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives (e.g. pedra_edit_via_prompt for text-driven edits). 'Using a mask' implies a precondition but nothing states when-not to use it or what happens if no mask region is found.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_renovationRenovate spaceB

Renovate a space (walls, floors, finishes), optionally furnished. Returns the renovated image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoRenovation style.
furnishNoWhether the renovated room should be furnished (true → with furniture, false → empty).
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.
roomTypeNoRoom type. Auto-detected if omitted.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is largely covered. The description adds that the output is a renovated image URL, which is useful, but it omits credit/cost implications and whether the result is a new asset versus an in-place edit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, operation first and return value second, with no filler. Everything stated earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter generation tool with a fully documented schema and no output schema, the description covers the action and the return value adequately. Additional context on cost or how it relates to sibling renovation tools would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema documents each parameter thoroughly, including the upload-link fallback for imageUrl, so the baseline of 3 applies. The description only restates the optional furnished/empty notion already covered by the furnish property.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (renovate) and resource (space) and enumerates the covered surfaces (walls, floors, finishes). It does not distinguish itself from close siblings like pedra_furnish or pedra_empty_room, which overlap on the furnished/empty dimension, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and no alternative is named. The description never explains why an agent would pick this over pedra_furnish, pedra_empty_room, or pedra_edit_via_prompt, all of which operate on the same kind of input.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_sky_blueReplace skyA

Replace a dull or overcast sky with a clear blue one. Returns the image URL with the new sky.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageUrlYesSource image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.
skyStyleNoOptional named sky style.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is largely covered. The description adds the return shape ('Returns the image URL with the new sky'), which matters because there is no output schema, but says nothing about whether the source image is modified, credit cost (a pedra_credits sibling exists), or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the capability stated first and the return value second. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, non-destructive edit tool it covers purpose and return value, and the schema carries the input detail. The one gap is that skyStyle is an 'optional named sky style' with no enumeration of valid names in either the schema or the description, leaving the agent unable to pick a value confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters, including the detailed imageUrl sourcing rules and the upload-link fallback. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Replace ... sky') plus a concrete condition ('dull or overcast') and an explicit outcome ('clear blue'). It does not differentiate itself from siblings like pedra_edit_via_prompt or pedra_enhance, which an agent might reasonably consider for the same job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'dull or overcast sky' implies the trigger condition, so usage is inferable. There is no explicit when-not guidance or named alternative for sky edits that could be done via pedra_edit_via_prompt.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
musicNo
voiceNo
imagesNoFull ordered image list to rebuild the timeline; matching photo+effect clips are reused. Omit to edit only audio/text and keep the current timeline.
videoIdYesId of the video to edit (from pedra_create_video).
brandingNo
isVerticalNoForce a vertical (9:16) video (only when images are sent).
endingTitleNo
endingSubtitleNo
propertyCharacteristicsNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations covering only safety hints, the description carries the behavioral payload and does so well: it explains the incremental re-render/credit-cost model, that reordering/music/voice/branding/text re-stitch for free, that the call blocks until rendered, and that it returns the new video URL. This is real value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with identity, then the cost/behavior model, then the return value. No filler; every clause adds actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter nested-object mutation with no output schema, the description covers cost behavior, omission defaults, blocking, and the return value. It omits guidance on a few nested params, but nothing critical for a correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% across 9 parameters, so the description must compensate, and it does for the high-impact ones (videoId, images, omission semantics for nested audio/text/branding objects). It still leaves several nested fields (isVertical, propertyCharacteristics, watermark details) to the schema, so not a perfect 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Edit an existing video (by videoId)') and implicitly distinguishes itself from pedra_create_video and pedra_edit_via_prompt by scoping to editing an existing render. An agent can identify the tool from the first clause alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit operational rules: omit `images` to keep the current timeline, omit `music`/`voice`/`branding`/ending text to leave them unchanged. It does not name a sibling alternative (e.g. pedra_edit_via_prompt) or state when-not-to-use, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pedra_update_virtual_tourEdit virtual tourA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew tour title.
linksNoReplaces ALL navigation links. Each is one direction; add the return link separately.
tourIdYesThe tour to change.
languageNoLanguage of the tour page and of AI room names. Defaults to "en".
sceneNamesNoNew room names, as { sceneId: "Kitchen" }.
sceneOrderNoEvery sceneId of the tour in the new order. The first one opens the tour.
showLabelsNoAlways show room names next to the navigation points.
removeScenesNosceneIds to take out of the tour (the photos stay in the property). Their links go too.
navigationSizeNoSize of the navigation points.
navigationStyleNoLook of the navigation points.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true; the description adds real value on top by stating the operation is free and instant and that the public link reflects the change immediately. It stops short of calling out irreversibility or confirmation requirements for the destructive removals, which is what a 5 would need.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, then lists the supported mutations, then gives the operational facts and the helper-tool pointer in two short sentences. Dense but every clause maps to a distinct capability; only the parenthetical about the first scene borders on restating the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter destructive mutation tool with no output schema, the description covers what changes, the side effects on the public link, and where to source sceneIds. It omits failure behavior and whether removed links/photos are recoverable, which are the remaining gaps an agent would want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description groups operations and maps them to parameters (rename → name/sceneNames, reorder → sceneOrder, remove → removeScenes, links → links), but most of that detail is already in the schema and it adds no extra syntax or constraint information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Change/edit in place) and resource (virtual tour), then enumerates the concrete mutations supported: rename tour/rooms, reorder, remove rooms, replace links, restyle navigation. It is clearly distinguishable from sibling tools like pedra_create_virtual_tour and pedra_add_virtual_tour_scenes because it operates on a finished tour rather than building one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Change a finished virtual tour in place" scopes usage to an existing, completed tour, and it explicitly routes the agent to pedra_get_virtual_tour for sceneIds. It does not state exclusions (e.g. don't use for adding scenes – that's pedra_add_virtual_tour_scenes), so it falls short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv0.5.1
    • Changedpedra_add_images_to_property2 fields changed
      • changedInput schema / properties / imageUrls / description
        Previous value: -"Up to 20 image URLs to fetch and add to the property."New value: +"Image URLs to fetch and add to the property: up to 20 photos, or up to 10 when type is \"360\"."
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "What the images are: regular photos (\"photo\", the default) or 360° photos (\"360\").",
        +  "enum": [
        +    "photo",
        +    "360"
        +  ],
        +  "type": "string"
        +}
    • Addedpedra_add_local_panoramas
    • Addedpedra_add_virtual_tour_scenes
    • Changedpedra_blur1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Addedpedra_create_upload_link
    • Changedpedra_create_video1 field changed
      • changedInput schema / properties / images / items / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Addedpedra_create_virtual_tour
    • Changedpedra_edit_via_prompt1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_empty_room1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_enhance1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_enhance_and_correct_perspective1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_furnish2 fields changed
      • removedInput schema / properties / creativity
        Removed value: -{
        -  "description": "Strength of the AI transformation. Defaults to \"Medium\".",
        -  "enum": [
        -    "Low",
        -    "Medium",
        -    "High"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_generate_voice1 field changed
      • addedInput schema / properties / voiceId
        Added value: +{
        +  "description": "Which voice narrates. Call pedra_music_library for the voices offered per language — a voice is only valid for the language it is listed under. Defaults to that language's first voice.",
        +  "type": "string"
        +}
    • Changedpedra_generate_voice_script1 field changed
      • changedInput schema / properties / images / items / anyOf
        Previous value: -[
        -  {
        -    "description": "Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically).",
        -    "type": "string"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "imageUrl": {
        -        "$ref": "#/properties/images/items/anyOf/0"
        -      }
        -    },
        -    "required": [
        -      "imageUrl"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "description": "Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link.",
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "imageUrl": {
        +        "$ref": "#/properties/images/items/anyOf/0"
        +      }
        +    },
        +    "required": [
        +      "imageUrl"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedpedra_get_virtual_tour
    • Changedpedra_list_property_images1 field changed
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Which images to list: regular photos (\"photo\", the default) or 360° photos (\"360\").",
        +  "enum": [
        +    "photo",
        +    "360"
        +  ],
        +  "type": "string"
        +}
    • Addedpedra_list_virtual_tours
    • Changedpedra_remove_object1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_renovation2 fields changed
      • removedInput schema / properties / creativity
        Removed value: -{
        -  "description": "Strength of the AI transformation. Defaults to \"Medium\".",
        -  "enum": [
        -    "Low",
        -    "Medium",
        -    "High"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_sky_blue1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Changedpedra_update_video1 field changed
      • changedInput schema / properties / images / items / properties / imageUrl / description
        Previous value: -"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file on this computer (the file is read and inlined automatically). If the photo is on the user's device and can't be read from here (e.g. it's on their phone), get a link from pedra_create_upload_link."
    • Addedpedra_update_virtual_tour
  2. 8 tool updatesv0.4.0
    • Removedpedra_add_images_to_project
    • Addedpedra_add_images_to_property
    • Removedpedra_create_project
    • Addedpedra_create_property
    • Removedpedra_list_project_images
    • Removedpedra_list_projects
    • Addedpedra_list_properties
    • Addedpedra_list_property_images
  3. 9 tool updatesv0.3.0
    • Addedpedra_add_images_to_project
    • Addedpedra_create_project
    • Changedpedra_create_video4 fields changed
      • addedInput schema / properties / music / properties / track / description
        Added value: +"Genre key from pedra_music_library (e.g. acoustic, chill, cinematic, electronic, upbeat)."
      • addedInput schema / properties / voice / properties / audioId
        Added value: +{
        +  "description": "Id of a voiceover from pedra_generate_voice. Drives the narration and its synced subtitles.",
        +  "type": "string"
        +}
      • addedInput schema / properties / voice / properties / audioUrl / description
        Added value: +"Legacy alias for audioId."
      • addedInput schema / properties / voice / properties / showSubtitles
        Added value: +{
        +  "description": "Burn in word-synced subtitles. Defaults to true.",
        +  "type": "boolean"
        +}
    • Addedpedra_generate_voice
    • Addedpedra_generate_voice_script
    • Addedpedra_list_project_images
    • Addedpedra_list_projects
    • Addedpedra_music_library
    • Addedpedra_update_video
  4. 10 tool updatesv0.1.2
    • Changedpedra_blur1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_create_video1 field changed
      • changedInput schema / properties / images / items / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_edit_via_prompt1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_empty_room1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_enhance1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_enhance_and_correct_perspective1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_furnish1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_remove_object2 fields changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
      • changedInput schema / properties / maskUrl / description
        Previous value: -"URL of the mask image marking the region to remove."New value: +"Mask image marking the region to remove: a public https:// URL, a data: URI, or a local file path."
    • Changedpedra_renovation1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
    • Changedpedra_sky_blue1 field changed
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL (or data: URL) of the source image."New value: +"Source image: a public https:// URL, a data: URI, or an absolute path to a local image file (the file is read and inlined automatically)."
  5. 12 tool updatesv0.1.0
    • First observedpedra_blur
    • First observedpedra_create_video
    • First observedpedra_credits
    • First observedpedra_edit_via_prompt
    • First observedpedra_empty_room
    • First observedpedra_enhance
    • First observedpedra_enhance_and_correct_perspective
    • First observedpedra_feedback
    • First observedpedra_furnish
    • First observedpedra_remove_object
    • First observedpedra_renovation
    • First observedpedra_sky_blue

TDQS

A3.7/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target a clearly distinct operation (enhance vs. furnish vs. renovate vs. sky replacement vs. blur), and descriptions explicitly state boundaries. The main overlap is the trio of image-intake tools (pedra_add_images_to_property, pedra_add_local_panoramas, pedra_create_upload_link), but the descriptions carefully specify when to use each, keeping confusion low.

Naming Consistency4/5

All tools share the pedra_ prefix and snake_case, and nearly all follow a verb_noun pattern (list_properties, create_virtual_tour, add_virtual_tour_scenes, generate_voice). A few deviate to noun-only or verb-only forms (pedra_credits, pedra_feedback, pedra_renovation, pedra_enhance), but these remain readable and largely predictable.

Tool Count3/5

At 27 tools the surface is heavy, exceeding the typical 3-15 sweet spot, largely due to nine distinct image-editing operations plus separate video, tour, voice, and property management families. Each tool does earn a distinct role, so it is justified rather than redundant, but it sits at the upper bound of what is comfortable.

Completeness4/5

Core lifecycle for the domain is well covered: property creation, image intake, rich editing, video creation/update, virtual tour create/get/list/update/add-scenes, voice scripting, credits, and feedback. Gaps are minor—no delete operations for properties, videos, or tours, and no list-videos tool—but these are workaroundable and not central to the main workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers