AI Search Kit

Audits AI-crawler access, structured data and llms.txt on a site, and drafts the fixes.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
95%
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

~2,861Tokens (definiciones de herramientas)
~4.7 KBTamaño de respuesta típico
Impacto significativo en la atención (2.24% 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": {
    "ai-search-kit": {
      "url": "https://mcp.modernmustardseed.com/ai-search-kit"
    }
  }
}

Puntos de conexión remotos

https://mcp.modernmustardseed.com/ai-search-kitstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (5)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢audit_ai_readiness(url, detail)

Audit one public web page for what AI answer engines and their crawlers rely on. Reads the page plus its site's robots.txt, llms.txt and sitemap, then reports: for each AI crawler and control token (OAI-SearchBot, ChatGPT-User, GPTBot, Claude-SearchBot, Claude-User, ClaudeBot, PerplexityBot, Perplexity-User, Googlebot, Google-Extended, Applebot, Applebot-Extended) whether robots.txt allows it on this page under RFC 9309 matching; noindex and nosnippet directives; JSON-LD validity against the schema.org vocabulary and Google's LocalBusiness rules; whether the name, phone and address in the markup also appear on the visible page; llms.txt format; canonical tag; and sitemap. Every finding cites the public spec or vendor document behind it, with the date it was read. Results are cached for 10 minutes.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2048,
      "description": "The page to audit, such as example.com or https://example.com/locations/denver. Public http and https only."
    },
    "detail": {
      "default": "summary",
      "description": "\"summary\" (default) lists only findings that warn, fail or inform; \"full\" includes passing findings with their sources.",
      "type": "string",
      "enum": [
        "summary",
        "full"
      ]
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢generate_local_business_schema(name, business_type, schema_type, description, url, ...)

Turn a local business's facts into schema.org JSON-LD. Chooses the most specific LocalBusiness subtype from business_type (for example "roofing company" becomes RoofingContractor) or takes schema_type as given, writes only properties schema.org defines for that type, formats hours, phone and 24 hour or closed days the way Google documents, then validates the output against the schema.org vocabulary. Returns the JSON-LD, a ready-to-paste script tag, the type chosen with alternatives, and cited notes on anything left out. No network access; nothing is published.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Business name as shown on the storefront, website and Google profile."
    },
    "business_type": {
      "description": "Plain words for what the business is, such as \"plumber\", \"dental office\" or \"coffee shop\".",
      "type": "string",
      "maxLength": 120
    },
    "schema_type": {
      "description": "An exact schema.org LocalBusiness subtype, or up to three, such as \"Plumber\". Overrides business_type.",
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "minItems": 1,
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 80
          }
        }
      ]
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "url": {
      "description": "The business website or location page.",
      "type": "string",
      "maxLength": 2048
    },
    "telephone": {
      "description": "Primary customer phone number. North American numbers are written as +1-AAA-BBB-CCCC.",
      "type": "string",
      "maxLength": 40
    },
    "email": {
      "type": "string",
      "maxLength": 200
    },
    "logo": {
      "description": "Logo image URL.",
      "type": "string",
      "maxLength": 2048
    },
    "images": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2048
      }
    },
    "street_address": {
      "type": "string",
      "maxLength": 200
    },
    "address_locality": {
      "description": "City or town.",
      "type": "string",
      "maxLength": 100
    },
    "address_region": {
      "description": "State, province or region, such as \"MT\".",
      "type": "string",
      "maxLength": 100
    },
    "postal_code": {
      "type": "string",
      "maxLength": 20
    },
    "address_country": {
      "description": "Two-letter ISO country code, such as \"US\".",
      "type": "string",
      "maxLength": 60
    },
    "hide_street_address": {
      "description": "True for a service-area business that does not serve customers at its address.",
      "type": "boolean"
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "area_served": {
      "description": "Places served: plain names, or objects with a type (City, State, AdministrativeArea, Country, Place) and an optional Wikidata or Wikipedia URL in same_as.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "type": {
                "type": "string",
                "enum": [
                  "City",
                  "State",
                  "AdministrativeArea",
                  "Country",
                  "Place"
                ]
              },
              "same_as": {
                "type": "string",
                "maxLength": 2048
              }
            },
            "required": [
              "name"
            ]
          }
        ]
      }
    },
    "hours": {
      "description": "Regular opening hours. Days not listed read as closed.",
      "maxItems": 14,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "days": {
            "minItems": 1,
            "maxItems": 7,
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 30
            },
            "description": "Day names, \"weekdays\", \"weekends\" or a range like \"Monday-Friday\"."
          },
          "opens": {
            "type": "string",
            "maxLength": 20,
            "description": "Such as \"8:00\", \"8 AM\" or \"08:00\"."
          },
          "closes": {
            "type": "string",
            "maxLength": 20,
            "description": "Such as \"17:30\" or \"5:30 PM\". \"24:00\" means midnight."
          }
        },
        "required": [
          "days",
          "opens",
          "closes"
        ]
      }
    },
    "open_24_7": {
      "description": "True when the business is open 24 hours every day. Overrides hours.",
      "type": "boolean"
    },
    "seasonal_closures": {
      "description": "Closed periods, dates as YYYY-MM-DD.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "valid_from": {
            "type": "string",
            "maxLength": 10
          },
          "valid_through": {
            "type": "string",
            "maxLength": 10
          }
        },
        "required": [
          "valid_from",
          "valid_through"
        ]
      }
    },
    "same_as": {
      "description": "Official profile URLs that identify the business: Google Business Profile, Facebook, LinkedIn, Yelp, Wikidata.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2048
      }
    },
    "price_range": {
      "description": "Such as \"$$\" or \"$100-$300\". Under 100 characters.",
      "type": "string",
      "maxLength": 99
    },
    "payment_accepted": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      }
    },
    "currencies_accepted": {
      "description": "ISO 4217 codes such as USD.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 3
      }
    },
    "founders": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 120
      }
    },
    "founding_date": {
      "description": "YYYY-MM-DD.",
      "type": "string",
      "maxLength": 10
    },
    "services": {
      "description": "Services offered, written as Offer items.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 120
      }
    },
    "serves_cuisine": {
      "description": "Food businesses only.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      }
    },
    "menu_url": {
      "description": "Food businesses only.",
      "type": "string",
      "maxLength": 2048
    },
    "accepts_reservations": {
      "description": "Food businesses only.",
      "type": "boolean"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢generate_llms_txt(url, site_name, summary, details, sections, ...)

Write an llms.txt file in the llmstxt.org format: an H1 with the site name, a blockquote summary, optional details, H2 sections of "- [title](url): note" links, and an Optional section for secondary pages. Give url to build it from the live site (home page, sitemap, and up to 30 pages' own titles and meta descriptions, honoring the site's robots.txt and skipping noindex pages), or give site_name and sections to build it from your own facts; supplied fields override what is read from the site. The result is checked against the format before it is returned. Nothing is published.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "description": "A public site to read, such as example.com.",
      "type": "string",
      "minLength": 3,
      "maxLength": 2048
    },
    "site_name": {
      "description": "The H1. Required when url is not given.",
      "type": "string",
      "maxLength": 120
    },
    "summary": {
      "description": "One or two sentences for the blockquote.",
      "type": "string",
      "maxLength": 500
    },
    "details": {
      "description": "Optional markdown notes between the summary and the link sections. Headings are not allowed there.",
      "type": "string",
      "maxLength": 3000
    },
    "sections": {
      "description": "H2 file lists, each with links.",
      "maxItems": 15,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "links": {
            "minItems": 1,
            "maxItems": 60,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "url": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                },
                "description": {
                  "type": "string",
                  "maxLength": 400
                }
              },
              "required": [
                "title",
                "url"
              ]
            }
          }
        },
        "required": [
          "title",
          "links"
        ]
      }
    },
    "optional_links": {
      "description": "Secondary links for the Optional section.",
      "maxItems": 40,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048
          },
          "description": {
            "type": "string",
            "maxLength": 400
          }
        },
        "required": [
          "title",
          "url"
        ]
      }
    },
    "max_pages": {
      "default": 20,
      "description": "How many pages to read from the site, 1 to 30. Default 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢check_entity_consistency(profiles, business)

Compare a business's name, phone, street, city, region and postal code across up to 8 sources, such as its website, Google Business Profile, Facebook page and directory listings. For each source give a url to read (JSON-LD first, then tap-to-call links and page text) and/or the facts shown on it; supplied facts win, and are needed for sites that block automated readers. Formats are normalized ("123 North Main Street, Suite 4" matches "123 N Main St Ste 4", "(406) 555-0100" matches "+1 406-555-0100"), then each field is reported as consistent, variant or mismatch, with the exact fixes. Give business to compare against a canonical record instead of the majority.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profiles": {
      "minItems": 1,
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "description": "A page that shows the business: its own website, a directory listing, a social profile.",
            "type": "string",
            "minLength": 3,
            "maxLength": 2048
          },
          "label": {
            "description": "A short name for this source, such as \"Website\" or \"Yelp\".",
            "type": "string",
            "maxLength": 60
          },
          "name": {
            "type": "string",
            "maxLength": 200
          },
          "phone": {
            "type": "string",
            "maxLength": 40
          },
          "street_address": {
            "type": "string",
            "maxLength": 200
          },
          "address_locality": {
            "type": "string",
            "maxLength": 100
          },
          "address_region": {
            "type": "string",
            "maxLength": 100
          },
          "postal_code": {
            "type": "string",
            "maxLength": 20
          }
        }
      }
    },
    "business": {
      "description": "The canonical name, phone and address every source should match.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200
        },
        "phone": {
          "type": "string",
          "maxLength": 40
        },
        "street_address": {
          "type": "string",
          "maxLength": 200
        },
        "address_locality": {
          "type": "string",
          "maxLength": 100
        },
        "address_region": {
          "type": "string",
          "maxLength": 100
        },
        "postal_code": {
          "type": "string",
          "maxLength": 20
        }
      }
    }
  },
  "required": [
    "profiles"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢validate_structured_data(json_ld)

Validate pasted JSON-LD against the schema.org vocabulary (every type, property, domain, range and enumeration value) and Google's documented rules for LocalBusiness and Organization markup: required name and address, recommended properties, hh:mm:ss hours, 5 decimal coordinates, priceRange length, self-serving reviews, sameAs. Accepts one block, several blocks, or the script tags around them. Each issue cites its source. No network access.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "json_ld": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200000,
      "description": "JSON-LD text. Script tags are stripped; several script blocks are each validated."
    }
  },
  "required": [
    "json_ld"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada5 herramientas