Verifiziertes AgentReady.md-Zertifikat
Ausgestellt am sig: ba39860a8522015e Verifizieren →

Analysierte URL

https://cartadinamica.com/

Gemessen vor 3 Wochen

Weitere URL analysieren

KI-Ready Score

Befriedigend

von 100

Token-Einsparung

HTML-Tokens 3027
Markdown-Tokens 368
Einsparung 88%

Score-Aufschlüsselung

Zugänglichkeit 50/100
KI-Auffindbarkeit 78/100
Strukturierte Daten 50/100
Semantisches HTML 100/100
Inhaltseffizienz 85/100

Emerging Protocols

5 von 6 erkannt

Well-known-Endpunkte, nach denen KI-Agenten suchen. Erkannt bedeutet, dass ein Agent Ihren Dienst automatisch finden und verbinden kann.

  • OAuth Protected Resource RFC 9728
    /.well-known/oauth-protected-resource
    • resource: carta-restaurante-admin
    • 1 authorization server(s)
  • OAuth Discovery RFC 8414
    /.well-known/oauth-authorization-server
    • issuer: https://api.cartadinamica.com
    • token_endpoint: /admin/auth/login
    • 1 grant type(s)
  • MCP Server Card SEP-1649 draft
    /.well-known/mcp/server-card.json
    • name: carta-restaurante-mcp
    • v0.1.0
  • A2A Agent Card A2A v1.0
    /.well-known/agent-card.json
    • name: Carta de Restaurante Dinamica Agent
    • v0.1.0
  • API Catalog RFC 9727
    /.well-known/api-catalog
  • Agent Skills index Discovery RFC v0.2.0 draft
    /.well-known/agent-skills/index.json
    • 1 skill(s)
    • public-menu-read

Das bleibt nicht so. Monitoring gibt es noch nicht — tragen Sie sich ein, wir melden uns zum Start.

Sie stehen auf der Liste! Wir benachrichtigen Sie, sobald es verfügbar ist.

Was wir gemessen haben Content requires JavaScript rendering

Ihre Seite erfordert JavaScript zum Rendern des Inhalts. Die meisten KI-Agenten führen kein JavaScript aus und sehen daher eine leere Seite.

So implementieren Sie es

Verwenden Sie serverseitiges Rendering (SSR) oder statische Website-Generierung (SSG), um sicherzustellen, dass Inhalte in der ursprünglichen HTML-Antwort verfügbar sind.

In einen Coding-Agenten einfügen, der die Korrektur vornimmt

Was wir gemessen haben No JSON-LD / Schema.org found

Keine Schema.org-strukturierten Daten gefunden. JSON-LD hilft KI-Agenten, faktische, strukturierte Informationen aus Ihren Seiten zu extrahieren.

So implementieren Sie es

Fügen Sie einen <script type="application/ld+json">-Block mit Schema.org-Markup hinzu. Verwenden Sie passende Typen: Article für Blogbeiträge, Product für Produktseiten, Organization für Ihre Unternehmensseite.

In einen Coding-Agenten einfügen, der die Korrektur vornimmt

Was wir gemessen haben No Markdown for Agents support detected

Ihre Website unterstützt kein Markdown for Agents. Dieser Cloudflare-Standard ermöglicht KI-Agenten, Inhalte im Markdown-Format anzufordern und reduziert den Token-Verbrauch um ~80%.

So implementieren Sie es

Implementieren Sie eines oder mehrere: (1) Auf Accept: text/markdown mit Markdown-Inhalt antworten. (2) .md-URLs bereitstellen (z.B. /seite.md). (3) <link rel="alternate" type="text/markdown">-Tags hinzufügen. (4) Link-HTTP-Header für Markdown-Erkennung hinzufügen.

In einen Coding-Agenten einfügen, der die Korrektur vornimmt

Was wir gemessen haben No canonical URL

Keine kanonische URL gefunden. Diese hilft KI-Agenten, die bevorzugte Version einer Seite zu identifizieren und doppelte Inhalte zu vermeiden.

So implementieren Sie es

Fügen Sie ein <link rel="canonical" href="...">-Tag hinzu, das auf die kanonische URL der Seite verweist.

In einen Coding-Agenten einfügen, der die Korrektur vornimmt
Markdown-Tokens: 368
Carta digital para restaurantes

## La unica carta QR con precio dinamico de verdad

Cambia precios en segundos, con historico y trazabilidad completa. Sin PDFs desactualizados, sin llamar a la imprenta. Tu carta, siempre al dia, en el movil de cada cliente.

## Lo que te diferencia de una carta en PDF

