{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.pedra-ai/pedra-mcp",
  "title": "Pedra",
  "description": "AI real-estate photo editing via the Pedra API: virtual staging, renovation, enhancement, video.",
  "version": "0.4.0",
  "websiteUrl": "https://pedra.ai/api-documentation/mcp",
  "repository": {
    "url": "https://github.com/pedra-ai/pedra-mcp",
    "source": "github"
  },
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://app.pedra.ai/mcp"
    }
  ],
  "packages": [
    {
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "identifier": "@pedra-ai/mcp",
      "version": "0.4.0",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "name": "PEDRA_API_KEY",
          "description": "Your Pedra API key. Get one at https://app.pedra.ai, then Settings → API.",
          "isRequired": true,
          "isSecret": true
        }
      ]
    }
  ],
  "_meta": {
    "ai.pedra/discovery": {
      "note": "Two ways in. Remote: Streamable HTTP at https://app.pedra.ai/mcp, with OAuth 2.1 (PKCE + dynamic client registration) — the right path for Claude chat and other hosted AI clients. Local: the npm package below, over stdio, authenticated with a PEDRA_API_KEY.",
      "install": "npx -y @pedra-ai/mcp",
      "registry": "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.pedra-ai/pedra-mcp",
      "documentation": "https://pedra.ai/api-documentation/mcp",
      "openapi": "https://pedra.ai/openapi.json",
      "apiBaseUrl": "https://app.pedra.ai",
      "authentication": {
        "type": "apiKey",
        "in": "body",
        "field": "apiKey",
        "note": "The underlying REST API takes the key as an `apiKey` field in the JSON request body, not as an Authorization header. The MCP server reads it from the PEDRA_API_KEY environment variable.",
        "documentation": "https://pedra.ai/api-documentation/authentication",
        "appliesTo": "local stdio package"
      },
      "clientConfigExample": {
        "mcpServers": {
          "pedra": {
            "command": "npx",
            "args": [
              "-y",
              "@pedra-ai/mcp"
            ],
            "env": {
              "PEDRA_API_KEY": "your-api-key"
            }
          }
        }
      },
      "tools": [
        "pedra_furnish",
        "pedra_empty_room",
        "pedra_renovation",
        "pedra_edit_via_prompt",
        "pedra_remove_object",
        "pedra_enhance",
        "pedra_enhance_and_correct_perspective",
        "pedra_sky_blue",
        "pedra_blur",
        "pedra_create_video",
        "pedra_update_video",
        "pedra_generate_voice_script",
        "pedra_generate_voice",
        "pedra_music_library",
        "pedra_credits",
        "pedra_list_properties",
        "pedra_list_property_images",
        "pedra_create_property",
        "pedra_add_images_to_property",
        "pedra_feedback"
      ],
      "remote": {
        "url": "https://app.pedra.ai/mcp",
        "transport": "streamable-http",
        "authorization": {
          "type": "oauth2",
          "protectedResourceMetadata": "https://app.pedra.ai/.well-known/oauth-protected-resource",
          "authorizationServerMetadata": "https://app.pedra.ai/.well-known/oauth-authorization-server",
          "note": "A raw Pedra API key also works as a bearer token: `Authorization: Bearer <PEDRA_API_KEY>`.",
          "scopesSupported": [
            "pedra"
          ],
          "grantTypesSupported": [
            "authorization_code",
            "refresh_token"
          ],
          "codeChallengeMethodsSupported": [
            "S256"
          ],
          "dynamicClientRegistration": true
        }
      }
    }
  }
}
