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,861Token(工具定義)
~4.7 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.24%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `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 個工具