### Precio dinamico con historico

Cambia el precio de un plato en un solo paso, con confirmacion doble y trazabilidad completa de cada cambio. Nunca pierdes el rastro de que se cobro y cuando.

### Administracion sin curva de aprendizaje

Un panel pensado para el dia a dia de un restaurante: crear productos, subir fotos y cambiar precios sin depender de un tecnico ni de una imprenta.

### 6 plantillas visuales listas para usar

De movil con fotos a carta clasica sin fotos, taberna rustica o quiosco tactil. Elige el estilo que mejor encaje con tu local, cambia cuando quieras.

### QR propio por restaurante

Genera y descarga el codigo QR de tu carta en un clic, listo para imprimir en mesas y escaparates.

### Selector de pedido para grupos grandes

Cada comensal marca cantidades por plato desde su movil. Cuando llega el turno de pedir, el resumen ya esta listo para ensenarle al camarero.

## Restaurantes que ya confian en nosotros

Entra y descubre como se ve su carta digital en vivo.

## Pide tu demo

Cuentanos sobre tu restaurante y te contactamos para ensenarte la carta en vivo.
Carta de Restaurante Dinamica

Carta digital para restaurantes

# La unica carta QR con precio dinamico de verdad

Cambia precios en segundos, con historico y trazabilidad completa. Sin PDFs desactualizados, sin llamar a la imprenta. Tu carta, siempre al dia, en el movil de cada cliente.

