API and MCP server
Generate Schema.org JSON-LD over HTTP, or from Claude, Cursor, and other AI assistants through MCP. Same builders and Google checks as the web generators. No API key.
Use it from Claude, Cursor, or any MCP client
The MCP server exposes four tools: list_schema_types, describe_schema_type, generate_schema, and validate_jsonld, which checks markup for any Schema.org type against the full vocabulary. Ask your assistant for "Product schema for this page" and it looks up the fields, fills them from the page, and hands back a script tag along with anything Google would reject.
Claude Code
claude mcp add --transport http schema-generator https://schemagenerator.dev/api/mcpCursor, Claude Desktop, and other clients
{
"mcpServers": {
"schema-generator": {
"type": "http",
"url": "https://schemagenerator.dev/api/mcp"
}
}
}HTTP API
POST /api/v1/generate takes a type and an object of field values. It returns the JSON-LD, a ready-to-paste script tag, and issues: errors for anything that blocks Google's rich result, and warnings for empty fields Google recommends. ok is true when there are no errors.
curl -X POST https://schemagenerator.dev/api/v1/generate \
-H "Content-Type: application/json" \
-d '{
"type": "organization",
"data": {
"name": "Northwind Studio",
"url": "https://northwind.example",
"logo": "https://northwind.example/logo.png"
}
}'{
"type": "organization",
"jsonld": {
"@context": "https://schema.org",
"@type": "Organization",
"name": "Northwind Studio",
"url": "https://northwind.example",
"logo": "https://northwind.example/logo.png"
},
"scriptTag": "<script type=\"application/ld+json\">…</script>",
"issues": [
{
"level": "warning",
"field": "description",
"message": "Description is recommended by Google."
},
{
"level": "warning",
"field": "sameAs",
"message": "Profiles elsewhere is recommended by Google."
},
{
"level": "warning",
"field": "address",
"message": "Address is recommended by Google."
},
{
"level": "warning",
"field": "telephone",
"message": "Phone is recommended by Google."
},
{
"level": "warning",
"field": "email",
"message": "Email is recommended by Google."
}
],
"missingRequiredFields": [],
"ok": true
}Endpoints
GET /api/v1/schema-typeslists supported types and their required fields.GET /api/v1/schema-types?type=productreturns the fields for one type, with Google's tier for each (required, recommended, optional), nested fields, allowed values, and a complete example input.POST /api/v1/generatebuilds JSON-LD.POST /api/v1/validatetakes{"jsonld": …}(an object, or a string of JSON or script tags) and checks it against the full Schema.org vocabulary: unknown types and properties, properties on the wrong type, and invalid values. It works for every type, not only the ones above.- OpenAPI 3.1 description
Supported types
Pass any of these as type. Schema.org names such as FAQPage or LocalBusiness also work.
Limits and expectations
- Requests are capped at 100 KB. There is no key and no quota today.
- The API builds markup from what you send and doesn't store it. It does not fetch your page, so it can't check that the markup matches what visitors see; Google requires that it does.
- Validate output in Google's Rich Results Test before shipping. Valid markup makes a page eligible for rich results; it does not guarantee them.