LocalSchema

Generate and validate LocalBusiness JSON-LD for local SEO. Free tools, no key needed.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
98%
Integridad del esquema
84%
Calidad de los nombres
100%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,572Tokens (definiciones de herramientas)
~2.5 KBTamaño de respuesta típico
Impacto significativo en la atención (2.79% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "localschema": {
      "url": "https://local-schema-beacon.lovable.app/mcp"
    }
  }
}

Puntos de conexión remotos

https://local-schema-beacon.lovable.app/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (11)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢list_business_types

List the schema.org LocalBusiness subtypes LocalSchema supports (Dentist, Plumber, Restaurant, …). Use the most specific one as businessType.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢generate_schema(businessType, name, alternateName, legalName, description, ...)

Generate LocalBusiness JSON-LD (schema.org) from business details and validate it against Google's rich result rules. Returns the JSON-LD, a ready-to-paste <script> tag and issues to fix. No API key needed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "businessType": {
      "default": "LocalBusiness",
      "description": "schema.org type, e.g. Dentist, Plumber, Restaurant. See /business-types.",
      "type": "string",
      "maxLength": 60
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Public business name"
    },
    "alternateName": {
      "type": "string",
      "maxLength": 200
    },
    "legalName": {
      "type": "string",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "slogan": {
      "type": "string",
      "maxLength": 200
    },
    "url": {
      "description": "Website URL (https://…)",
      "type": "string",
      "maxLength": 2000
    },
    "logo": {
      "type": "string",
      "maxLength": 2000
    },
    "images": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2000
      }
    },
    "foundingDate": {
      "type": "string",
      "pattern": "^\\d{4}(-\\d{2}-\\d{2})?$"
    },
    "telephone": {
      "description": "International format, e.g. +31 50 123 4567",
      "type": "string",
      "maxLength": 40
    },
    "email": {
      "type": "string",
      "maxLength": 200
    },
    "priceRange": {
      "description": "e.g. €€ or €20-€80",
      "type": "string",
      "maxLength": 30
    },
    "currenciesAccepted": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 3
      }
    },
    "paymentAccepted": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      }
    },
    "knowsLanguage": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      }
    },
    "address": {
      "type": "object",
      "properties": {
        "streetAddress": {
          "type": "string",
          "maxLength": 200
        },
        "addressLocality": {
          "type": "string",
          "maxLength": 120
        },
        "addressRegion": {
          "type": "string",
          "maxLength": 120
        },
        "postalCode": {
          "type": "string",
          "maxLength": 20
        },
        "addressCountry": {
          "description": "ISO 3166-1 alpha-2, e.g. NL or US",
          "type": "string",
          "maxLength": 60
        }
      }
    },
    "serviceAreaOnly": {
      "description": "True for service-area businesses without a storefront (address is hidden)",
      "type": "boolean"
    },
    "geo": {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        }
      },
      "required": [
        "latitude",
        "longitude"
      ]
    },
    "hasMap": {
      "type": "string",
      "maxLength": 2000
    },
    "areaServed": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 120
      }
    },
    "openingHours": {
      "description": "Regular hours. Days not listed are closed. Use two entries for split hours.",
      "maxItems": 21,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "days": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Day names or ranges: \"Mo-Fr\", [\"Saturday\"]"
          },
          "opens": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "closes": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "allDay": {
            "description": "Open 24 hours on these days",
            "type": "boolean"
          }
        },
        "required": [
          "days"
        ]
      }
    },
    "specialHours": {
      "description": "Holiday exceptions (LocalSchema Pro — omitted from free output)",
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 80
          },
          "validFrom": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "validThrough": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "closed": {
            "type": "boolean"
          },
          "opens": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "closes": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          }
        },
        "required": [
          "validFrom"
        ]
      }
    },
    "services": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "price": {
            "type": "number",
            "minimum": 0
          },
          "priceMax": {
            "type": "number",
            "minimum": 0
          },
          "priceType": {
            "type": "string",
            "enum": [
              "fixed",
              "from",
              "range"
            ]
          },
          "unitText": {
            "type": "string",
            "maxLength": 40
          },
          "url": {
            "type": "string",
            "maxLength": 2000
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "rating": {
      "description": "LocalSchema Pro — omitted from free output",
      "type": "object",
      "properties": {
        "ratingValue": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "reviewCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "bestRating": {
          "type": "number",
          "exclusiveMinimum": 0
        }
      },
      "required": [
        "ratingValue",
        "reviewCount"
      ]
    },
    "reviews": {
      "description": "LocalSchema Pro — omitted from free output",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "body": {
            "type": "string",
            "maxLength": 2000
          },
          "datePublished": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          }
        },
        "required": [
          "author",
          "rating"
        ]
      }
    },
    "sameAs": {
      "description": "Google Business Profile, Yelp, Facebook, LinkedIn… profile URLs",
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2000
      }
    },
    "servesCuisine": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      }
    },
    "menu": {
      "type": "string",
      "maxLength": 2000
    },
    "acceptsReservations": {
      "type": "boolean"
    },
    "medicalSpecialty": {
      "type": "string",
      "maxLength": 80
    },
    "isAcceptingNewPatients": {
      "type": "boolean"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢validate_schema(code)

Validate existing LocalBusiness structured data: paste JSON-LD, a <script type="application/ld+json"> tag or a whole HTML page. Reports errors, missing recommended fields and best-practice warnings. No API key needed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600000,
      "description": "JSON-LD text, a script tag, or full page HTML"
    }
  },
  "required": [
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢validate_page(url)

Fetch a public web page and audit its structured data: every JSON-LD block and type, the LocalBusiness markup's errors and warnings, LocalSchema embeds on the page and concrete recommendations. No API key needed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 4,
      "maxLength": 2000,
      "description": "Public http(s) address, e.g. https://example.com/contact"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_embed_snippet(key)

Get the install snippet and live status for a LocalSchema hosted embed key (loc_… for one location, org_… for a client with several). Paste the script tag once; published updates reach the site automatically.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "pattern": "^(?:loc|org)_[a-z0-9]{6,32}$",
      "description": "Hosted embed key"
    }
  },
  "required": [
    "key"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_clients

List the agency's clients (brands) with their location counts, client-wide embed script and white-label report link. Needs a LocalSchema Pro API key in the request headers.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟡save_client(client_id, name, website, contact_name, contact_email, ...)

Create a client (brand) or update one by client_id, and optionally turn its white-label health report link on or off. Needs a LocalSchema Pro API key in the request headers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "client_id": {
      "description": "Update this client. Omit to create one.",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "name": {
      "description": "Client (brand) name. Required when creating; omit to keep it when updating.",
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "website": {
      "description": "Brand website; links every branch to one Organization in the client embed. When updating, omit to keep it or send \"\" to clear it.",
      "type": "string",
      "maxLength": 500
    },
    "contact_name": {
      "description": "Contact person. When updating, omit to keep it or send \"\" to clear it.",
      "type": "string",
      "maxLength": 160
    },
    "contact_email": {
      "description": "Contact email. When updating, omit to keep it or send \"\" to clear it.",
      "type": "string",
      "maxLength": 255
    },
    "report": {
      "description": "true turns the client's white-label health report link on, false turns it off. Omit to leave it.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_locations(client_id)

List the business locations saved in the LocalSchema account: publish state, hosted embed script, website and latest health check score. Needs a LocalSchema Pro API key in the request headers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "client_id": {
      "description": "Only this client's locations",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_location(location_id)

Get one saved location: its business fields (in the same shape save_location accepts), the current JSON-LD, the published JSON-LD, validation issues and embed details. Needs a LocalSchema Pro API key in the request headers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Location id from list_locations"
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡save_location(location_id, client_id, website_url, publish, business)

Save a business location to the LocalSchema account — create one, or update one by location_id (only the business fields you send change) — and optionally publish it to its hosted embed so the client's site updates without code changes. Needs a LocalSchema Pro API key in the request headers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Update this location. Omit to create a new one (counts toward the plan's location limit).",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "client_id": {
      "description": "Assign to a client (see list_clients); null removes the assignment. Omit to keep the current client.",
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "website_url": {
      "description": "Page where the hosted embed is installed; health checks scan it. Defaults to business.url.",
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "publish": {
      "description": "Publish to the hosted embed now. Default false (saved as a draft).",
      "type": "boolean"
    },
    "business": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Business fields in the same shape as generate_schema (name, businessType, address, openingHours, services, …). When updating, only the fields you send change; address merges field by field, lists are replaced."
    }
  },
  "required": [
    "business"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢run_health_check(location_id)

Run a schema health check for a saved location: validates its markup, scans its website for the embed and conflicting hard-coded schema, detects unpublished changes and records the result in the dashboard and client reports. Needs a LocalSchema Pro API key in the request headers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Location id from list_locations"
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada11 herramientas