[Quiero una demo](https://cartadinamica.com/#contacto)[Acceso administradores](https://cartadinamica.com/admin/login)

## Lo que te diferencia de una carta en PDF

### Precio dinamico con historico

Cambia el precio de un plato en un solo paso, con confirmacion doble y trazabilidad completa de cada cambio. Nunca pierdes el rastro de que se cobro y cuando.

### Administracion sin curva de aprendizaje

Un panel pensado para el dia a dia de un restaurante: crear productos, subir fotos y cambiar precios sin depender de un tecnico ni de una imprenta.

### 6 plantillas visuales listas para usar

De movil con fotos a carta clasica sin fotos, taberna rustica o quiosco tactil. Elige el estilo que mejor encaje con tu local, cambia cuando quieras.

### QR propio por restaurante

Genera y descarga el codigo QR de tu carta en un clic, listo para imprimir en mesas y escaparates.

### Selector de pedido para grupos grandes

Cada comensal marca cantidades por plato desde su movil. Cuando llega el turno de pedir, el resumen ya esta listo para ensenarle al camarero.

## Restaurantes que ya confian en nosotros

Entra y descubre como se ve su carta digital en vivo.

[

C

Casa Iberica](https://cartadinamica.com/?restaurante=casa-iberica)[![La Leña de Cobo](https://storage.googleapis.com/carta-dinamica-uploads/restaurants/ac58b269534d4cf995cd9c20a5eff3a2.jpg)La Leña de Cobo](https://cartadinamica.com/?restaurante=la-lena-de-cobo)[![Bar Restaurante El Pargo](https://storage.googleapis.com/carta-dinamica-uploads/restaurants/e36a69e5bb9544778beda2f3f6c6c8ec.png)Bar Restaurante El Pargo](https://cartadinamica.com/?restaurante=el-pargo)

## Pide tu demo

Cuentanos sobre tu restaurante y te contactamos para ensenarte la carta en vivo.

Enviar

Laden Sie diese Datei als /index.md auf Ihren Server hoch, damit KI-Agenten auf eine saubere Version Ihrer Seite zugreifen können. Sie können auch die Accept: text/markdown-Inhaltsverhandlung konfigurieren, um sie automatisch auszuliefern.

Unsere Empfehlung

llms.txt herunterladen
# Cartas de Menu Dinamicas

> Precios dinamicos para restaurantes: carta QR con cambio de precio en tiempo real y trazabilidad completa.

## Main
- [Cartas de Menu Dinamicas — Precios dinamicos para restaurantes](https://cartadinamica.com/): Precios dinamicos para restaurantes: carta QR con cambio de precio en tiempo real y trazabilidad completa.
- [Aviso legal](https://cartadinamica.com/aviso-legal)
- [Politica de privacidad](https://cartadinamica.com/politica-de-privacidad)
- [Politica de cookies](https://cartadinamica.com/politica-de-cookies)

Vollständige llms.txt erfordert eine domainweite Analyse (kommt bald)

Laden Sie diese Datei als https://cartadinamica.com/llms.txt im Stammverzeichnis Ihrer Domain hoch. KI-Agenten wie ChatGPT, Claude und Perplexity prüfen diese Datei, um Ihre Website-Struktur zu verstehen.

Diese Website hat bereits eine llms.txt-Datei.

Gültiges Format
# Carta de Restaurante Dinamica

Project: Carta de Restaurante Dinamica (cartadinamica.com)
Description: Plataforma web multi-restaurante de carta QR con precio dinamico, historico de precios y varias plantillas visuales de carta.

## Sitio publico
- `/` — landing comercial, propuesta de valor y formulario de contacto.
- `/restaurantes` — directorio de restaurantes publicos.
- `/?restaurante=<slug>` — carta publica de un restaurante concreto (formato usado por los codigos QR).

## API publica (backend en api.cartadinamica.com, sin autenticacion)
- `GET /health` — estado del servicio.
- `GET /public/restaurants` — listado de restaurantes visibles (nombre, slug, portada).
- `GET /public/menu/{slug}` — carta completa de un restaurante (categorias, productos, precios con IVA, alergenos si estan activados).
- `GET /public/menu/items/{item_id}/price-history` — historico de precio de 30 dias de un producto, si el restaurante lo activa.
- `POST /public/contact-requests` — formulario de contacto de la landing (protegido con limite de tasa).
- `GET /sitemap.xml` — mapa del sitio generado dinamicamente a partir de los restaurantes publicados.

## Acceso administrativo (fuera del alcance de agentes automatizados)
- `/admin/login` y `/superadmin/login` requieren credenciales humanas; ver `/auth.md`.

## Documentacion del proyecto
- `/README.md`
- `/dbv-specs-ops-master/docs/SPECIFICATIONS.md`
- `/dbv-specs-ops-master/docs/ARCHITECTURE.md`
- `/dbv-specs-ops-master/docs/DESIGN.md`

## Notas
- Los precios se muestran siempre con IVA incluido (mercado espanol).
- La carta publica es movil-first; existen 6 plantillas visuales distintas segun el restaurante.
- Un restaurante puede estar deshabilitado (`is_enabled=false`): en ese caso su carta publica no esta disponible aunque el slug exista.

Zugänglichkeit

Inhalt ohne JavaScript verfügbar (20/100)

Content requires JavaScript rendering

Inhalt erscheint früh im HTML (75/100)

Main content starts at 26% of HTML

Angemessene Seitengröße (100/100)

Page size: 10KB

KI-Auffindbarkeit

robots.txt erlaubt KI-Bots (100/100)

All major AI search bots allowed

Markdown for Agents Unterstützung (0/100)
&#10007; Accept: text/markdown &#10007; .md URL &#10007; <link> tag &#10007; Link header
Hat sitemap.xml (100/100)

Sitemap found

Hat robots.txt-Datei (100/100)

robots.txt exists

Hat llms.txt-Datei (100/100)

llms.txt exists and is valid

Hat Content-Signal (robots.txt oder HTTP-Header) (80/100)
&#10003; robots.txt &#10007; HTTP header &#10003; Policy

Strukturierte Daten

Hat Schema.org / JSON-LD (0/100)

No JSON-LD / Schema.org found

Hat Open-Graph-Tags (100/100)

All OG tags present

Hat Meta-Beschreibung (100/100)

Meta description: 106 chars

Hat kanonische URL (0/100)

No canonical URL

Hat lang-Attribut (100/100)

lang="en"

Semantisches HTML

Korrekte Überschriftenhierarchie (100/100)

Clean heading hierarchy

Verwendet article- oder main-Element (100/100)

Has <article>

Verwendet semantische HTML-Elemente (100/100)

10 semantic elements, 11 divs (ratio: 48%)

Aussagekräftige Bild-Alt-Texte (100/100)

2/2 images with meaningful alt text

Geringe div-Verschachtelungstiefe (100/100)

Avg div depth: 2.2, max: 4

Inhaltseffizienz

Gutes Token-Reduktionsverhältnis (100/100)

88% token reduction (HTML→Markdown)

Gutes Inhalt-zu-Rausch-Verhältnis (50/100)

Content ratio: 13.2% (1337 content chars / 10137 HTML bytes)

Angemessenes Seitengewicht (100/100)

HTML size: 10KB

Minimale Inline-Styles (100/100)

0/99 elements with inline styles (0.0%)

{
  "url": "https://cartadinamica.com/",
  "timestamp": 1785994474554,
  "fetch": {
    "mode": "rendered",
    "timeMs": 1435,
    "htmlSizeBytes": 10137,
    "supportsMarkdown": false,
    "markdownAgents": {
      "contentNegotiation": false,
      "mdUrl": {
        "found": false,
        "url": null
      },
      "linkTag": {
        "found": false,
        "url": null
      },
      "linkHeader": {
        "found": false,
        "url": null
      },
      "responseHeaders": {
        "contentSignal": null,
        "xMarkdownTokens": null,
        "vary": null
      },
      "frontmatter": {
        "present": false,
        "fields": [],
        "level": "none"
      },
      "level": "none"
    },
    "statusCode": 200
  },
  "extraction": {
    "title": "Cartas de Menu Dinamicas — Precios dinamicos para restaurantes",
    "excerpt": "Cambia precios en segundos, con historico y trazabilidad completa. Carta QR movil-first para tu restaurante.",
    "byline": null,
    "siteName": "Cartas de Menu Dinamicas",
    "lang": "en",
    "contentLength": 1337,
    "metadata": {
      "description": "Precios dinamicos para restaurantes: carta QR con cambio de precio en tiempo real y trazabilidad completa.",
      "ogTitle": "Cartas de Menu Dinamicas — Precios dinamicos para restaurantes",
      "ogDescription": "Cambia precios en segundos, con historico y trazabilidad completa. Carta QR movil-first para tu restaurante.",
      "ogImage": "https://cartadinamica.com/og-image.png",
      "ogType": "website",
      "canonical": null,
      "lang": "en",
      "schemas": [],
      "robotsMeta": null,
      "author": null,
      "generator": null,
      "markdownAlternateHref": null
    }
  },
  "markdown": "Carta digital para restaurantes\n\n## La unica carta QR con precio dinamico de verdad\n\nCambia precios en segundos, con historico y trazabilidad completa. Sin PDFs desactualizados, sin llamar a la imprenta. Tu carta, siempre al dia, en el movil de cada cliente.\n\n## Lo que te diferencia de una carta en PDF\n\n### Precio dinamico con historico\n\nCambia el precio de un plato en un solo paso, con confirmacion doble y trazabilidad completa de cada cambio. Nunca pierdes el rastro de que se cobro y cuando.\n\n### Administracion sin curva de aprendizaje\n\nUn panel pensado para el dia a dia de un restaurante: crear productos, subir fotos y cambiar precios sin depender de un tecnico ni de una imprenta.\n\n### 6 plantillas visuales listas para usar\n\nDe movil con fotos a carta clasica sin fotos, taberna rustica o quiosco tactil. Elige el estilo que mejor encaje con tu local, cambia cuando quieras.\n\n### QR propio por restaurante\n\nGenera y descarga el codigo QR de tu carta en un clic, listo para imprimir en mesas y escaparates.\n\n### Selector de pedido para grupos grandes\n\nCada comensal marca cantidades por plato desde su movil. Cuando llega el turno de pedir, el resumen ya esta listo para ensenarle al camarero.\n\n## Restaurantes que ya confian en nosotros\n\nEntra y descubre como se ve su carta digital en vivo.\n\n## Pide tu demo\n\nCuentanos sobre tu restaurante y te contactamos para ensenarte la carta en vivo.\n",
  "fullPageMarkdown": "Carta de Restaurante Dinamica\n\nCarta digital para restaurantes\n\n# La unica carta QR con precio dinamico de verdad\n\nCambia precios en segundos, con historico y trazabilidad completa. Sin PDFs desactualizados, sin llamar a la imprenta. Tu carta, siempre al dia, en el movil de cada cliente.\n\n[Quiero una demo](https://cartadinamica.com/#contacto)[Acceso administradores](https://cartadinamica.com/admin/login)\n\n## Lo que te diferencia de una carta en PDF\n\n### Precio dinamico con historico\n\nCambia el precio de un plato en un solo paso, con confirmacion doble y trazabilidad completa de cada cambio. Nunca pierdes el rastro de que se cobro y cuando.\n\n### Administracion sin curva de aprendizaje\n\nUn panel pensado para el dia a dia de un restaurante: crear productos, subir fotos y cambiar precios sin depender de un tecnico ni de una imprenta.\n\n### 6 plantillas visuales listas para usar\n\nDe movil con fotos a carta clasica sin fotos, taberna rustica o quiosco tactil. Elige el estilo que mejor encaje con tu local, cambia cuando quieras.\n\n### QR propio por restaurante\n\nGenera y descarga el codigo QR de tu carta en un clic, listo para imprimir en mesas y escaparates.\n\n### Selector de pedido para grupos grandes\n\nCada comensal marca cantidades por plato desde su movil. Cuando llega el turno de pedir, el resumen ya esta listo para ensenarle al camarero.\n\n## Restaurantes que ya confian en nosotros\n\nEntra y descubre como se ve su carta digital en vivo.\n\n[\n\nC\n\nCasa Iberica](https://cartadinamica.com/?restaurante=casa-iberica)[![La Leña de Cobo](https://storage.googleapis.com/carta-dinamica-uploads/restaurants/ac58b269534d4cf995cd9c20a5eff3a2.jpg)La Leña de Cobo](https://cartadinamica.com/?restaurante=la-lena-de-cobo)[![Bar Restaurante El Pargo](https://storage.googleapis.com/carta-dinamica-uploads/restaurants/e36a69e5bb9544778beda2f3f6c6c8ec.png)Bar Restaurante El Pargo](https://cartadinamica.com/?restaurante=el-pargo)\n\n## Pide tu demo\n\nCuentanos sobre tu restaurante y te contactamos para ensenarte la carta en vivo.\n\nEnviar\n",
  "markdownStats": {
    "images": 0,
    "links": 0,
    "tables": 0,
    "codeBlocks": 0,
    "headings": 9
  },
  "tokens": {
    "htmlTokens": 3027,
    "markdownTokens": 368,
    "reduction": 2659,
    "reductionPercent": 88
  },
  "score": {
    "score": 68,
    "grade": "C",
    "rubricVersion": 2,
    "dimensions": {
      "accessibility": {
        "score": 50,
        "weight": 30,
        "grade": "D",
        "checks": {
          "content_without_js": {
            "score": 20,
            "weight": 55,
            "evidence": "proven",
            "details": "Content requires JavaScript rendering"
          },
          "fast_content_position": {
            "score": 75,
            "weight": 25,
            "evidence": "plausible",
            "details": "Main content starts at 26% of HTML"
          },
          "reasonable_page_size": {
            "score": 100,
            "weight": 20,
            "evidence": "plausible",
            "details": "Page size: 10KB"
          }
        }
      },
      "aiDiscoverability": {
        "score": 78,
        "weight": 25,
        "grade": "B",
        "checks": {
          "robots_allows_ai_bots": {
            "score": 100,
            "weight": 35,
            "evidence": "proven",
            "details": "All major AI search bots allowed"
          },
          "supports_markdown_negotiation": {
            "score": 0,
            "weight": 20,
            "evidence": "plausible",
            "details": "No Markdown for Agents support detected"
          },
          "has_sitemap": {
            "score": 100,
            "weight": 15,
            "evidence": "plausible",
            "details": "Sitemap found"
          },
          "has_robots_txt": {
            "score": 100,
            "weight": 10,
            "evidence": "plausible",
            "details": "robots.txt exists"
          },
          "has_llms_txt": {
            "score": 100,
            "weight": 10,
            "evidence": "speculative",
            "details": "llms.txt exists and is valid"
          },
          "has_content_signals": {
            "score": 80,
            "weight": 10,
            "evidence": "speculative",
            "details": "robots.txt: ai-train=no, search=yes, ai-input=yes | Policy included"
          }
        }
      },
      "structuredData": {
        "score": 50,
        "weight": 20,
        "grade": "D",
        "checks": {
          "has_schema_org": {
            "score": 0,
            "weight": 35,
            "evidence": "proven",
            "details": "No JSON-LD / Schema.org found"
          },
          "has_open_graph": {
            "score": 100,
            "weight": 20,
            "evidence": "plausible",
            "details": "All OG tags present"
          },
          "has_meta_description": {
            "score": 100,
            "weight": 20,
            "evidence": "plausible",
            "details": "Meta description: 106 chars"
          },
          "has_canonical_url": {
            "score": 0,
            "weight": 15,
            "evidence": "plausible",
            "details": "No canonical URL"
          },
          "has_lang_attribute": {
            "score": 100,
            "weight": 10,
            "evidence": "plausible",
            "details": "lang=\"en\""
          }
        }
      },
      "semanticHtml": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "proper_heading_hierarchy": {
            "score": 100,
            "weight": 30,
            "evidence": "plausible",
            "details": "Clean heading hierarchy"
          },
          "uses_article_or_main": {
            "score": 100,
            "weight": 25,
            "evidence": "plausible",
            "details": "Has <article>"
          },
          "semantic_elements": {
            "score": 100,
            "weight": 20,
            "evidence": "plausible",
            "details": "10 semantic elements, 11 divs (ratio: 48%)"
          },
          "meaningful_alt_texts": {
            "score": 100,
            "weight": 15,
            "evidence": "plausible",
            "details": "2/2 images with meaningful alt text"
          },
          "low_div_nesting": {
            "score": 100,
            "weight": 10,
            "evidence": "speculative",
            "details": "Avg div depth: 2.2, max: 4"
          }
        }
      },
      "contentEfficiency": {
        "score": 85,
        "weight": 10,
        "grade": "B",
        "checks": {
          "token_reduction_ratio": {
            "score": 100,
            "weight": 40,
            "evidence": "speculative",
            "details": "88% token reduction (HTML→Markdown)"
          },
          "content_to_noise_ratio": {
            "score": 50,
            "weight": 30,
            "evidence": "speculative",
            "details": "Content ratio: 13.2% (1337 content chars / 10137 HTML bytes)"
          },
          "reasonable_page_weight": {
            "score": 100,
            "weight": 20,
            "evidence": "speculative",
            "details": "HTML size: 10KB"
          },
          "minimal_inline_styles": {
            "score": 100,
            "weight": 10,
            "evidence": "speculative",
            "details": "0/99 elements with inline styles (0.0%)"
          }
        }
      }
    }
  },
  "recommendations": [
    {
      "id": "provide_content_without_js",
      "priority": "critical",
      "category": "accessibility",
      "titleKey": "rec.provide_content_without_js.title",
      "descriptionKey": "rec.provide_content_without_js.description",
      "howToKey": "rec.provide_content_without_js.howto",
      "effort": "significant",
      "estimatedImpact": 13.2,
      "maxImpact": 16.5,
      "evidence": "proven",
      "checkScore": 20,
      "checkDetails": "Content requires JavaScript rendering"
    },
    {
      "id": "add_schema_org",
      "priority": "critical",
      "category": "structuredData",
      "titleKey": "rec.add_schema_org.title",
      "descriptionKey": "rec.add_schema_org.description",
      "howToKey": "rec.add_schema_org.howto",
      "effort": "moderate",
      "estimatedImpact": 7,
      "maxImpact": 7,
      "evidence": "proven",
      "checkScore": 0,
      "checkDetails": "No JSON-LD / Schema.org found"
    },
    {
      "id": "add_markdown_negotiation",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_markdown_negotiation.title",
      "descriptionKey": "rec.add_markdown_negotiation.description",
      "howToKey": "rec.add_markdown_negotiation.howto",
      "effort": "significant",
      "estimatedImpact": 5,
      "maxImpact": 5,
      "evidence": "plausible",
      "checkScore": 0,
      "checkDetails": "No Markdown for Agents support detected"
    },
    {
      "id": "add_canonical_url",
      "priority": "high",
      "category": "structuredData",
      "titleKey": "rec.add_canonical_url.title",
      "descriptionKey": "rec.add_canonical_url.description",
      "howToKey": "rec.add_canonical_url.howto",
      "effort": "quick-win",
      "estimatedImpact": 3,
      "maxImpact": 3,
      "evidence": "plausible",
      "checkScore": 0,
      "checkDetails": "No canonical URL"
    }
  ],
  "llmsTxtPreview": "# Cartas de Menu Dinamicas\n\n> Precios dinamicos para restaurantes: carta QR con cambio de precio en tiempo real y trazabilidad completa.\n\n## Main\n- [Cartas de Menu Dinamicas — Precios dinamicos para restaurantes](https://cartadinamica.com/): Precios dinamicos para restaurantes: carta QR con cambio de precio en tiempo real y trazabilidad completa.\n- [Aviso legal](https://cartadinamica.com/aviso-legal)\n- [Politica de privacidad](https://cartadinamica.com/politica-de-privacidad)\n- [Politica de cookies](https://cartadinamica.com/politica-de-cookies)\n\n",
  "llmsTxtExisting": "# Carta de Restaurante Dinamica\n\nProject: Carta de Restaurante Dinamica (cartadinamica.com)\nDescription: Plataforma web multi-restaurante de carta QR con precio dinamico, historico de precios y varias plantillas visuales de carta.\n\n## Sitio publico\n- `/` — landing comercial, propuesta de valor y formulario de contacto.\n- `/restaurantes` — directorio de restaurantes publicos.\n- `/?restaurante=<slug>` — carta publica de un restaurante concreto (formato usado por los codigos QR).\n\n## API publica (backend en api.cartadinamica.com, sin autenticacion)\n- `GET /health` — estado del servicio.\n- `GET /public/restaurants` — listado de restaurantes visibles (nombre, slug, portada).\n- `GET /public/menu/{slug}` — carta completa de un restaurante (categorias, productos, precios con IVA, alergenos si estan activados).\n- `GET /public/menu/items/{item_id}/price-history` — historico de precio de 30 dias de un producto, si el restaurante lo activa.\n- `POST /public/contact-requests` — formulario de contacto de la landing (protegido con limite de tasa).\n- `GET /sitemap.xml` — mapa del sitio generado dinamicamente a partir de los restaurantes publicados.\n\n## Acceso administrativo (fuera del alcance de agentes automatizados)\n- `/admin/login` y `/superadmin/login` requieren credenciales humanas; ver `/auth.md`.\n\n## Documentacion del proyecto\n- `/README.md`\n- `/dbv-specs-ops-master/docs/SPECIFICATIONS.md`\n- `/dbv-specs-ops-master/docs/ARCHITECTURE.md`\n- `/dbv-specs-ops-master/docs/DESIGN.md`\n\n## Notas\n- Los precios se muestran siempre con IVA incluido (mercado espanol).\n- La carta publica es movil-first; existen 6 plantillas visuales distintas segun el restaurante.\n- Un restaurante puede estar deshabilitado (`is_enabled=false`): en ese caso su carta publica no esta disponible aunque el slug exista.",
  "emergingProtocols": {
    "oauthProtectedResource": {
      "exists": true,
      "url": "https://cartadinamica.com/.well-known/oauth-protected-resource",
      "resource": "carta-restaurante-admin",
      "authorizationServers": [
        "/.well-known/oauth-authorization-server"
      ],
      "scopesSupported": null
    },
    "oauthDiscovery": {
      "exists": true,
      "url": "https://cartadinamica.com/.well-known/oauth-authorization-server",
      "issuer": "https://api.cartadinamica.com",
      "authorizationEndpoint": null,
      "tokenEndpoint": "/admin/auth/login",
      "grantTypesSupported": [
        "password"
      ],
      "scopesSupported": null
    },
    "mcpServerCard": {
      "exists": true,
      "url": "https://cartadinamica.com/.well-known/mcp.json",
      "draft": true,
      "name": "carta-restaurante-mcp",
      "version": "0.1.0",
      "description": "MCP metadata placeholder for future integrations. No MCP server is deployed yet.",
      "transport": null,
      "tools": null,
      "resources": null,
      "prompts": null
    },
    "a2aAgentCard": {
      "exists": true,
      "url": "https://cartadinamica.com/.well-known/agent.json",
      "name": "Carta de Restaurante Dinamica Agent",
      "version": "0.1.0",
      "description": "Agent discovery card for Carta de Restaurante Dinamica, a multi-restaurant dynamic-pricing QR menu platform.",
      "capabilities": null,
      "skills": null,
      "endpoint": null
    },
    "apiCatalog": {
      "exists": false,
      "url": "https://cartadinamica.com/.well-known/api-catalog"
    },
    "agentSkills": {
      "exists": true,
      "url": "https://cartadinamica.com/.well-known/agent-skills/index.json",
      "draft": true,
      "schema": null,
      "skills": 1,
      "names": [
        "public-menu-read"
      ]
    },
    "count": 5,
    "total": 6
  },
  "botAccess": {
    "probed": true,
    "bot": "OAI-SearchBot",
    "controlStatus": 200,
    "botStatus": 200,
    "discriminates": false,
    "refusedAsBot": false,
    "edge": null,
    "verifiable": false,
    "detail": "This origin answers OAI-SearchBot exactly as it answers any other client (200). No edge-level filtering of AI crawlers observed."
  },
  "snippets": [
    {
      "id": "add_canonical_url",
      "title": "Add canonical URL",
      "description": "The canonical URL tells AI agents which version of the page is the \"official\" one, avoiding duplicate content issues.",
      "language": "html",
      "code": "<link rel=\"canonical\" href=\"https://cartadinamica.com/\">",
      "filename": "<head>"
    },
    {
      "id": "add_schema_org",
      "title": "Add Schema.org JSON-LD",
      "description": "Structured data helps AI agents understand the type, author, and purpose of your content.",
      "language": "html",
      "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"WebPage\",\n  \"name\": \"Cartas de Menu Dinamicas — Precios dinamicos para restaurantes\",\n  \"description\": \"Precios dinamicos para restaurantes: carta QR con cambio de precio en tiempo real y trazabilidad completa.\",\n  \"url\": \"https://cartadinamica.com/\",\n  \"inLanguage\": \"en\",\n  \"isPartOf\": {\n    \"@type\": \"WebSite\",\n    \"name\": \"Cartas de Menu Dinamicas\"\n  }\n}\n</script>",
      "filename": "<head>"
    },
    {
      "id": "add_markdown_negotiation",
      "title": "Support Markdown for Agents",
      "description": "Let AI agents request a clean Markdown version of any page via content negotiation, .md alternate URLs, link tags or Link headers.",
      "language": "html",
      "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">",
      "filename": "<head>",
      "stacks": [
        {
          "id": "html",
          "label": "HTML <head>",
          "language": "html",
          "filename": "<head>",
          "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        },
        {
          "id": "express",
          "label": "Express",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\napp.get('/page', (req, res) => {\n  res.setHeader('Vary', 'Accept');\n  res.setHeader('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    res.type('text/markdown; charset=utf-8');\n    return res.send(renderMarkdown('page'));\n  }\n  res.render('page');\n});"
        },
        {
          "id": "fastify",
          "label": "Fastify",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n  reply.header('Vary', 'Accept');\n  reply.header('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n  }\n  return reply.view('/page.ejs');\n});"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "app/page/route.ts",
          "code": "// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n  const accept = req.headers.get('accept') || '';\n  if (accept.includes('text/markdown')) {\n    return new Response(await renderMarkdown('page'), {\n      headers: {\n        'Content-Type': 'text/markdown; charset=utf-8',\n        'Vary': 'Accept',\n      },\n    });\n  }\n  // Fall through to the page component\n  return new Response(null, { status: 404 });\n}"
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// Mechanism 1: respond to Accept: text/markdown on the same URL\nadd_action('template_redirect', function () {\n    if (!is_singular()) return;\n    $accept = $_SERVER['HTTP_ACCEPT'] ?? '';\n    if (strpos($accept, 'text/markdown') === false) return;\n    header('Content-Type: text/markdown; charset=utf-8');\n    header('Vary: Accept');\n    $post = get_queried_object();\n    echo \"# \" . get_the_title($post) . \"\\n\\n\";\n    echo wp_strip_all_tags(apply_filters('the_content', $post->post_content));\n    exit;\n});"
        },
        {
          "id": "static",
          "label": "Hugo / Jekyll / Astro",
          "language": "txt",
          "filename": "static/page.md",
          "code": "# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in <head>:\n#   <link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        }
      ]
    }
  ]
}

Nutzen Sie unsere API, um dies programmatisch abzurufen (kommt bald)

Dieses JSON ist für den internen Gebrauch bestimmt — im Gegensatz zu den Markdown- und llms.txt-Dateien soll es nicht auf Ihre Website hochgeladen werden. Speichern Sie es als Ausgangswert, um Ihren Score im Zeitverlauf zu verfolgen, teilen Sie es mit Ihrem Entwicklerteam oder integrieren Sie es in Ihre CI/CD-Pipeline.

Teilen Sie Ihre Ergebnisse

Oder lass dir von einer KI beim Verbessern helfen

Eine zweite Meinung?

Cloudflare betreibt ebenfalls einen kostenlosen Scanner, und er stellt eine andere Frage. Er bewertet, was Ihre Website für Agenten zum Aufrufen veröffentlicht: MCP Server Cards, Agent Skills, API-Kataloge, DNS-Einträge. Wir bewerten, ob ein Agent Ihre Inhalte erreichen, lesen und verstehen kann. Eine Website kann bei dem einen gut und bei dem anderen schlecht abschneiden — rechnen Sie mit zwei verschiedenen Zahlen: Es sind Antworten auf zwei verschiedene Fragen, und beide lohnen sich.

cartadinamica.com mit Cloudflare scannen

Badge einbetten

Fügen Sie dieses Badge zu Ihrer Website hinzu. Es aktualisiert sich automatisch, wenn sich Ihr KI-Bereitschafts-Score ändert.

AgentReady.md score for cartadinamica.com
Script Empfohlen
<script src="https://agentready.md/badge.js" data-id="0360d605-0561-4fc7-b6ea-3ee15d7bca2b" data-domain="cartadinamica.com"></script>
Markdown
[![AgentReady.md score for cartadinamica.com](https://agentready.md/badge/cartadinamica.com.svg)](https://agentready.md/de/r/0360d605-0561-4fc7-b6ea-3ee15d7bca2b)

Demnächst: Vollständige Domain-Analyse

Crawlen Sie Ihre gesamte Domain, generieren Sie llms.txt und überwachen Sie Ihren KI-Bereitschaftswert im Zeitverlauf. Tragen Sie sich in die Warteliste ein.

Sie stehen auf der Liste! Wir benachrichtigen Sie, sobald es verfügbar ist.