AI Search Kit

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

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
95%
命名の品質
100%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,861トークン数(ツール定義)
~4.7 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.24%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "ai-search-kit": {
      "url": "https://mcp.modernmustardseed.com/ai-search-kit"
    }
  }
}

リモートエンドポイント

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

できること

ツール一覧

ツール(5)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 5 件