Skip to main content
Glama

Dante IX — Brand & GEO Intelligence

Forge Technical GEO Shield (llms.txt & Schema.org JSON-LD)

dante.forge_geo_shield
Read-onlyIdempotent

Generate production-ready technical Generative Engine Optimization (GEO) artifacts for a brand domain: /llms.txt manifest, /.well-known/ai-catalog.json, Schema.org JSON-LD (Organization, Service, FAQPage), and robots.txt rules for AI crawlers (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended). Returns a JSON bundle (llms_txt_content, ai_catalog_json, json_ld_script, robots_txt_snippet, and domain_seal_sha256). Side effects & latency: Read-only deterministic synthesis (<300ms); never modifies external websites and makes zero LLM calls. Constraints: brand_name must match the stem of domain_url, and URLs in official_facts must belong to domain_url. Auth & quota: Consumes 0 live audit credits. Without DANTE_API_KEY, returns a 30% preview at $0 cost; with a paid dnt_live_ key (PRO_INHOUSE 1 domain or AGENCY_PARTNER 10 domains), returns 100% deployable files sealed for that domain. When to use: Use dante.forge_geo_shield to generate /llms.txt and JSON-LD files for AI crawler discovery. Use dante.remediate_hallucination instead when countering a specific false AI claim.

Input Schema

NameRequiredDescriptionDefault
langNoLanguage for generated `/llms.txt` and `JSON-LD` descriptions: 'en' for English or 'es' for Spanish (defaults to 'es').es
brand_nameYesOfficial brand or organization name (2 to 80 characters; must correspond to the root stem of `domain_url`, e.g. 'Acme Cloud').
domain_urlYesCanonical HTTPS website URL for the brand (e.g. 'https://acmecloud.com'). Bound to the license's allowed domain slots.
competitorsNoOptional list of competitor names for semantic disambiguation in `disambiguatingDescription` (0 to 15 strings).
official_factsYesNon-empty list of verified ground-truth facts, pricing, certifications, or SLAs (1 to 30 strings; any embedded URLs must belong to `domain_url`).
industry_contextYesPrimary industry category, target audience, and market positioning (4 to 240 characters).
products_or_servicesYesNon-empty list of core products, services, or clinical/technical offerings (1 to 25 strings).

Output Schema

