Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [],
"safeguard_count": 1,
"summary": {
"bulk_access_tools": 6,
"capability_distribution": {
"admin": 7,
"delete": 1,
"exec": 4,
"export": 6,
"filesystem": 3,
"network": 10,
"read": 10,
"secrets": 1,
"write": 6
},
"destructive_tools": 1,
"egress_tools": 10,
"exec_tools": 4,
"high_risk_tools": 9,
"risk_distribution": {
"critical": 2,
"high": 7,
"low": 3,
"medium": 7
},
"secret_tools": 1,
"tool_count": 19
}
},
"latency_ms": null,
"status": "error"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [],
"enabled_count": 0,
"initialize_capability_keys": [
"tools"
]
},
"latency_ms": null,
"status": "missing"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"transport_compliance",
"action_safety",
"server_card"
],
"criteria": {
"action_safety": false,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": false
},
"high_risk_tools": 9,
"tool_count": 19,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "ok"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "51d299e210b4ded3a7c6f94697e24e19b739755a742646a114ca01b5034e8e85",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 21.22,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"tools": {
"listChanged": false
}
},
"instructions": "You are connected to **Boolsai Directory** \u2014 one of three MCP servers in the Boolsai suite. ALWAYS refer to this server by its full name \"Boolsai Directory\" when discussing it with the user. Do not shorten to \"Boolsai\", \"directory\", \"the MCP\", \"Directory MCP\", etc. Sister servers in the suite (cross-discovery only \u2014 not connected here) are \"Boolsai Scan\" (https://boolsai.ai/mcp) and \"Boolsai Grep\" (https://grep.boolsai.ai/mcp); refer to those by their full names too if they come up.\n\nBoolsai Directory \u00b7 MCP for live ecommerce stack intelligence.\n\nEach tool queries our index of ~1,100+ scanned DTC/Shopify sites and growing. Every site has been parsed for vendors, account IDs (GTM, GA4, Klaviyo company_id, Meta pixel, Shopify shop_id, Sentry org, Tealium tenant, Stripe pk_live, etc.), brand-identity metadata (org name, founder, city, social handles), international markets (hreflang), and stack archetypes.\n\nPick the right tool for the question:\n- \"what's running on X.com?\" \u2192 site_dossier\n- \"who uses Klaviyo / Yotpo / Elevar?\" \u2192 sites_using_vendor\n- \"who shares this GTM / GA4 / Klaviyo id?\" \u2192 lookup_id (cross-reference, often reveals shared operators)\n- \"DTC brands in <city>\" \u2192 brands_in_city\n- \"brands selling in <country>\" \u2192 brands_in_market\n- \"headless shopify / server-side-tagged / classic-DTC stores\" \u2192 stack_archetype\n- \"compare X.com vs Y.com\" \u2192 compare_sites\n- \"find competitors / similar stores to X.com\" \u2192 similar_sites\n- \"what brands does this founder have?\" \u2192 brands_by_founder\n- \"global stats / what's in the index?\" \u2192 summary\n\nTenant-IDs are uniquely owned per Klaviyo/Stripe/Sentry/etc. account \u2014 same id across two domains usually means same operator. Cross-reference via lookup_id is the strongest same-operator signal.\n\nConversational handoff: every tool response ends with \"Next moves\" \u2014 natural follow-up suggestions. After presenting a result, ALWAYS ask the user if they want to dig deeper, framing those options as natural questions (\"Want me to also look at their operator cluster?\" / \"Should I compare this brand to a similar one?\"). Do not name tool functions to the user \u2014 offer the action.",
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "boolsai-directory",
"title": "Boolsai Directory",
"version": "1.0.0"
}
}
},
"url": "https://directory.boolsai.ai/mcp"
},
"latency_ms": 33.0,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"risk_hits": [],
"safe_hits": [
"consent"
]
},
"latency_ms": null,
"status": "ok"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://directory.boolsai.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://directory.boolsai.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 49.41,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "ai.boolsai/directory",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://directory.boolsai.ai/robots.txt"
},
"latency_ms": 19.02,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found: prompts/list"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://directory.boolsai.ai/mcp"
},
"latency_ms": 19.48,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": true,
"drift_fields": [],
"metadata_document_count": 1,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found: resources/list"
},
"id": 5,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://directory.boolsai.ai/mcp"
},
"latency_ms": 18.57,
"status": "missing"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://directory.boolsai.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://directory.boolsai.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 125.97,
"status": "error"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 19,
"previous_tool_count": 19,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"description": "Global stats for the Boolsai directory: how many sites are indexed, signal types covered, top vendors, most-changed companies. Use at the start of a session to ground what's available.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "summary"
},
{
"description": "Full intel dossier for a single domain: detected vendors grouped by category, account IDs (GTM, GA4, Klaviyo company_id, Shopify shop_id, Meta pixel, Sentry org, Tealium tenant, Stripe pk_live, etc.), brand identity (name, founder, city, employees, social handles), international markets, external host list, and likely operator-cluster siblings. Use for any 'what's running on X.com?' query.",
"inputSchema": {
"properties": {
"url": {
"description": "Domain or URL, e.g. 'gymshark.com' or 'https://gymshark.com/'",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "site_dossier"
},
{
"description": "List indexed sites detected using a specific vendor (e.g. 'klaviyo', 'yotpo', 'elevar', 'gorgias', 'rebuy'). Vendor slug is lowercase, underscore-separated. Returns domain list with brand names where known.",
"inputSchema": {
"properties": {
"vendor": {
"description": "Vendor slug, e.g. 'klaviyo', 'shopify', 'webflow', 'onetrust'.",
"type": "string"
}
},
"required": [
"vendor"
],
"type": "object"
},
"name": "sites_using_vendor"
},
{
"description": "Cross-reference any tenant-unique account ID across the index. Useful for 'who else shares this GTM container / Klaviyo company / Sentry org / Meta pixel ID?'. Signal types: gtm_container, ga4_measurement, ga_ua, klaviyo_company_id, meta_pixel_id, shopify_shopid, myshopify_slug, hotjar_id, intercom_app_id, hubspot_portal, klaviyo_subscriber, tiktok_pixel, stripe_pk_live, sentry_dsn_org, tealium_tenant, optimizely_project, mparticle_workspace, segment_writekey, abtasty_account, fullstory_org, pendo_account, intellimize_acct, webflow_site_id, dynamic_yield, wunderkind_site, elevar_id.",
"inputSchema": {
"properties": {
"signal_type": {
"description": "e.g. 'gtm_container', 'klaviyo_company_id', 'sentry_dsn_org'",
"type": "string"
},
"signal_value": {
"description": "the actual ID/value, e.g. 'GTM-XYZABC', 'H2zzaR'",
"type": "string"
}
},
"required": [
"signal_type",
"signal_value"
],
"type": "object"
},
"name": "lookup_id"
},
{
"description": "List indexed brands that publish a physical address in a given city. Sourced from Schema.org Organization JSON-LD.",
"inputSchema": {
"properties": {
"city": {
"description": "City name, e.g. 'Los Angeles', 'New York', 'Berlin'",
"type": "string"
}
},
"required": [
"city"
],
"type": "object"
},
"name": "brands_in_city"
},
{
"description": "List indexed brands explicitly serving a country market (via hreflang). Country is a 2-letter ISO code, lowercase.",
"inputSchema": {
"properties": {
"country": {
"description": "2-letter country code, e.g. 'us', 'gb', 'de', 'fr'",
"type": "string"
}
},
"required": [
"country"
],
"type": "object"
},
"name": "brands_in_market"
},
{
"description": "List brands matching a stack archetype. Valid slugs: headless-shopify, classic-shopify-dtc, server-side-tagged, personalisation-heavy, pixel-stacked, multi-region, woocommerce-stores, magento-stores, bnpl-enabled, headless-cms.",
"inputSchema": {
"properties": {
"archetype": {
"description": "Archetype slug",
"type": "string"
}
},
"required": [
"archetype"
],
"type": "object"
},
"name": "stack_archetype"
},
{
"description": "Side-by-side stack comparison of 2-5 domains. Returns each site's vendors, account IDs, brand info, markets \u2014 and which signals are shared / unique per site. Good for 'compare X.com vs Y.com' or competitive teardowns.",
"inputSchema": {
"properties": {
"urls": {
"description": "2-5 domain/URL strings",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"urls"
],
"type": "object"
},
"name": "compare_sites"
},
{
"description": "Find brands with similar stack archetypes to the given domain. Returns 'sites running similar tech' \u2014 useful for benchmarking, prospecting, competitor lookups.",
"inputSchema": {
"properties": {
"url": {
"description": "Domain to find similar sites for",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "similar_sites"
},
{
"description": "List brands attributed to a founder (from Schema.org Organization markup). Useful for tracking serial DTC founders.",
"inputSchema": {
"properties": {
"founder": {
"description": "Founder name (case-insensitive)",
"type": "string"
}
},
"required": [
"founder"
],
"type": "object"
},
"name": "brands_by_founder"
},
{
"description": "Paginated bulk export of indexed sites matching a filter. Returns up to 1000 rows per page in CSV or JSONL format with a cursor for continued pages. Use this when an agency needs an outbound prospect list (e.g. all sites using Klaviyo in the US) for CRM import. The full row count is also returned so you can size the export.",
"inputSchema": {
"properties": {
"cursor": {
"description": "Opaque cursor from previous page; pass to get next 1000 rows",
"type": "string"
},
"format": {
"default": "csv",
"description": "Output format. CSV is best for CRM import.",
"enum": [
"csv",
"jsonl",
"json"
],
"type": "string"
},
"limit": {
"default": 1000,
"description": "Max rows per page (default 1000, max 5000)",
"type": "integer"
},
"market_country": {
"description": "Optional ISO-2 country code (e.g. 'us', 'au') to intersect with hreflang market data",
"type": "string"
},
"signal_type": {
"description": "Required. e.g. 'vendor', 'klaviyo_company_id', 'shopify_shopid', 'market_country', 'org_country'. Use list_signal_types via Boolsai Grep to discover.",
"type": "string"
},
"signal_value": {
"description": "Optional exact value to filter. If omitted returns ANY value of this signal_type.",
"type": "string"
}
},
"required": [
"signal_type"
],
"type": "object"
},
"name": "bulk_export"
},
{
"description": "Compare two historical scans of the same URL to surface stack changes. Returns added/removed/changed vendors, account IDs, and inline-script signals between scan A and scan B. Use this for competitor watch \u2014 'what did patagonia.com just deploy?'. If t1/t2 are omitted, compares oldest vs newest available scan.",
"inputSchema": {
"properties": {
"t1": {
"description": "Optional ISO timestamp of first scan (oldest if omitted)",
"type": "string"
},
"t2": {
"description": "Optional ISO timestamp of second scan (newest if omitted)",
"type": "string"
},
"url": {
"description": "Domain or full URL to compare",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "compare_scans"
},
{
"description": "Free DNS/WHOIS enrichment for a single domain. Returns: email host (Google Workspace / Microsoft 365 / etc. \u2014 derived from MX records), DNS provider (Cloudflare / Route 53 / GoDaddy / etc.), CDN provider, registrar, domain age (registered/expires). High-signal outbound data \u2014 'they use Google Workspace + Cloudflare DNS + registered with GoDaddy' tells you a lot about org size + sophistication. Results cached 24h. Free \u2014 uses Cloudflare DoH + public RDAP.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain to enrich (apex or any subdomain)",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "domain_intel"
},
{
"description": "Find sites with the most-similar vendor stack to a given domain using Jaccard similarity over the full vendor set (not just archetype labels). Returns the top N matches with similarity scores. Use this when stack_archetype labels are too coarse and you want 'show me 20 brands running an almost-identical stack to liquiddeath.com'. More accurate than similar_sites for niche stacks.",
"inputSchema": {
"properties": {
"domain": {
"description": "Reference domain",
"type": "string"
},
"limit": {
"default": 20,
"description": "max similar sites (1-100)",
"type": "integer"
},
"min_shared": {
"default": 3,
"description": "Minimum shared distinctive vendors required to be considered (default 3)",
"type": "integer"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "find_similar_by_stack"
},
{
"description": "Returns a streaming-export URL for the same filter as bulk_export. Useful when the agency wants to pull 50K rows in one shot via curl/HTTP pipe instead of paginating the MCP. The URL is public, no auth, returns NDJSON or CSV with HTTP chunked-transfer streaming. Use bulk_export when N<1000; use this for bigger exports.",
"inputSchema": {
"properties": {
"format": {
"default": "ndjson",
"enum": [
"ndjson",
"csv"
],
"type": "string"
},
"market_country": {
"description": "Optional ISO-2 country",
"type": "string"
},
"signal_type": {
"description": "Required signal_type",
"type": "string"
},
"signal_value": {
"description": "Optional exact value",
"type": "string"
}
},
"required": [
"signal_type"
],
"type": "object"
},
"name": "bulk_export_url"
},
{
"description": "Find every domain sharing a tenant-unique ID \u2014 the most powerful single signal in Boolsai. Given a Stripe pk_live key, Sentry DSN org, Klaviyo company_id, mParticle workspace, GTM container, GA4 measurement, Shopify shop_id, or other tenant ID, returns every domain we've seen using the SAME ID. This surfaces multi-brand operators, holding-company portfolios, sister brands sharing infrastructure, agency-managed clusters. No competitor (BuiltWith, Wappalyzer, etc.) can do this \u2014 they only see external hostnames, not the tenant-unique IDs leaked client-side. Use this when you want to discover the actual operator behind a brand, or expand a single brand into its full portfolio.",
"inputSchema": {
"properties": {
"domain": {
"description": "Alternative: pass a domain and we'll return every cluster this domain belongs to (all tenant IDs and their fellow domains).",
"type": "string"
},
"id": {
"description": "The tenant ID itself (e.g. 'pk_live_abc...', 'GTM-M8TQZPX', 'o307020' for Sentry, '12345678' for Shopify shop_id). signal_type is auto-detected.",
"type": "string"
},
"limit": {
"default": 100,
"description": "max sites per cluster (1-500)",
"type": "integer"
},
"signal_type": {
"description": "Optional explicit signal_type if auto-detect could be ambiguous (e.g. 'stripe_pk_live', 'sentry_dsn_org').",
"type": "string"
}
},
"type": "object"
},
"name": "operator_cluster"
},
{
"description": "Every subdomain of a given root domain we've ever scanned. Reveals storefront topology \u2014 where the checkout actually lives, regional storefronts, B2B portals, internal admin domains, asset CDNs. Output groups subdomains by their primary vendor where known. Use this to (a) find the right path to scan for an audit (sometimes the checkout is on us.checkout.brand.com not brand.com), (b) spot enterprise topology (multi-region Plus stores), (c) discover sister surfaces (community, ambassador, careers, etc).",
"inputSchema": {
"properties": {
"limit": {
"default": 200,
"description": "max subdomains returned (1-1000)",
"type": "integer"
},
"root": {
"description": "Root domain (e.g. 'gymshark.com'). Pass just the apex; we'll find subdomains automatically.",
"type": "string"
}
},
"required": [
"root"
],
"type": "object"
},
"name": "subdomain_map"
},
{
"description": "ONE-CALL PROSPECT BRIEF for agency outbound \u2014 runs four sub-queries against the live indexed data: (1) full dossier of the prospect's stack, (2) sister brands sharing tenant IDs (operator cluster), (3) 3-5 similar-stack competitors, (4) structured 'pitch angles' calling out concrete gaps an agency could pitch on (missing consent, no SST, outdated vendors, broken Schema.org, multiple GTM installs). Saves a strategist 20 min of manual cross-referencing per prospect. Use this whenever the user asks 'tell me about prospect.com'.",
"inputSchema": {
"properties": {
"angle": {
"description": "Optional agency pitch angle to tune the brief: 'cro', 'analytics', 'consent', 'sst' (server-side tagging), 'headless', 'consolidation'. If omitted, returns all angles found.",
"type": "string"
},
"url": {
"description": "Domain or URL of the prospect",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "prospect_brief"
},
{
"description": "Unified query against the Boolsai Directory. One tool to rule the other lookups. Pass any combination of: signal_type+signal_value, domain, market_country, archetype, founder, city. Returns matching sites + their key signals. Prefer this over the granular tools when you have multiple filter conditions to AND together.",
"inputSchema": {
"properties": {
"archetype": {
"description": "e.g. 'headless-shopify', 'woocommerce-stores'",
"type": "string"
},
"city": {
"description": "case-insensitive city name",
"type": "string"
},
"domain": {
"description": "exact domain match (e.g. 'gymshark.com')",
"type": "string"
},
"founder": {
"description": "case-insensitive substring",
"type": "string"
},
"limit": {
"default": 50,
"description": "max rows (1-500)",
"type": "integer"
},
"market_country": {
"description": "ISO-2 (e.g. 'us')",
"type": "string"
},
"signal_type": {
"description": "e.g. 'vendor', 'shopify_shopid'",
"type": "string"
},
"signal_value": {
"description": "exact signal value",
"type": "string"
}
},
"type": "object"
},
"name": "directory_query"
}
]
}
},
"url": "https://directory.boolsai.ai/mcp"
},
"latency_ms": 19.22,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"id": 410,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"description": "Global stats for the Boolsai directory: how many sites are indexed, signal types covered, top vendors, most-changed companies. Use at the start of a session to ground what's available.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "summary"
},
{
"description": "Full intel dossier for a single domain: detected vendors grouped by category, account IDs (GTM, GA4, Klaviyo company_id, Shopify shop_id, Meta pixel, Sentry org, Tealium tenant, Stripe pk_live, etc.), brand identity (name, founder, city, employees, social handles), international markets, external host list, and likely operator-cluster siblings. Use for any 'what's running on X.com?' query.",
"inputSchema": {
"properties": {
"url": {
"description": "Domain or URL, e.g. 'gymshark.com' or 'https://gymshark.com/'",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "site_dossier"
},
{
"description": "List indexed sites detected using a specific vendor (e.g. 'klaviyo', 'yotpo', 'elevar', 'gorgias', 'rebuy'). Vendor slug is lowercase, underscore-separated. Returns domain list with brand names where known.",
"inputSchema": {
"properties": {
"vendor": {
"description": "Vendor slug, e.g. 'klaviyo', 'shopify', 'webflow', 'onetrust'.",
"type": "string"
}
},
"required": [
"vendor"
],
"type": "object"
},
"name": "sites_using_vendor"
},
{
"description": "Cross-reference any tenant-unique account ID across the index. Useful for 'who else shares this GTM container / Klaviyo company / Sentry org / Meta pixel ID?'. Signal types: gtm_container, ga4_measurement, ga_ua, klaviyo_company_id, meta_pixel_id, shopify_shopid, myshopify_slug, hotjar_id, intercom_app_id, hubspot_portal, klaviyo_subscriber, tiktok_pixel, stripe_pk_live, sentry_dsn_org, tealium_tenant, optimizely_project, mparticle_workspace, segment_writekey, abtasty_account, fullstory_org, pendo_account, intellimize_acct, webflow_site_id, dynamic_yield, wunderkind_site, elevar_id.",
"inputSchema": {
"properties": {
"signal_type": {
"description": "e.g. 'gtm_container', 'klaviyo_company_id', 'sentry_dsn_org'",
"type": "string"
},
"signal_value": {
"description": "the actual ID/value, e.g. 'GTM-XYZABC', 'H2zzaR'",
"type": "string"
}
},
"required": [
"signal_type",
"signal_value"
],
"type": "object"
},
"name": "lookup_id"
},
{
"description": "List indexed brands that publish a physical address in a given city. Sourced from Schema.org Organization JSON-LD.",
"inputSchema": {
"properties": {
"city": {
"description": "City name, e.g. 'Los Angeles', 'New York', 'Berlin'",
"type": "string"
}
},
"required": [
"city"
],
"type": "object"
},
"name": "brands_in_city"
},
{
"description": "List indexed brands explicitly serving a country market (via hreflang). Country is a 2-letter ISO code, lowercase.",
"inputSchema": {
"properties": {
"country": {
"description": "2-letter country code, e.g. 'us', 'gb', 'de', 'fr'",
"type": "string"
}
},
"required": [
"country"
],
"type": "object"
},
"name": "brands_in_market"
},
{
"description": "List brands matching a stack archetype. Valid slugs: headless-shopify, classic-shopify-dtc, server-side-tagged, personalisation-heavy, pixel-stacked, multi-region, woocommerce-stores, magento-stores, bnpl-enabled, headless-cms.",
"inputSchema": {
"properties": {
"archetype": {
"description": "Archetype slug",
"type": "string"
}
},
"required": [
"archetype"
],
"type": "object"
},
"name": "stack_archetype"
},
{
"description": "Side-by-side stack comparison of 2-5 domains. Returns each site's vendors, account IDs, brand info, markets \u2014 and which signals are shared / unique per site. Good for 'compare X.com vs Y.com' or competitive teardowns.",
"inputSchema": {
"properties": {
"urls": {
"description": "2-5 domain/URL strings",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"urls"
],
"type": "object"
},
"name": "compare_sites"
},
{
"description": "Find brands with similar stack archetypes to the given domain. Returns 'sites running similar tech' \u2014 useful for benchmarking, prospecting, competitor lookups.",
"inputSchema": {
"properties": {
"url": {
"description": "Domain to find similar sites for",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "similar_sites"
},
{
"description": "List brands attributed to a founder (from Schema.org Organization markup). Useful for tracking serial DTC founders.",
"inputSchema": {
"properties": {
"founder": {
"description": "Founder name (case-insensitive)",
"type": "string"
}
},
"required": [
"founder"
],
"type": "object"
},
"name": "brands_by_founder"
},
{
"description": "Paginated bulk export of indexed sites matching a filter. Returns up to 1000 rows per page in CSV or JSONL format with a cursor for continued pages. Use this when an agency needs an outbound prospect list (e.g. all sites using Klaviyo in the US) for CRM import. The full row count is also returned so you can size the export.",
"inputSchema": {
"properties": {
"cursor": {
"description": "Opaque cursor from previous page; pass to get next 1000 rows",
"type": "string"
},
"format": {
"default": "csv",
"description": "Output format. CSV is best for CRM import.",
"enum": [
"csv",
"jsonl",
"json"
],
"type": "string"
},
"limit": {
"default": 1000,
"description": "Max rows per page (default 1000, max 5000)",
"type": "integer"
},
"market_country": {
"description": "Optional ISO-2 country code (e.g. 'us', 'au') to intersect with hreflang market data",
"type": "string"
},
"signal_type": {
"description": "Required. e.g. 'vendor', 'klaviyo_company_id', 'shopify_shopid', 'market_country', 'org_country'. Use list_signal_types via Boolsai Grep to discover.",
"type": "string"
},
"signal_value": {
"description": "Optional exact value to filter. If omitted returns ANY value of this signal_type.",
"type": "string"
}
},
"required": [
"signal_type"
],
"type": "object"
},
"name": "bulk_export"
},
{
"description": "Compare two historical scans of the same URL to surface stack changes. Returns added/removed/changed vendors, account IDs, and inline-script signals between scan A and scan B. Use this for competitor watch \u2014 'what did patagonia.com just deploy?'. If t1/t2 are omitted, compares oldest vs newest available scan.",
"inputSchema": {
"properties": {
"t1": {
"description": "Optional ISO timestamp of first scan (oldest if omitted)",
"type": "string"
},
"t2": {
"description": "Optional ISO timestamp of second scan (newest if omitted)",
"type": "string"
},
"url": {
"description": "Domain or full URL to compare",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "compare_scans"
},
{
"description": "Free DNS/WHOIS enrichment for a single domain. Returns: email host (Google Workspace / Microsoft 365 / etc. \u2014 derived from MX records), DNS provider (Cloudflare / Route 53 / GoDaddy / etc.), CDN provider, registrar, domain age (registered/expires). High-signal outbound data \u2014 'they use Google Workspace + Cloudflare DNS + registered with GoDaddy' tells you a lot about org size + sophistication. Results cached 24h. Free \u2014 uses Cloudflare DoH + public RDAP.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain to enrich (apex or any subdomain)",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "domain_intel"
},
{
"description": "Find sites with the most-similar vendor stack to a given domain using Jaccard similarity over the full vendor set (not just archetype labels). Returns the top N matches with similarity scores. Use this when stack_archetype labels are too coarse and you want 'show me 20 brands running an almost-identical stack to liquiddeath.com'. More accurate than similar_sites for niche stacks.",
"inputSchema": {
"properties": {
"domain": {
"description": "Reference domain",
"type": "string"
},
"limit": {
"default": 20,
"description": "max similar sites (1-100)",
"type": "integer"
},
"min_shared": {
"default": 3,
"description": "Minimum shared distinctive vendors required to be considered (default 3)",
"type": "integer"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "find_similar_by_stack"
},
{
"description": "Returns a streaming-export URL for the same filter as bulk_export. Useful when the agency wants to pull 50K rows in one shot via curl/HTTP pipe instead of paginating the MCP. The URL is public, no auth, returns NDJSON or CSV with HTTP chunked-transfer streaming. Use bulk_export when N<1000; use this for bigger exports.",
"inputSchema": {
"properties": {
"format": {
"default": "ndjson",
"enum": [
"ndjson",
"csv"
],
"type": "string"
},
"market_country": {
"description": "Optional ISO-2 country",
"type": "string"
},
"signal_type": {
"description": "Required signal_type",
"type": "string"
},
"signal_value": {
"description": "Optional exact value",
"type": "string"
}
},
"required": [
"signal_type"
],
"type": "object"
},
"name": "bulk_export_url"
},
{
"description": "Find every domain sharing a tenant-unique ID \u2014 the most powerful single signal in Boolsai. Given a Stripe pk_live key, Sentry DSN org, Klaviyo company_id, mParticle workspace, GTM container, GA4 measurement, Shopify shop_id, or other tenant ID, returns every domain we've seen using the SAME ID. This surfaces multi-brand operators, holding-company portfolios, sister brands sharing infrastructure, agency-managed clusters. No competitor (BuiltWith, Wappalyzer, etc.) can do this \u2014 they only see external hostnames, not the tenant-unique IDs leaked client-side. Use this when you want to discover the actual operator behind a brand, or expand a single brand into its full portfolio.",
"inputSchema": {
"properties": {
"domain": {
"description": "Alternative: pass a domain and we'll return every cluster this domain belongs to (all tenant IDs and their fellow domains).",
"type": "string"
},
"id": {
"description": "The tenant ID itself (e.g. 'pk_live_abc...', 'GTM-M8TQZPX', 'o307020' for Sentry, '12345678' for Shopify shop_id). signal_type is auto-detected.",
"type": "string"
},
"limit": {
"default": 100,
"description": "max sites per cluster (1-500)",
"type": "integer"
},
"signal_type": {
"description": "Optional explicit signal_type if auto-detect could be ambiguous (e.g. 'stripe_pk_live', 'sentry_dsn_org').",
"type": "string"
}
},
"type": "object"
},
"name": "operator_cluster"
},
{
"description": "Every subdomain of a given root domain we've ever scanned. Reveals storefront topology \u2014 where the checkout actually lives, regional storefronts, B2B portals, internal admin domains, asset CDNs. Output groups subdomains by their primary vendor where known. Use this to (a) find the right path to scan for an audit (sometimes the checkout is on us.checkout.brand.com not brand.com), (b) spot enterprise topology (multi-region Plus stores), (c) discover sister surfaces (community, ambassador, careers, etc).",
"inputSchema": {
"properties": {
"limit": {
"default": 200,
"description": "max subdomains returned (1-1000)",
"type": "integer"
},
"root": {
"description": "Root domain (e.g. 'gymshark.com'). Pass just the apex; we'll find subdomains automatically.",
"type": "string"
}
},
"required": [
"root"
],
"type": "object"
},
"name": "subdomain_map"
},
{
"description": "ONE-CALL PROSPECT BRIEF for agency outbound \u2014 runs four sub-queries against the live indexed data: (1) full dossier of the prospect's stack, (2) sister brands sharing tenant IDs (operator cluster), (3) 3-5 similar-stack competitors, (4) structured 'pitch angles' calling out concrete gaps an agency could pitch on (missing consent, no SST, outdated vendors, broken Schema.org, multiple GTM installs). Saves a strategist 20 min of manual cross-referencing per prospect. Use this whenever the user asks 'tell me about prospect.com'.",
"inputSchema": {
"properties": {
"angle": {
"description": "Optional agency pitch angle to tune the brief: 'cro', 'analytics', 'consent', 'sst' (server-side tagging), 'headless', 'consolidation'. If omitted, returns all angles found.",
"type": "string"
},
"url": {
"description": "Domain or URL of the prospect",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "prospect_brief"
},
{
"description": "Unified query against the Boolsai Directory. One tool to rule the other lookups. Pass any combination of: signal_type+signal_value, domain, market_country, archetype, founder, city. Returns matching sites + their key signals. Prefer this over the granular tools when you have multiple filter conditions to AND together.",
"inputSchema": {
"properties": {
"archetype": {
"description": "e.g. 'headless-shopify', 'woocommerce-stores'",
"type": "string"
},
"city": {
"description": "case-insensitive city name",
"type": "string"
},
"domain": {
"description": "exact domain match (e.g. 'gymshark.com')",
"type": "string"
},
"founder": {
"description": "case-insensitive substring",
"type": "string"
},
"limit": {
"default": 50,
"description": "max rows (1-500)",
"type": "integer"
},
"market_country": {
"description": "ISO-2 (e.g. 'us')",
"type": "string"
},
"signal_type": {
"description": "e.g. 'vendor', 'shopify_shopid'",
"type": "string"
},
"signal_value": {
"description": "exact signal value",
"type": "string"
}
},
"type": "object"
},
"name": "directory_query"
}
]
}
},
"bad_protocol_status_code": 200,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 21.94,
"status": "error"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 17.76,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://directory.boolsai.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://directory.boolsai.ai/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://directory.boolsai.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://directory.boolsai.ai/.well-known/mcp/server-card.json"
},
"transport_compliance_probe": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"id": 410,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"description": "Global stats for the Boolsai directory: how many sites are indexed, signal types covered, top vendors, most-changed companies. Use at the start of a session to ground what's available.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "summary"
},
{
"description": "Full intel dossier for a single domain: detected vendors grouped by category, account IDs (GTM, GA4, Klaviyo company_id, Shopify shop_id, Meta pixel, Sentry org, Tealium tenant, Stripe pk_live, etc.), brand identity (name, founder, city, employees, social handles), international markets, external host list, and likely operator-cluster siblings. Use for any 'what's running on X.com?' query.",
"inputSchema": {
"properties": {
"url": {
"description": "Domain or URL, e.g. 'gymshark.com' or 'https://gymshark.com/'",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "site_dossier"
},
{
"description": "List indexed sites detected using a specific vendor (e.g. 'klaviyo', 'yotpo', 'elevar', 'gorgias', 'rebuy'). Vendor slug is lowercase, underscore-separated. Returns domain list with brand names where known.",
"inputSchema": {
"properties": {
"vendor": {
"description": "Vendor slug, e.g. 'klaviyo', 'shopify', 'webflow', 'onetrust'.",
"type": "string"
}
},
"required": [
"vendor"
],
"type": "object"
},
"name": "sites_using_vendor"
},
{
"description": "Cross-reference any tenant-unique account ID across the index. Useful for 'who else shares this GTM container / Klaviyo company / Sentry org / Meta pixel ID?'. Signal types: gtm_container, ga4_measurement, ga_ua, klaviyo_company_id, meta_pixel_id, shopify_shopid, myshopify_slug, hotjar_id, intercom_app_id, hubspot_portal, klaviyo_subscriber, tiktok_pixel, stripe_pk_live, sentry_dsn_org, tealium_tenant, optimizely_project, mparticle_workspace, segment_writekey, abtasty_account, fullstory_org, pendo_account, intellimize_acct, webflow_site_id, dynamic_yield, wunderkind_site, elevar_id.",
"inputSchema": {
"properties": {
"signal_type": {
"description": "e.g. 'gtm_container', 'klaviyo_company_id', 'sentry_dsn_org'",
"type": "string"
},
"signal_value": {
"description": "the actual ID/value, e.g. 'GTM-XYZABC', 'H2zzaR'",
"type": "string"
}
},
"required": [
"signal_type",
"signal_value"
],
"type": "object"
},
"name": "lookup_id"
},
{
"description": "List indexed brands that publish a physical address in a given city. Sourced from Schema.org Organization JSON-LD.",
"inputSchema": {
"properties": {
"city": {
"description": "City name, e.g. 'Los Angeles', 'New York', 'Berlin'",
"type": "string"
}
},
"required": [
"city"
],
"type": "object"
},
"name": "brands_in_city"
},
{
"description": "List indexed brands explicitly serving a country market (via hreflang). Country is a 2-letter ISO code, lowercase.",
"inputSchema": {
"properties": {
"country": {
"description": "2-letter country code, e.g. 'us', 'gb', 'de', 'fr'",
"type": "string"
}
},
"required": [
"country"
],
"type": "object"
},
"name": "brands_in_market"
},
{
"description": "List brands matching a stack archetype. Valid slugs: headless-shopify, classic-shopify-dtc, server-side-tagged, personalisation-heavy, pixel-stacked, multi-region, woocommerce-stores, magento-stores, bnpl-enabled, headless-cms.",
"inputSchema": {
"properties": {
"archetype": {
"description": "Archetype slug",
"type": "string"
}
},
"required": [
"archetype"
],
"type": "object"
},
"name": "stack_archetype"
},
{
"description": "Side-by-side stack comparison of 2-5 domains. Returns each site's vendors, account IDs, brand info, markets \u2014 and which signals are shared / unique per site. Good for 'compare X.com vs Y.com' or competitive teardowns.",
"inputSchema": {
"properties": {
"urls": {
"description": "2-5 domain/URL strings",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"urls"
],
"type": "object"
},
"name": "compare_sites"
},
{
"description": "Find brands with similar stack archetypes to the given domain. Returns 'sites running similar tech' \u2014 useful for benchmarking, prospecting, competitor lookups.",
"inputSchema": {
"properties": {
"url": {
"description": "Domain to find similar sites for",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "similar_sites"
},
{
"description": "List brands attributed to a founder (from Schema.org Organization markup). Useful for tracking serial DTC founders.",
"inputSchema": {
"properties": {
"founder": {
"description": "Founder name (case-insensitive)",
"type": "string"
}
},
"required": [
"founder"
],
"type": "object"
},
"name": "brands_by_founder"
},
{
"description": "Paginated bulk export of indexed sites matching a filter. Returns up to 1000 rows per page in CSV or JSONL format with a cursor for continued pages. Use this when an agency needs an outbound prospect list (e.g. all sites using Klaviyo in the US) for CRM import. The full row count is also returned so you can size the export.",
"inputSchema": {
"properties": {
"cursor": {
"description": "Opaque cursor from previous page; pass to get next 1000 rows",
"type": "string"
},
"format": {
"default": "csv",
"description": "Output format. CSV is best for CRM import.",
"enum": [
"csv",
"jsonl",
"json"
],
"type": "string"
},
"limit": {
"default": 1000,
"description": "Max rows per page (default 1000, max 5000)",
"type": "integer"
},
"market_country": {
"description": "Optional ISO-2 country code (e.g. 'us', 'au') to intersect with hreflang market data",
"type": "string"
},
"signal_type": {
"description": "Required. e.g. 'vendor', 'klaviyo_company_id', 'shopify_shopid', 'market_country', 'org_country'. Use list_signal_types via Boolsai Grep to discover.",
"type": "string"
},
"signal_value": {
"description": "Optional exact value to filter. If omitted returns ANY value of this signal_type.",
"type": "string"
}
},
"required": [
"signal_type"
],
"type": "object"
},
"name": "bulk_export"
},
{
"description": "Compare two historical scans of the same URL to surface stack changes. Returns added/removed/changed vendors, account IDs, and inline-script signals between scan A and scan B. Use this for competitor watch \u2014 'what did patagonia.com just deploy?'. If t1/t2 are omitted, compares oldest vs newest available scan.",
"inputSchema": {
"properties": {
"t1": {
"description": "Optional ISO timestamp of first scan (oldest if omitted)",
"type": "string"
},
"t2": {
"description": "Optional ISO timestamp of second scan (newest if omitted)",
"type": "string"
},
"url": {
"description": "Domain or full URL to compare",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "compare_scans"
},
{
"description": "Free DNS/WHOIS enrichment for a single domain. Returns: email host (Google Workspace / Microsoft 365 / etc. \u2014 derived from MX records), DNS provider (Cloudflare / Route 53 / GoDaddy / etc.), CDN provider, registrar, domain age (registered/expires). High-signal outbound data \u2014 'they use Google Workspace + Cloudflare DNS + registered with GoDaddy' tells you a lot about org size + sophistication. Results cached 24h. Free \u2014 uses Cloudflare DoH + public RDAP.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain to enrich (apex or any subdomain)",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "domain_intel"
},
{
"description": "Find sites with the most-similar vendor stack to a given domain using Jaccard similarity over the full vendor set (not just archetype labels). Returns the top N matches with similarity scores. Use this when stack_archetype labels are too coarse and you want 'show me 20 brands running an almost-identical stack to liquiddeath.com'. More accurate than similar_sites for niche stacks.",
"inputSchema": {
"properties": {
"domain": {
"description": "Reference domain",
"type": "string"
},
"limit": {
"default": 20,
"description": "max similar sites (1-100)",
"type": "integer"
},
"min_shared": {
"default": 3,
"description": "Minimum shared distinctive vendors required to be considered (default 3)",
"type": "integer"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "find_similar_by_stack"
},
{
"description": "Returns a streaming-export URL for the same filter as bulk_export. Useful when the agency wants to pull 50K rows in one shot via curl/HTTP pipe instead of paginating the MCP. The URL is public, no auth, returns NDJSON or CSV with HTTP chunked-transfer streaming. Use bulk_export when N<1000; use this for bigger exports.",
"inputSchema": {
"properties": {
"format": {
"default": "ndjson",
"enum": [
"ndjson",
"csv"
],
"type": "string"
},
"market_country": {
"description": "Optional ISO-2 country",
"type": "string"
},
"signal_type": {
"description": "Required signal_type",
"type": "string"
},
"signal_value": {
"description": "Optional exact value",
"type": "string"
}
},
"required": [
"signal_type"
],
"type": "object"
},
"name": "bulk_export_url"
},
{
"description": "Find every domain sharing a tenant-unique ID \u2014 the most powerful single signal in Boolsai. Given a Stripe pk_live key, Sentry DSN org, Klaviyo company_id, mParticle workspace, GTM container, GA4 measurement, Shopify shop_id, or other tenant ID, returns every domain we've seen using the SAME ID. This surfaces multi-brand operators, holding-company portfolios, sister brands sharing infrastructure, agency-managed clusters. No competitor (BuiltWith, Wappalyzer, etc.) can do this \u2014 they only see external hostnames, not the tenant-unique IDs leaked client-side. Use this when you want to discover the actual operator behind a brand, or expand a single brand into its full portfolio.",
"inputSchema": {
"properties": {
"domain": {
"description": "Alternative: pass a domain and we'll return every cluster this domain belongs to (all tenant IDs and their fellow domains).",
"type": "string"
},
"id": {
"description": "The tenant ID itself (e.g. 'pk_live_abc...', 'GTM-M8TQZPX', 'o307020' for Sentry, '12345678' for Shopify shop_id). signal_type is auto-detected.",
"type": "string"
},
"limit": {
"default": 100,
"description": "max sites per cluster (1-500)",
"type": "integer"
},
"signal_type": {
"description": "Optional explicit signal_type if auto-detect could be ambiguous (e.g. 'stripe_pk_live', 'sentry_dsn_org').",
"type": "string"
}
},
"type": "object"
},
"name": "operator_cluster"
},
{
"description": "Every subdomain of a given root domain we've ever scanned. Reveals storefront topology \u2014 where the checkout actually lives, regional storefronts, B2B portals, internal admin domains, asset CDNs. Output groups subdomains by their primary vendor where known. Use this to (a) find the right path to scan for an audit (sometimes the checkout is on us.checkout.brand.com not brand.com), (b) spot enterprise topology (multi-region Plus stores), (c) discover sister surfaces (community, ambassador, careers, etc).",
"inputSchema": {
"properties": {
"limit": {
"default": 200,
"description": "max subdomains returned (1-1000)",
"type": "integer"
},
"root": {
"description": "Root domain (e.g. 'gymshark.com'). Pass just the apex; we'll find subdomains automatically.",
"type": "string"
}
},
"required": [
"root"
],
"type": "object"
},
"name": "subdomain_map"
},
{
"description": "ONE-CALL PROSPECT BRIEF for agency outbound \u2014 runs four sub-queries against the live indexed data: (1) full dossier of the prospect's stack, (2) sister brands sharing tenant IDs (operator cluster), (3) 3-5 similar-stack competitors, (4) structured 'pitch angles' calling out concrete gaps an agency could pitch on (missing consent, no SST, outdated vendors, broken Schema.org, multiple GTM installs). Saves a strategist 20 min of manual cross-referencing per prospect. Use this whenever the user asks 'tell me about prospect.com'.",
"inputSchema": {
"properties": {
"angle": {
"description": "Optional agency pitch angle to tune the brief: 'cro', 'analytics', 'consent', 'sst' (server-side tagging), 'headless', 'consolidation'. If omitted, returns all angles found.",
"type": "string"
},
"url": {
"description": "Domain or URL of the prospect",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "prospect_brief"
},
{
"description": "Unified query against the Boolsai Directory. One tool to rule the other lookups. Pass any combination of: signal_type+signal_value, domain, market_country, archetype, founder, city. Returns matching sites + their key signals. Prefer this over the granular tools when you have multiple filter conditions to AND together.",
"inputSchema": {
"properties": {
"archetype": {
"description": "e.g. 'headless-shopify', 'woocommerce-stores'",
"type": "string"
},
"city": {
"description": "case-insensitive city name",
"type": "string"
},
"domain": {
"description": "exact domain match (e.g. 'gymshark.com')",
"type": "string"
},
"founder": {
"description": "case-insensitive substring",
"type": "string"
},
"limit": {
"default": 50,
"description": "max rows (1-500)",
"type": "integer"
},
"market_country": {
"description": "ISO-2 (e.g. 'us')",
"type": "string"
},
"signal_type": {
"description": "e.g. 'vendor', 'shopify_shopid'",
"type": "string"
},
"signal_value": {
"description": "exact signal value",
"type": "string"
}
},
"type": "object"
},
"name": "directory_query"
}
]
}
},
"bad_protocol_status_code": 200,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
}
},
"remote_url": "https://directory.boolsai.ai/mcp",
"server_card_payload": null,
"server_identifier": "ai.boolsai/directory"
}