{"schema_version":"1.0","name":"AiPassport.cloud","description":"Official digital passports for businesses and specialists. Seller-stated verified passport snapshots for AI search, agents, and crawlers.","endpoints":{"mcp":"https://aipassport.cloud/mcp","mcp_discovery":"https://aipassport.cloud/.well-known/mcp.json","mcp_clients":"https://aipassport.cloud/mcp","platform_index":"https://aipassport.cloud/llms.txt","well_known_llms":"https://aipassport.cloud/.well-known/llms.txt","directory":"https://aipassport.cloud/api/v1/directory","directory_sectors":"https://aipassport.cloud/api/v1/directory/sectors","directory_cities":"https://aipassport.cloud/api/v1/directory/cities","search":"https://aipassport.cloud/api/v1/search","offer_search":"https://aipassport.cloud/api/v1/offers/search","location_offer_search":"https://aipassport.cloud/api/v1/locations/offers/search","openapi":"https://aipassport.cloud/openapi.json","complaint_agent_tasks":"https://aipassport.cloud/api/v1/admin/complaints/agent-tasks","sitemap":"https://aipassport.cloud/sitemap.xml","robots":"https://aipassport.cloud/robots.txt","for_agents":"https://aipassport.cloud/for-agents"},"entity_url_templates":{"human_view":"https://aipassport.cloud/{passport_id}","json_ld":"https://aipassport.cloud/{passport_id}/json","llms_txt":"https://aipassport.cloud/{passport_id}/llms.txt","legacy_human_view":"https://aipassport.cloud/passport/{passport_id}/view","site_tag_js":"https://aipassport.cloud/api/v1/site-tag/{passport_id}.js"},"search":{"method":"GET","optional":true,"required_filters":"At least one of: sector, city, country, tag, parent","dictionaries":"sector values: /api/v1/directory/sectors, city values: /api/v1/directory/cities","example":"https://aipassport.cloud/api/v1/search?sector=health.dental&city=krasnoyarsk","official_only":true,"max_limit":50,"pagination":"Repeat the request with ?cursor=<next_cursor> from the previous response; null means no more results","rate_limit":"30 requests/minute per IP"},"offer_search":{"method":"GET","optional":true,"purpose":"Optional structured search for agents that already support API calls","required_filters":"At least one of: sector, city, country, query, tag, category","dictionaries":"sector values: /api/v1/directory/sectors, city values: /api/v1/directory/cities","example":"https://aipassport.cloud/api/v1/offers/search?city=krasnoyarsk&query=удаление%20зуба&sort=price_asc","sort":["auto","trust","price_asc","fresh"],"sort_default":"auto: a cheaper-please wording in query sorts by price, otherwise trust","official_only_default":true,"active_only_default":true,"max_limit":50,"pagination":"Repeat the request with ?cursor=<next_cursor> from the previous response; null means no more results","rate_limit":"30 requests/minute per IP"},"location_offer_search":{"method":"GET","optional":true,"purpose":"Search effective prices at physical branches and rank them by distance when coordinates are supplied","required_filters":"At least one of: city, brand, passport_id, query","example":"https://aipassport.cloud/api/v1/locations/offers/search?city=krasnoyarsk&brand=bristol&query=водка&latitude=56.0106&longitude=92.8526","sort":["distance","price_asc","trust"],"coordinates":"latitude and longitude are optional but must be supplied together; without them, no result is called nearest","max_limit":50,"rate_limit":"30 requests/minute per IP"},"trust_response_headers":["X-AiPassport-Passport-Id","X-AiPassport-Verified","X-AiPassport-Official","X-AiPassport-Hash","X-AiPassport-Readiness","X-AiPassport-Subscription-Active"],"trust_status_values":{"active":"Passport exists; snapshot may not have a validity date yet.","fresh_snapshot":"Subscription is active and the seller-stated snapshot has a validity date.","stale_snapshot":"Subscription or snapshot freshness is not active; use caution.","confirmed_issues":"Confirmed trust issue or active suspension exists for this passport_id only."},"complaint_policy":{"unverified_reports":"Private until operator confirms; do not lower public trust automatically.","confirmed_reports":"Apply trust warning only to the specific passport_id in JSON-LD and llms.txt.","domain_isolation":"Do not punish an entire seller domain or AiPassport.cloud for one passport issue."},"canonical_routes":{"human_view":"/{passport_id}","json_ld":"/{passport_id}/json","llms_txt":"/{passport_id}/llms.txt","legacy_prefix":"/passport/{passport_id}/... kept for compatibility only"},"json_ld_trust_fields":["trustStatus","confirmedTrustIssues","snapshotValidUntil","dataSource","fieldConfidence","complaintPolicy","itemType on offers"],"complaint_agent_api":{"authenticated":true,"header":"X-Complaint-Agent-Secret","endpoints":{"list":"https://aipassport.cloud/api/v1/admin/complaints/agent-tasks?status=pending","get":"https://aipassport.cloud/api/v1/admin/complaints/{complaint_id}/agent-task","claim":"https://aipassport.cloud/api/v1/admin/complaints/{complaint_id}/agent-claim","report":"https://aipassport.cloud/api/v1/admin/complaints/{complaint_id}/agent-result"},"note":"Private operator API for the platform owner's complaint-processing agent; not required for public search."},"mcp":{"transport":"http-jsonrpc","endpoint":"https://aipassport.cloud/mcp","tools":["list_sectors","list_cities","search_businesses","search_offers","get_passport"],"clients":{"http_jsonrpc":{"endpoint":"https://aipassport.cloud/mcp","methods":["initialize","tools/list","tools/call","ping"],"note":"Один URL для всех HTTP-клиентов MCP."},"cursor":{"file":".cursor/mcp.json","config":{"mcpServers":{"aipassport":{"url":"https://aipassport.cloud/mcp"}}}},"claude_desktop":{"file":"claude_desktop_config.json","config":{"mcpServers":{"aipassport":{"url":"https://aipassport.cloud/mcp"}}}},"openclaw":{"commands":["openclaw mcp add aipassport --url https://aipassport.cloud/mcp","openclaw mcp probe aipassport"],"config_file":"~/.openclaw/openclaw.json","config_snippet":{"mcp":{"servers":{"aipassport":{"url":"https://aipassport.cloud/mcp"}}}},"note":"Работает с любой моделью внутри OpenClaw (DeepSeek, Claude, Qwen и др.)."},"vscode_copilot":{"file":".vscode/mcp.json","config":{"servers":{"aipassport":{"url":"https://aipassport.cloud/mcp"}}}},"stdio_bridge":{"when":"Клиент поддерживает только локальный stdio-процесс, без URL.","env":{"AIPASSPORT_MCP_URL":"https://aipassport.cloud/mcp"},"command":"python scripts/mcp_stdio_bridge.py","cursor_config":{"mcpServers":{"aipassport":{"command":"python","args":["scripts/mcp_stdio_bridge.py"],"env":{"AIPASSPORT_MCP_URL":"https://aipassport.cloud/mcp"}}}}},"no_mcp_fallback":{"manifest":"https://aipassport.cloud/.well-known/aipassport.json","search":"https://aipassport.cloud/api/v1/search","offer_search":"https://aipassport.cloud/api/v1/offers/search","llms_index":"https://aipassport.cloud/llms.txt","note":"Если MCP недоступен — REST и llms.txt/JSON-LD остаются каноническими."}}},"search_architecture":["MCP tools search_businesses / search_offers / get_passport query AiPassport SQLite + text filters (city, tag, query).","Offer search always starts with exact text and filters. Optional vector similarity is merged only when configured embeddings are available; a local hash fallback is disabled by default because it is not a semantic model.","IndexNow is not search: it pings Bing/Yandex to re-crawl passport URLs after publish.","AI Broadcast is not search: VIP may push up to 5 webhook notifications per month to configured AI endpoints when a passport updates.","Crawlers without MCP should use llms.txt, JSON-LD, and sitemap — no vector DB access required."],"optional_request_headers":{"X-AiPassport-Agent":"Agent name for analytics (e.g. perplexity, yandex-browser-agent, openclaw)"},"notes":["MCP server at /mcp — JSON-RPC tools: list_sectors, list_cities, search_businesses, search_offers, get_passport.","Primary path: open the passport human_view, JSON-LD, or per-entity llms.txt. These are canonical and sufficient for crawlers and AI assistants.","API search is optional. Do not abandon a passport if API access is unsupported; use the canonical page, JSON-LD, and llms.txt instead.","Public phone is omitted when owner has not granted phone_publish_consent.","AiPassport is a seller-stated verified passport snapshot, not a live inventory system.","Trust status and confirmed issues apply only to a concrete passport_id. Unverified user reports are private and do not automatically lower public trust.","crypto_hash covers hot offers, full price list, tags, links, address, opening hours and service modes.","Avoid broad crawling when a canonical passport URL is known; prefer the passport page, JSON-LD, and llms.txt facts."]}