NameRequiredDescriptionDefault
brand_nameNoCanonical brand name.
domain_urlNoNormalized HTTPS domain URL.
json_ld_scriptNoHTML `<script type='application/ld+json'>` block.
ai_catalog_jsonNoJSON payload for `/.well-known/ai-catalog.json`.
llms_txt_contentNoComplete `/llms.txt` markdown manifest for AI crawlers.
domain_seal_sha256No64-character hex SHA-256 authenticity seal verifiable at `https://danteix.com/api/mcp/verify-seal`.
robots_txt_snippetNoCrawler allow rules for `robots.txt`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • changedInput schema / properties / brand_name / description
      Previous value: -"Official brand or organization name (2..80 chars)"New value: +"Official brand or organization name (2 to 80 characters; must correspond to the root stem of `domain_url`, e.g. 'Acme Cloud')."
    • addedInput schema / properties / brand_name / maxLength
      Added value: +80
    • addedInput schema / properties / brand_name / minLength
      Added value: +2
    • changedInput schema / properties / competitors / description
      Previous value: -"Optional list of compared competitors"New value: +"Optional list of competitor names for semantic disambiguation in `disambiguatingDescription` (0 to 15 strings)."
    • addedInput schema / properties / competitors / maxItems
      Added value: +15
    • changedInput schema / properties / domain_url / description
      Previous value: -"Canonical website URL (e.g. https://mimarca.com)"New value: +"Canonical HTTPS website URL for the brand (e.g. 'https://acmecloud.com'). Bound to the license's allowed domain slots."
    • addedInput schema / properties / domain_url / maxLength
      Added value: +253
    • addedInput schema / properties / domain_url / minLength
      Added value: +8
    • changedInput schema / properties / industry_context / description
      Previous value: -"Industry category and market positioning"New value: +"Primary industry category, target audience, and market positioning (4 to 240 characters)."
    • addedInput schema / properties / industry_context / maxLength
      Added value: +240
    • addedInput schema / properties / industry_context / minLength
      Added value: +4
    • changedInput schema / properties / lang / description
      Previous value: -"Output language: 'es' or 'en'"New value: +"Language for generated `/llms.txt` and `JSON-LD` descriptions: 'en' for English or 'es' for Spanish (defaults to 'es')."
    • addedInput schema / properties / lang / enum
      Added value: +[
      +  "es",
      +  "en"
      +]
    • changedInput schema / properties / official_facts / description
      Previous value: -"Verified ground-truth facts, SLAs, pricing, or certifications"New value: +"Non-empty list of verified ground-truth facts, pricing, certifications, or SLAs (1 to 30 strings; any embedded URLs must belong to `domain_url`)."
    • addedInput schema / properties / official_facts / maxItems
      Added value: +30
    • addedInput schema / properties / official_facts / minItems
      Added value: +1
    • changedInput schema / properties / products_or_services / description
      Previous value: -"List of core products, services, or technical capabilities"New value: +"Non-empty list of core products, services, or clinical/technical offerings (1 to 25 strings)."
    • addedInput schema / properties / products_or_services / maxItems
      Added value: +25
    • addedInput schema / properties / products_or_services / minItems
      Added value: +1
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "ai_catalog_json": {
      +      "description": "JSON payload for `/.well-known/ai-catalog.json`.",
      +      "type": "string"
      +    },
      +    "brand_name": {
      +      "description": "Canonical brand name.",
      +      "type": "string"
      +    },
      +    "domain_seal_sha256": {
      +      "description": "64-character hex SHA-256 authenticity seal verifiable at `https://danteix.com/api/mcp/verify-seal`.",
      +      "type": "string"
      +    },
      +    "domain_url": {
      +      "description": "Normalized HTTPS domain URL.",
      +      "type": "string"
      +    },
      +    "json_ld_script": {
      +      "description": "HTML `<script type='application/ld+json'>` block.",
      +      "type": "string"
      +    },
      +    "llms_txt_content": {
      +      "description": "Complete `/llms.txt` markdown manifest for AI crawlers.",
      +      "type": "string"
      +    },
      +    "robots_txt_snippet": {
      +      "description": "Crawler allow rules for `robots.txt`.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds material context beyond them: deterministic synthesis under 300ms, zero LLM calls, never touches external sites, consumes no live audit credits, and degrades to a 30% preview without an API key versus full sealed output with a paid key. Tier/domain-slot limits are also disclosed, which annotations cannot express.

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-loaded with the artifact list, then organized into labeled sections (Side effects & latency, Constraints, Auth & quota, When to use) that scan well. It is long and restates return keys that the existing output schema already documents, which is the only waste.

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 multi-input synthesis tool with auth tiers and cross-field constraints, everything an agent needs to call it correctly is present: required inputs, constraint invariants, cost/credit behavior, latency, and the preview-vs-full-key distinction. Return values are covered by the output schema, so the description needn't go further.

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; the description earns above that by documenting cross-field constraints not in the schema — `brand_name` must match the stem of `domain_url`, and URLs inside `official_facts` must belong to `domain_url`. It doesn't add per-parameter guidance beyond those invariants, so not a 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 specific verb (Generate) and a concrete set of resources (`/llms.txt`, `/.well-known/ai-catalog.json`, Schema.org JSON-LD types, robots.txt AI-crawler rules), so an agent knows exactly what artifact comes back. It is clearly separable from siblings like `dante.run_audit` or `dante.remediate_hallucination`, which are named.

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?

Explicit 'When to use' clause plus an explicit alternative with its triggering condition ('use `dante.remediate_hallucination` instead when countering a specific false AI claim'). This is routing guidance an agent can act on without opening either schema.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources