# Data Galactica > Data Galactica gives organisations and people a permanent Galactica ID and a sourced record, built from company registers, GLEIF LEI, SEC filings and Wikidata. Browse records and their sources free on the site; API and MCP server access (with free starting credit) let KYB, due-diligence teams and AI assistants resolve names to IDs. - **URL:** https://datagalactica.com - **Category:** developer-tools - **Directory profile:** https://www.aiagentpages.com/listings/datagalactica-com - **Machine spec:** https://www.aiagentpages.com/api/listings/datagalactica-com/spec - **Directory llms.txt:** https://www.aiagentpages.com/listings/datagalactica-com/llms.txt - **Readiness score:** 90 - **Listing status:** Unclaimed - **Origin llms.txt:** https://datagalactica.com/llms.txt - **Origin MCP card:** https://datagalactica.com/.well-known/mcp/server-card.json - **Origin ARD:** https://datagalactica.com/.well-known/ard.json ## Best for - Resolving a company or person name to a permanent ID - KYB and due diligence lookups with sourced records - LEI - SEC and register cross-references ## Differentiators A permanent ID and sourced record for organisations and people ## Query this directory - MCP: https://www.aiagentpages.com/mcp - REST: https://www.aiagentpages.com/api/v1/listings - Developers: https://www.aiagentpages.com/developers - Platform index: https://www.aiagentpages.com/llms.txt ## Structured Data ```json { "spec_version": "1.0", "slug": "datagalactica-com", "url": "https://datagalactica.com", "title": "Data Galactica", "description": "Data Galactica gives organisations and people a permanent Galactica ID and a sourced record, built from company registers, GLEIF LEI, SEC filings and Wikidata. Browse records and their sources free on the site; API and MCP server access (with free starting credit) let KYB, due-diligence teams and AI assistants resolve names to IDs.", "category": "developer-tools", "tags": [ "kyb", "due diligence", "entity resolution", "api", "mcp" ], "readiness_score": 90, "readiness_breakdown": { "level": 5, "score": 90, "probes": [ { "id": "discoverability.robotsTxt", "name": "robots.txt", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "discoverability.sitemap", "name": "sitemap.xml", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "discoverability.linkHeaders", "name": "Link headers (/)", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "discoverability.dnsAid", "name": "DNS-AID + DNSSEC", "pass": false, "path": "", "detail": "DNS for AI Discovery (DNS-AID) well-known entrypoint records not found", "status": null, "counts_toward_profile": true }, { "id": "contentAccessibility.markdownNegotiation", "name": "Markdown negotiation (/)", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "botAccessControl.robotsTxtAiRules", "name": "AI bot rules (robots.txt)", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "botAccessControl.contentSignals", "name": "Content-Signal (robots.txt)", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "botAccessControl.webBotAuth", "name": "Web Bot Auth", "pass": false, "path": "(optional)", "detail": "optional", "status": null, "counts_toward_profile": false }, { "id": "discovery.apiCatalog", "name": "API catalog", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "discovery.oauthDiscovery", "name": "OAuth authorization server", "pass": true, "path": "", "status": null, "counts_toward_profile": false }, { "id": "discovery.oauthProtectedResource", "name": "OAuth protected resource", "pass": true, "path": "", "status": null, "counts_toward_profile": false }, { "id": "discovery.authMd", "name": "auth.md", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "discovery.mcpServerCard", "name": "MCP server card", "pass": true, "path": "", "status": null, "counts_toward_profile": false }, { "id": "discovery.a2aAgentCard", "name": "A2A agent card", "pass": false, "path": "", "detail": "informational", "status": null, "counts_toward_profile": false }, { "id": "discovery.agentSkills", "name": "Agent skills index", "pass": true, "path": "", "status": null, "counts_toward_profile": false }, { "id": "discovery.webMcp", "name": "WebMCP bootstrap", "pass": true, "path": "", "status": null, "counts_toward_profile": false }, { "id": "discovery.ard", "name": "ARD / ai-catalog.json", "pass": true, "path": "", "status": null, "counts_toward_profile": true }, { "id": "discovery.personalAgentProtocol", "name": "discovery.personalAgentProtocol", "pass": false, "path": "", "detail": "informational", "status": null, "counts_toward_profile": false }, { "id": "commerce.x402", "name": "x402 payments", "pass": false, "path": "(optional)", "detail": "optional", "status": null, "counts_toward_profile": false }, { "id": "commerce.mpp", "name": "MPP commerce", "pass": false, "path": "(optional)", "detail": "optional", "status": null, "counts_toward_profile": false }, { "id": "commerce.ucp", "name": "UCP profile", "pass": true, "path": "", "status": null, "counts_toward_profile": false }, { "id": "commerce.acp", "name": "ACP discovery", "pass": true, "path": "", "status": null, "counts_toward_profile": false }, { "id": "commerce.ap2", "name": "AP2 (A2A commerce)", "pass": false, "path": "(optional)", "detail": "optional", "status": null, "counts_toward_profile": false } ], "scanner": "isitagentready", "base_url": "https://datagalactica.com", "score_raw": 84, "site_type": "product", "iar_checks": { "commerce": { "acp": { "status": "pass", "details": { "services": [ "checkout" ], "apiBaseUrl": "https://datagalactica.com/api/v1/acp", "transports": [ "rest" ], "protocolVersion": "2026-04-17", "supportedVersions": [ "2026-04-17" ] }, "message": "ACP discovery document exists", "evidence": [ { "label": "GET /.well-known/acp.json", "action": "fetch", "request": { "url": "https://datagalactica.com/.well-known/acp.json", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a549671999132a30-IAD", "content-type": "application/json; charset=utf-8", "cf-cache-status": "MISS" }, "statusText": "OK", "bodyPreview": "{\n \"protocol\": {\n \"name\": \"acp\",\n \"version\": \"2026-04-17\",\n \"supported_versions\": [\n \"2026-04-17\"\n ],\n \"documentation_url\": \"https://datagalactica.com/commerce.md\"\n },\n \"api_base_url\": \"https://datagalactica.com/api/v1/acp\",\n \"transports\": [\n \"rest\"\n ],\n \"capabilities\": {\n \"services\": [\n \"checkout\"\n ],\n \"supported_currencies\": [\n \"inr\"\n ],\n \"supported_locales\": [\n \"en-IN\"\n ]\n }\n}" } }, { "label": "Validate ACP discovery structure", "action": "validate", "finding": { "outcome": "positive", "summary": "Found ACP protocol version \"2026-04-17\" with 1 transport(s) and 1 service(s)" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "ACP discovery document exists" } } ], "durationMs": 687, "messageRef": { "code": "check.acp.found" } }, "ap2": { "status": "neutral", "message": "AP2 not detected (no A2A Agent Card) (not a commerce site)", "evidence": [ { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "negative", "summary": "No A2A Agent Card found -- AP2 requires an A2A Agent Card" } } ], "messageRef": { "code": "scanner.commerceCheckNotApplicable", "params": { "check": "ap2", "original": { "code": "check.ap2.agentCardMissing" } } } }, "mpp": { "status": "neutral", "message": "MPP payment discovery not detected (not a commerce site)", "evidence": [ { "label": "GET /openapi.json", "action": "fetch", "finding": { "outcome": "neutral", "summary": "/openapi.json returned 404" }, "request": { "url": "https://datagalactica.com/openapi.json", "method": "GET" }, "response": { "status": 404, "headers": { "cf-ray": "a549671989062a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "negative", "summary": "MPP payment discovery not detected" } } ], "durationMs": 674, "messageRef": { "code": "scanner.commerceCheckNotApplicable", "params": { "check": "mpp", "original": { "code": "check.mpp.notDetected" } } } }, "ucp": { "status": "pass", "details": { "hasVersion": true, "hasServices": true, "hasCapabilities": true }, "message": "UCP profile exists", "evidence": [ { "label": "GET /.well-known/ucp", "action": "fetch", "request": { "url": "https://datagalactica.com/.well-known/ucp", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a549671928be2a30-IAD", "content-type": "application/json; charset=utf-8", "cf-cache-status": "MISS" }, "statusText": "OK", "bodyPreview": "{\n \"protocol_version\": \"2026-08-25\",\n \"ucp\": {\n \"version\": \"2026-08-25\",\n \"services\": {\n \"dev.ucp.shopping\": [\n {\n \"version\": \"2026-08-25\",\n \"spec\": \"https://ucp.dev/2026-08-25/specification/overview/\",\n \"transport\": \"rest\",\n \"endpoint\": \"https://datagalactica.com/api/v1/ucp\",\n \"schema\": \"https://ucp.dev/2026-08-25/services/shopping/rest.openapi.json\"\n }\n ]\n },\n \"capabilities\": {\n \"dev.ucp.shopping.checkout\":..." } }, { "label": "Validate UCP profile structure", "action": "validate", "finding": { "outcome": "positive", "summary": "Has ucp.version \"2026-08-25\", services, capabilities" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "UCP profile exists" } } ], "durationMs": 627, "messageRef": { "code": "check.ucp.found" } }, "x402": { "status": "neutral", "message": "x402 payment protocol not detected (not a commerce site)", "evidence": [ { "label": "GET /", "action": "fetch", "finding": { "outcome": "neutral", "summary": "/ returned 200 (not 402)" }, "request": { "url": "https://datagalactica.com/", "method": "GET" }, "response": { "status": 200, "headers": { "age": "11685", "link": "; rel=\"api-catalog\", ; rel=\"service-desc\"; type=\"application/vnd.oai.openapi+json\", ; rel=\"service-doc\"; type=\"text/html\", ; rel=\"describedby\"; type=\"text/markdown\", ; rel=\"describedby\"; type=\"text/plain\", ; rel=\"service-desc\"; type=\"application/json\"", "cf-ray": "a549671958da2a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "HIT" }, "statusText": "OK" } }, { "label": "GET /api", "action": "fetch", "finding": { "outcome": "neutral", "summary": "/api returned 200 (not 402)" }, "request": { "url": "https://datagalactica.com/api", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a549671958e62a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "DYNAMIC" }, "statusText": "OK" } }, { "label": "GET /api/v1", "action": "fetch", "finding": { "outcome": "neutral", "summary": "/api/v1 returned 404 (not 402)" }, "request": { "url": "https://datagalactica.com/api/v1", "method": "GET" }, "response": { "status": 404, "headers": { "cf-ray": "a549671958e72a30-IAD", "content-type": "application/json", "cf-cache-status": "DYNAMIC" }, "statusText": "Not Found" } }, { "label": "GET /platform/v2/x402/discovery/resources", "action": "fetch", "request": { "url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources?limit=500", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a549671938c32a30-IAD", "content-type": "application/json", "cf-cache-status": "DYNAMIC" }, "statusText": "OK" } }, { "label": "GET Bazaar discovery API", "action": "fetch", "finding": { "outcome": "negative", "summary": "Network error querying Bazaar API" }, "request": { "url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources?limit=500", "method": "GET" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "negative", "summary": "x402 payment protocol not detected" } } ], "durationMs": 647, "messageRef": { "code": "scanner.commerceCheckNotApplicable", "params": { "check": "x402", "original": { "code": "check.x402.notDetected" } } } } }, "discovery": { "ard": { "status": "pass", "details": { "entryCount": 3, "entryTypes": { "text/markdown": 1, "application/mcp-server-card+json": 1, "application/vnd.oai.openapi+json": 1 }, "contentType": "application/json; charset=utf-8", "entryIssues": [], "specVersion": "1.0", "hasCollections": false, "hostIdentifier": "did:web:datagalactica.com", "manifestSource": "well-known", "entryIssueCount": 0, "hostDisplayName": "Data Galactica", "searchEndpoints": [], "validEntryCount": 3, "correctMediaType": false, "entriesInspected": 3, "withTrustManifest": 0, "nestedCatalogCount": 0, "urnConformantCount": 3, "discoveryMechanisms": [ "well-known" ], "registryEndpointCount": 0, "withRepresentativeQueries": 3 }, "message": "ARD capability manifest found with 3 agentic resources", "evidence": [ { "label": "Extract Agentmap directives from robots.txt", "action": "parse", "finding": { "outcome": "neutral", "summary": "No Agentmap directives found" } }, { "label": "Extract from page head", "action": "parse", "finding": { "outcome": "neutral", "summary": "No catalog links found" } }, { "label": "GET /.well-known/ai-catalog.json", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received 200 with valid JSON response" }, "request": { "url": "https://datagalactica.com/.well-known/ai-catalog.json", "method": "GET", "headers": { "Accept": "application/json" } }, "response": { "status": 200, "headers": { "cf-ray": "a5496716ae402a30-IAD", "content-type": "application/json; charset=utf-8", "cf-cache-status": "MISS" }, "statusText": "OK", "bodyPreview": "{\"specVersion\":\"1.0\",\"host\":{\"displayName\":\"Data Galactica\",\"identifier\":\"did:web:datagalactica.com\",\"documentationUrl\":\"https://datagalactica.com/api/docs\"},\"entries\":[{\"identifier\":\"urn:air:datagalactica.com:server:datagalactica\",\"displayName\":\"Data Galactica MCP server\",\"description\":\"B2B leads and prospecting data for sales, hiring and research: 28M+ organisations and 98M+ people (strongest on India and the UK), searchable by job title, employer, industry, size and place, with e-mails and ph..." } }, { "label": "Validate manifest entries", "action": "validate", "finding": { "outcome": "positive", "summary": "3 of 3 inspected entries valid; 3 use a conformant urn:air identifier" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "ARD capability manifest found with 3 agentic resources" } }, { "label": "DoH TXT _catalog._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No TXT answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_catalog._agents.datagalactica.com&type=TXT&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_catalog._agents.datagalactica.com\",\"type\":16}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "DoH SRV _search._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No SRV answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_search._agents.datagalactica.com&type=SRV&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_search._agents.datagalactica.com\",\"type\":33}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } } ], "durationMs": 217, "messageRef": { "code": "check.ard.found", "params": { "resourceCount": 3 } } }, "authMd": { "status": "pass", "details": { "skill": "https://datagalactica.com/auth.md", "issuer": "https://datagalactica.com", "claimUri": "https://datagalactica.com/agent/identity/claim", "resource": "https://datagalactica.com/", "warnings": [], "authMdUrl": "https://datagalactica.com/auth.md", "markerCount": 4, "metadataUrl": "https://datagalactica.com/.well-known/oauth-authorization-server", "registerUri": "https://datagalactica.com/agent/identity", "sourceField": "agent_auth", "supportsIdJag": false, "eventsSupported": [], "scopesSupported": [ "api", "profile:read", "profile:write", "notes:write" ], "supportsAnonymous": false, "authorizationServers": [ "https://datagalactica.com" ], "supportsVerifiedEmail": true, "bearerMethodsSupported": [ "header" ], "identityTypesSupported": [ "identity_assertion" ], "assertionTypesSupported": [ "verified_email" ], "credentialTypesSupported": [ "api_key" ], "protectedResourceMetadataUrl": "https://datagalactica.com/.well-known/oauth-protected-resource" }, "message": "Auth.md support detected (verified email)", "evidence": [ { "label": "GET /auth.md", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received 200 response with content-type: text/markdown; charset=utf-8" }, "request": { "url": "https://datagalactica.com/auth.md", "method": "GET", "headers": { "Accept": "text/markdown, text/plain, */*" } }, "response": { "status": 200, "headers": { "cf-ray": "a5496716ce7e2a30-IAD", "content-type": "text/markdown; charset=utf-8", "cf-cache-status": "EXPIRED" }, "statusText": "OK", "bodyPreview": "# Data Galactica auth.md\n\nYou are an AI agent. Data Galactica (https://datagalactica.com) gives a permanent Galactica ID to people (DGP-) and organisations (DGC-)\nand keeps a graded record for each: company registers (India MCA, UK Companies House, GLEIF LEI, US SEC),\nWikidata, career profiles and business lists. Use it through the REST API (`https://api.datagalactica.com/api/v1`, OpenAPI:\n`https://datagalactica.com/api/openapi.json`) or the MCP server (`https://api.datagalactica.com/mcp`, Strea..." } }, { "label": "Detect Auth.md registration markers", "action": "parse", "finding": { "outcome": "positive", "summary": "Found 4 Auth.md marker(s)" } }, { "label": "Detect self-contained Auth.md registration flow", "action": "parse", "finding": { "outcome": "positive", "summary": "Found 7 registration endpoint(s) and 3 credential marker(s)" } }, { "label": "GET /.well-known/oauth-protected-resource", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received JSON response (200)" }, "request": { "url": "https://datagalactica.com/.well-known/oauth-protected-resource", "method": "GET", "headers": { "Accept": "application/json" } }, "response": { "status": 200, "headers": { "age": "219", "cf-ray": "a549671a99f22a30-IAD", "content-type": "application/json", "cf-cache-status": "HIT" }, "statusText": "OK", "bodyPreview": "{\"resource\":\"https://datagalactica.com/\",\"authorization_servers\":[\"https://datagalactica.com\"],\"scopes_supported\":[\"api\",\"profile:read\",\"profile:write\",\"notes:write\"],\"bearer_methods_supported\":[\"header\"],\"resource_name\":\"Data Galactica\",\"resource_documentation\":\"https://datagalactica.com/api#oauth\"}" } }, { "label": "Validate Protected Resource Metadata", "action": "validate", "finding": { "outcome": "positive", "summary": "Valid metadata with resource https://datagalactica.com/ and 1 authorization server(s)" } }, { "label": "GET /.well-known/oauth-protected-resource%60", "action": "fetch", "finding": { "outcome": "negative", "summary": "OAuth Protected Resource Metadata returned 404" }, "request": { "url": "https://datagalactica.com/.well-known/oauth-protected-resource`", "method": "GET", "headers": { "Accept": "application/json" } }, "response": { "status": 404, "headers": { "cf-ray": "a549671aaa012a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "GET /.well-known/oauth-authorization-server", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received JSON response (200)" }, "request": { "url": "https://datagalactica.com/.well-known/oauth-authorization-server", "method": "GET", "headers": { "Accept": "application/json" } }, "response": { "status": 200, "headers": { "age": "2035", "cf-ray": "a549671c0b5d2a30-IAD", "content-type": "application/json", "cf-cache-status": "HIT" }, "statusText": "OK", "bodyPreview": "{\"issuer\":\"https://datagalactica.com\",\"authorization_endpoint\":\"https://datagalactica.com/oauth/authorize\",\"token_endpoint\":\"https://datagalactica.com/oauth/token\",\"registration_endpoint\":\"https://datagalactica.com/oauth/register\",\"scopes_supported\":[\"api\",\"profile:read\",\"profile:write\",\"notes:write\"],\"response_types_supported\":[\"code\"],\"grant_types_supported\":[\"authorization_code\",\"refresh_token\"],\"code_challenge_methods_supported\":[\"S256\"],\"token_endpoint_auth_methods_supported\":[\"none\"],\"serv..." } }, { "label": "Validate agent_auth metadata", "action": "validate", "finding": { "outcome": "positive", "summary": "Found agent_auth with register_uri and supported methods" } }, { "label": "GET /.well-known/oauth-authorization-server%60", "action": "fetch", "finding": { "outcome": "negative", "summary": "OAuth Authorization Server metadata returned 404" }, "request": { "url": "https://datagalactica.com/.well-known/oauth-authorization-server`", "method": "GET", "headers": { "Accept": "application/json" } }, "response": { "status": 404, "headers": { "cf-ray": "a549671c0b5b2a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "Auth.md support detected (verified email)" } } ], "durationMs": 1064, "messageRef": { "code": "check.authMd.detected", "params": { "methods": [ "verified-email" ] } } }, "webMcp": { "status": "pass", "details": { "tools": [ { "name": "search_galactica", "hasSchema": true, "description": "Search Data Galactica people and organisations by name or words. Each hit has a Galactica ID (DGP- person, DGC- organisation) and a grade for its contact details; when names collide, match on place, identifiers and sources, not the grade." }, { "name": "get_entity", "hasSchema": true, "description": "Get a person or organisation card by Galactica ID, CIN, LEI, GB-, CIK- or Wikidata Q-id." }, { "name": "current_page_entity", "hasSchema": true, "description": "The Galactica ID and JSON of the card on this page, if any." } ], "toolCount": 3, "detectionMethod": "imperative_api" }, "message": "Found 3 WebMCP tools via document.modelContext: search_galactica, get_entity, current_page_entity", "evidence": [ { "label": "WebMCP detection", "action": "parse", "finding": { "outcome": "neutral", "summary": "Checking page for WebMCP tool registrations" } }, { "label": "Navigate to https://datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "Loading page to detect WebMCP tool registrations" }, "request": { "url": "https://datagalactica.com", "method": "GET" } }, { "label": "Check imperative WebMCP API", "action": "parse", "finding": { "outcome": "positive", "summary": "Found 3 tool(s) via document.modelContext" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "Found 3 WebMCP tool(s) via document.modelContext" } } ], "durationMs": 915, "messageRef": { "code": "check.webMcp.toolsDetected", "params": { "toolCount": 3, "toolNames": [ "search_galactica", "get_entity", "current_page_entity" ], "detectionMethod": "imperative_api" } } }, "apiCatalog": { "status": "pass", "details": { "apiCount": 4, "hasItems": false, "linksetEntries": 4, "hasNestedCatalogs": false, "correctContentType": true }, "message": "API Catalog found with 4 APIs listed", "evidence": [ { "label": "GET /.well-known/api-catalog", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received 200 with valid JSON response" }, "request": { "url": "https://datagalactica.com/.well-known/api-catalog", "method": "GET", "headers": { "Accept": "application/linkset+json, application/json" } }, "response": { "status": 200, "headers": { "cf-ray": "a54967183fcd2a30-IAD", "content-type": "application/linkset+json; charset=utf-8", "content-length": "1694", "cf-cache-status": "HIT" }, "statusText": "OK", "bodyPreview": "{\"linkset\":[{\"anchor\":\"https://api.datagalactica.com/api/v1\",\"service-desc\":[{\"href\":\"https://datagalactica.com/api/openapi.json\",\"type\":\"application/vnd.oai.openapi+json\"}],\"service-doc\":[{\"href\":\"https://datagalactica.com/api/docs\",\"type\":\"text/html\"},{\"href\":\"https://datagalactica.com/auth.md\",\"type\":\"text/markdown\"}],\"status\":[{\"href\":\"https://datagalactica.com/healthz\",\"type\":\"text/plain\"}]},{\"anchor\":\"https://api.datagalactica.com/mcp\",\"service-desc\":[{\"href\":\"https://datagalactica.com/.we..." } }, { "label": "Validate Linkset structure", "action": "validate", "finding": { "outcome": "positive", "summary": "Found \"linkset\" array with 4 entries" } }, { "label": "Analyze linkset entries", "action": "validate", "finding": { "outcome": "positive", "summary": "4 APIs listed, correct content-type" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "API Catalog found with 4 APIs listed" } } ], "durationMs": 468, "messageRef": { "code": "check.apiCatalog.found", "params": { "apiCount": 4 } } }, "agentSkills": { "status": "pass", "details": { "path": "/.well-known/agent-skills/index.json", "skillCount": 4, "specVersion": "0.2.0", "v2ValidEntries": true }, "message": "Agent Skills index exists with valid JSON", "evidence": [ { "label": "GET /.well-known/agent-skills/index.json", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received 200 response with content-type: application/json; charset=utf-8" }, "request": { "url": "https://datagalactica.com/.well-known/agent-skills/index.json", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a54967181fb42a30-IAD", "content-type": "application/json; charset=utf-8", "cf-cache-status": "MISS" }, "statusText": "OK" } }, { "label": "Detect spec version", "action": "validate", "finding": { "outcome": "positive", "summary": "Found $schema field — v0.2.0 format detected" } }, { "label": "Count skills", "action": "validate", "finding": { "outcome": "neutral", "summary": "Found \"skills\" array with 4 entries (4 with valid v0.2.0 fields)" } }, { "label": "Validate skill count", "action": "validate", "finding": { "outcome": "positive", "summary": "Index contains 4 skills" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "Agent Skills index exists with valid JSON" } } ], "durationMs": 462, "messageRef": { "code": "check.agentSkills.valid" } }, "a2aAgentCard": { "status": "fail", "message": "A2A Agent Card not found", "evidence": [ { "label": "GET /.well-known/agent-card.json", "action": "fetch", "finding": { "outcome": "negative", "summary": "Server returned 404 -- A2A Agent Card not found" }, "request": { "url": "https://datagalactica.com/.well-known/agent-card.json", "method": "GET" }, "response": { "status": 404, "headers": { "cf-ray": "a5496717ff982a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "negative", "summary": "A2A Agent Card not found" } } ], "durationMs": 436, "messageRef": { "code": "check.a2aAgentCard.notFound" } }, "mcpServerCard": { "status": "pass", "details": { "name": "datagalactica", "path": "/.well-known/mcp/server-card.json", "format": "sep", "hasTools": true, "hasVersion": true, "hasTransport": true, "hasDescription": true, "hasCapabilities": true }, "message": "MCP Server Card found at /.well-known/mcp/server-card.json", "evidence": [ { "label": "GET /.well-known/mcp/server-card.json", "action": "fetch", "finding": { "outcome": "positive", "summary": "Found valid MCP Server Card (sep format) at /.well-known/mcp/server-card.json" }, "request": { "url": "https://datagalactica.com/.well-known/mcp/server-card.json", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a5496717df5a2a30-IAD", "content-type": "application/json; charset=utf-8", "cf-cache-status": "EXPIRED" }, "statusText": "OK" } }, { "label": "GET /.well-known/mcp/server-cards.json", "action": "fetch", "finding": { "outcome": "negative", "summary": "/.well-known/mcp/server-cards.json returned 404" }, "request": { "url": "https://datagalactica.com/.well-known/mcp/server-cards.json", "method": "GET" }, "response": { "status": 404, "headers": { "cf-ray": "a5496717ef7f2a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "GET /.well-known/mcp.json", "action": "fetch", "finding": { "outcome": "positive", "summary": "Found valid MCP Server Card (sep format) at /.well-known/mcp.json" }, "request": { "url": "https://datagalactica.com/.well-known/mcp.json", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a5496717ff892a30-IAD", "content-type": "application/json; charset=utf-8", "cf-cache-status": "MISS" }, "statusText": "OK" } }, { "label": "Validate Server Card", "action": "validate", "finding": { "outcome": "positive", "summary": "SEP-format card found at /.well-known/mcp/server-card.json" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "MCP Server Card found at /.well-known/mcp/server-card.json" } } ], "durationMs": 431, "messageRef": { "code": "check.mcpServerCard.found", "params": { "path": "/.well-known/mcp/server-card.json" } } }, "oauthDiscovery": { "status": "pass", "details": { "issuer": "https://datagalactica.com", "source": "oauth-authorization-server", "grantTypes": [ "authorization_code", "refresh_token" ], "hasJwksUri": false, "hasTokenEndpoint": true, "hasAuthorizationEndpoint": true }, "message": "OAuth 2.0 (RFC 8414) discovery metadata found", "evidence": [ { "label": "GET /.well-known/oauth-authorization-server", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received JSON from oauth-authorization-server" }, "request": { "url": "https://datagalactica.com/.well-known/oauth-authorization-server", "method": "GET" }, "response": { "status": 200, "headers": { "age": "2034", "cf-ray": "a5496716ae492a30-IAD", "content-type": "application/json", "cf-cache-status": "HIT" }, "statusText": "OK" } }, { "label": "Validate oauth-authorization-server structure", "action": "validate", "finding": { "outcome": "positive", "summary": "Valid metadata with issuer: https://datagalactica.com" } }, { "label": "GET /.well-known/openid-configuration", "action": "fetch", "finding": { "outcome": "negative", "summary": "openid-configuration returned 404" }, "request": { "url": "https://datagalactica.com/.well-known/openid-configuration", "method": "GET" }, "response": { "status": 404, "headers": { "cf-ray": "a5496716ae482a30-IAD", "content-type": "application/json", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "OAuth 2.0 (RFC 8414) discovery metadata found" } } ], "durationMs": 209, "messageRef": { "code": "check.oauthDiscovery.found", "params": { "source": "oauth-authorization-server" } } }, "personalAgentProtocol": { "status": "fail", "details": { "issuerValidation": "notChecked", "manifestDetected": false }, "message": "Personal Agent Protocol manifest not found", "evidence": [ { "label": "GET /.well-known/poppy.json", "action": "fetch", "request": { "url": "https://datagalactica.com/.well-known/poppy.json", "method": "GET", "headers": { "Accept": "application/json" } }, "response": { "status": 404, "headers": { "cf-ray": "a54967167e182a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "negative", "summary": "Personal Agent Protocol manifest not found" } } ], "durationMs": 204, "messageRef": { "code": "check.personalAgentProtocol.notFound" } }, "oauthProtectedResource": { "status": "pass", "details": { "resource": "https://datagalactica.com/", "resourceName": "Data Galactica", "discoveryMethod": "well-known", "scopesSupported": [ "api", "profile:read", "profile:write", "notes:write" ], "authorizationServers": [ "https://datagalactica.com" ], "resourceDocumentation": "https://datagalactica.com/api#oauth", "bearerMethodsSupported": [ "header" ] }, "message": "OAuth Protected Resource Metadata found (well-known)", "evidence": [ { "label": "GET /.well-known/oauth-protected-resource", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received JSON response (200)" }, "request": { "url": "https://datagalactica.com/.well-known/oauth-protected-resource", "method": "GET" }, "response": { "status": 200, "headers": { "age": "218", "cf-ray": "a5496716be5a2a30-IAD", "content-type": "application/json", "cf-cache-status": "HIT" }, "statusText": "OK" } }, { "label": "Validate resource metadata", "action": "validate", "finding": { "outcome": "positive", "summary": "Valid metadata with resource: https://datagalactica.com/" } }, { "label": "GET /", "action": "fetch", "finding": { "outcome": "neutral", "summary": "Target resource returned 200 (no WWW-Authenticate header)" }, "request": { "url": "https://datagalactica.com", "method": "GET" }, "response": { "status": 200, "headers": { "age": "11685", "link": "; rel=\"api-catalog\", ; rel=\"service-desc\"; type=\"application/vnd.oai.openapi+json\", ; rel=\"service-doc\"; type=\"text/html\", ; rel=\"describedby\"; type=\"text/markdown\", ; rel=\"describedby\"; type=\"text/plain\", ; rel=\"service-desc\"; type=\"application/json\"", "cf-ray": "a5496716ce6e2a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "HIT" }, "statusText": "OK" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "OAuth Protected Resource Metadata found (well-known)" } } ], "durationMs": 24, "messageRef": { "code": "check.oauthProtectedResource.found", "params": { "discoveryMethod": "well-known" } } } }, "discoverability": { "dnsAid": { "status": "fail", "details": { "records": [], "domainsChecked": [ "datagalactica.com" ], "dnssecValidated": false, "txtIndexEntries": [], "aliasRecordCount": 0, "queriesAttempted": [ "SVCB _index._agents.datagalactica.com", "HTTPS _index._agents.datagalactica.com", "SVCB _a2a._agents.datagalactica.com", "HTTPS _a2a._agents.datagalactica.com", "SVCB _mcp._agents.datagalactica.com", "HTTPS _mcp._agents.datagalactica.com", "TXT _index._agents.datagalactica.com" ], "serviceRecordCount": 0, "txtIndexEntryCount": 0 }, "message": "DNS for AI Discovery (DNS-AID) well-known entrypoint records not found", "evidence": [ { "label": "DoH SVCB _index._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No SVCB answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_index._agents.datagalactica.com&type=SVCB&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_index._agents.datagalactica.com\",\"type\":64}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "DoH HTTPS _index._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No HTTPS answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_index._agents.datagalactica.com&type=HTTPS&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_index._agents.datagalactica.com\",\"type\":65}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "DoH SVCB _a2a._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No SVCB answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_a2a._agents.datagalactica.com&type=SVCB&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_a2a._agents.datagalactica.com\",\"type\":64}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "DoH HTTPS _a2a._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No HTTPS answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_a2a._agents.datagalactica.com&type=HTTPS&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_a2a._agents.datagalactica.com\",\"type\":65}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "DoH SVCB _mcp._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No SVCB answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_mcp._agents.datagalactica.com&type=SVCB&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_mcp._agents.datagalactica.com\",\"type\":64}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "DoH HTTPS _mcp._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No HTTPS answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_mcp._agents.datagalactica.com&type=HTTPS&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_mcp._agents.datagalactica.com\",\"type\":65}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "DoH TXT _index._agents.datagalactica.com", "action": "fetch", "finding": { "outcome": "neutral", "summary": "No TXT answers (NXDOMAIN)" }, "request": { "url": "https://cloudflare-dns.com/dns-query?name=_index._agents.datagalactica.com&type=TXT&do=1", "method": "GET", "headers": { "Accept": "application/dns-json" } }, "response": { "status": 200, "headers": { "content-type": "application/dns-json" }, "statusText": "OK", "bodyPreview": "{\"Status\":3,\"TC\":false,\"RD\":true,\"RA\":true,\"AD\":false,\"CD\":false,\"Question\":[{\"name\":\"_index._agents.datagalactica.com\",\"type\":16}],\"Authority\":[{\"name\":\"datagalactica.com\",\"type\":6,\"TTL\":1800,\"data\":\"itzel.ns.cloudflare.com. dns.cloudflare.com. 2417632164 10000 2400 604800 1800\"}]}" } }, { "label": "Parse DNS for AI Discovery (DNS-AID) SVCB/HTTPS records", "action": "parse", "finding": { "outcome": "neutral", "summary": "No DNS for AI Discovery (DNS-AID) SVCB or HTTPS records found at well-known entrypoints" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "negative", "summary": "DNS for AI Discovery (DNS-AID) well-known entrypoint records not found" } } ], "durationMs": 10, "messageRef": { "code": "check.dnsAid.notFound" } }, "sitemap": { "status": "pass", "details": { "url": "https://datagalactica.com/sitemap.xml", "format": "xml", "fromRobotsTxt": true }, "message": "sitemap.xml exists with valid structure", "evidence": [ { "label": "Extract Sitemap directives from robots.txt", "action": "parse", "finding": { "outcome": "positive", "summary": "Found 1 Sitemap directive(s) in robots.txt" } }, { "label": "GET /sitemap.xml", "action": "fetch", "finding": { "outcome": "positive", "summary": "Found valid xml sitemap at https://datagalactica.com/sitemap.xml" }, "request": { "url": "https://datagalactica.com/sitemap.xml", "method": "GET" }, "response": { "status": 200, "headers": { "cf-ray": "a5496716ae412a30-IAD", "content-type": "application/xml; charset=utf-8", "cf-cache-status": "HIT" }, "statusText": "OK" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "sitemap.xml exists with valid structure" } } ], "durationMs": 207, "messageRef": { "code": "check.sitemap.valid" } }, "robotsTxt": { "status": "pass", "message": "robots.txt exists with valid format", "evidence": [ { "label": "GET /robots.txt", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received valid robots.txt (200, text/plain; charset=utf-8)" }, "request": { "url": "https://datagalactica.com/robots.txt", "method": "GET" }, "response": { "status": 200, "headers": { "age": "80", "cf-ray": "a54967168e1c2a30-IAD", "content-type": "text/plain; charset=utf-8", "content-length": "1005", "cf-cache-status": "HIT" }, "statusText": "OK", "bodyPreview": "# Content signals (contentsignals.org): search and answers yes, model training no (see /terms)\nContent-Signal: search=yes, ai-input=yes, ai-train=no\n\nUser-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no\nAllow: /\nDisallow: /search\nDisallow: /feedback\nDisallow: /account\nDisallow: /admin\nDisallow: /pay/\nDisallow: /_md/\nDisallow: /api/v1/\n\n# AI search and assistants are welcome under the rules above: see /llms.txt, /llms-full.txt, /auth.md, /api and\n# /.well-known/api-catalog. Crawler..." } }, { "label": "Validate robots.txt structure", "action": "parse", "finding": { "outcome": "positive", "summary": "Contains valid User-agent directive(s)" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "robots.txt exists with valid format" } } ], "durationMs": 0, "messageRef": { "code": "check.robotsTxt.valid" } }, "linkHeaders": { "status": "pass", "details": { "totalLinks": 6, "relationsFound": [ { "rel": "api-catalog", "href": "/.well-known/api-catalog" }, { "rel": "service-desc", "href": "/api/openapi.json", "type": "application/vnd.oai.openapi+json" }, { "rel": "service-doc", "href": "/api/docs", "type": "text/html" }, { "rel": "describedby", "href": "/auth.md", "type": "text/markdown" }, { "rel": "describedby", "href": "/llms.txt", "type": "text/plain" }, { "rel": "service-desc", "href": "/.well-known/mcp/server-card.json", "type": "application/json" } ] }, "message": "Found agent-useful Link relations: api-catalog, service-desc, service-doc, describedby", "evidence": [ { "label": "GET /", "action": "fetch", "finding": { "outcome": "positive", "summary": "Target page returned 200 with Link header" }, "request": { "url": "https://datagalactica.com", "method": "GET" }, "response": { "status": 200, "headers": { "age": "11685", "link": "; rel=\"api-catalog\", ; rel=\"service-desc\"; type=\"application/vnd.oai.openapi+json\", ; rel=\"service-doc\"; type=\"text/html\", ; rel=\"describedby\"; type=\"text/markdown\", ; rel=\"describedby\"; type=\"text/plain\", ; rel=\"service-desc\"; type=\"application/json\"", "cf-ray": "a549671a99e82a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "HIT" }, "statusText": "OK" } }, { "label": "Parse Link header (RFC 8288)", "action": "parse", "finding": { "outcome": "neutral", "summary": "Parsed 6 link(s) from header" } }, { "label": "Match agent-useful relations", "action": "parse", "finding": { "outcome": "positive", "summary": "Found agent-useful relations: api-catalog, service-desc, service-doc, describedby" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "Found agent-useful Link relations: api-catalog, service-desc, service-doc, describedby" } } ], "durationMs": 632, "messageRef": { "code": "check.linkHeaders.found", "params": { "relationNames": [ "api-catalog", "service-desc", "service-doc", "describedby" ] } } } }, "botAccessControl": { "webBotAuth": { "status": "neutral", "message": "Web Bot Auth directory not found (informational only)", "evidence": [ { "label": "GET /.well-known/http-message-signatures-directory", "action": "fetch", "finding": { "outcome": "negative", "summary": "Server returned 404 -- Web Bot Auth directory not found" }, "request": { "url": "https://datagalactica.com/.well-known/http-message-signatures-directory", "method": "GET" }, "response": { "status": 404, "headers": { "cf-ray": "a5496716ae422a30-IAD", "content-type": "text/html; charset=UTF-8", "cf-cache-status": "BYPASS" }, "statusText": "Not Found" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "negative", "summary": "Web Bot Auth directory not found" } } ], "durationMs": 229, "messageRef": { "code": "scanner.webBotAuthInformational", "params": { "original": { "code": "check.webBotAuth.notFound" } } } }, "contentSignals": { "status": "pass", "details": { "signals": [ { "path": null, "search": "yes", "aiInput": "yes", "aiTrain": "no", "userAgent": "*" }, { "path": null, "search": "yes", "aiInput": "yes", "aiTrain": "no", "userAgent": "*" } ], "signalCount": 2 }, "message": "Content Signals found in robots.txt", "evidence": [ { "label": "GET /robots.txt", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received valid robots.txt (200, text/plain; charset=utf-8)" }, "request": { "url": "https://datagalactica.com/robots.txt", "method": "GET" }, "response": { "status": 200, "headers": { "age": "80", "cf-ray": "a54967168e1c2a30-IAD", "content-type": "text/plain; charset=utf-8", "content-length": "1005", "cf-cache-status": "HIT" }, "statusText": "OK", "bodyPreview": "# Content signals (contentsignals.org): search and answers yes, model training no (see /terms)\nContent-Signal: search=yes, ai-input=yes, ai-train=no\n\nUser-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no\nAllow: /\nDisallow: /search\nDisallow: /feedback\nDisallow: /account\nDisallow: /admin\nDisallow: /pay/\nDisallow: /_md/\nDisallow: /api/v1/\n\n# AI search and assistants are welcome under the rules above: see /llms.txt, /llms-full.txt, /auth.md, /api and\n# /.well-known/api-catalog. Crawler..." } }, { "label": "Parse Content-Signal directives", "action": "parse", "finding": { "outcome": "positive", "summary": "Found 2 Content-Signal directive(s)" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "Content Signals found in robots.txt" } } ], "durationMs": 0, "messageRef": { "code": "check.contentSignals.found" } }, "robotsTxtAiRules": { "status": "pass", "details": { "botsFound": [ "gptbot", "google-extended", "ccbot", "anthropic-ai", "bytespider", "applebot-extended", "amazonbot", "meta-externalagent", "omgilibot", "diffbot", "claudebot" ], "targetPath": "/", "botPolicies": [ { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "gptbot", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "chatgpt-user", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "oai-searchbot", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "google-extended", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "ccbot", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "anthropic-ai", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "claude-web", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "bytespider", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "perplexitybot", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "cohere-ai", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "applebot-extended", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "amazonbot", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "meta-externalagent", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "facebookbot", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "omgilibot", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "diffbot", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "disallow" } ], "userAgent": "claudebot", "ruleSource": "explicit", "matchedRule": { "pattern": "/", "directive": "disallow" }, "effectiveAccess": "disallowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "claude-searchbot", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "claude-user", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" }, { "rules": [ { "pattern": "/", "directive": "allow" }, { "pattern": "/search", "directive": "disallow" }, { "pattern": "/feedback", "directive": "disallow" }, { "pattern": "/account", "directive": "disallow" }, { "pattern": "/admin", "directive": "disallow" }, { "pattern": "/pay/", "directive": "disallow" }, { "pattern": "/_md/", "directive": "disallow" }, { "pattern": "/api/v1/", "directive": "disallow" } ], "userAgent": "perplexity-user", "ruleSource": "wildcard", "matchedRule": { "pattern": "/", "directive": "allow" }, "effectiveAccess": "allowed" } ], "robotsStatus": "ok" }, "message": "Found rules for AI bots: gptbot, google-extended, ccbot, anthropic-ai, bytespider, applebot-extended, amazonbot, meta-externalagent, omgilibot, diffbot, claudebot", "evidence": [ { "label": "GET /robots.txt", "action": "fetch", "finding": { "outcome": "positive", "summary": "Received valid robots.txt (200, text/plain; charset=utf-8)" }, "request": { "url": "https://datagalactica.com/robots.txt", "method": "GET" }, "response": { "status": 200, "headers": { "age": "80", "cf-ray": "a54967168e1c2a30-IAD", "content-type": "text/plain; charset=utf-8", "content-length": "1005", "cf-cache-status": "HIT" }, "statusText": "OK", "bodyPreview": "# Content signals (contentsignals.org): search and answers yes, model training no (see /terms)\nContent-Signal: search=yes, ai-input=yes, ai-train=no\n\nUser-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no\nAllow: /\nDisallow: /search\nDisallow: /feedback\nDisallow: /account\nDisallow: /admin\nDisallow: /pay/\nDisallow: /_md/\nDisallow: /api/v1/\n\n# AI search and assistants are welcome under the rules above: see /llms.txt, /llms-full.txt, /auth.md, /api and\n# /.well-known/api-catalog. Crawler..." } }, { "label": "Scan for AI bot User-agent directives", "action": "parse", "finding": { "outcome": "positive", "summary": "Found rules for AI bots: gptbot, google-extended, ccbot, anthropic-ai, bytespider, applebot-extended, amazonbot, meta-externalagent, omgilibot, diffbot, claudebot" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "Found rules for 11 AI bots" } } ], "durationMs": 0, "messageRef": { "code": "check.aiRules.rulesFound", "params": { "bots": [ "gptbot", "google-extended", "ccbot", "anthropic-ai", "bytespider", "applebot-extended", "amazonbot", "meta-externalagent", "omgilibot", "diffbot", "claudebot" ] } } } }, "contentAccessibility": { "markdownNegotiation": { "status": "pass", "details": { "contentType": "text/markdown; charset=utf-8" }, "message": "Site supports Markdown for Agents", "evidence": [ { "label": "GET target page (Accept: text/markdown)", "action": "fetch", "finding": { "outcome": "positive", "summary": "Response content-type is text/markdown; charset=utf-8 -- site supports markdown negotiation" }, "request": { "url": "https://datagalactica.com", "method": "GET", "headers": { "accept": "text/markdown", "cache-control": "no-cache" } }, "response": { "status": 200, "headers": { "cf-ray": "a549671dae0c75c6-IAD", "content-type": "text/markdown; charset=utf-8" }, "statusText": "OK" } }, { "label": "Conclusion", "action": "conclude", "finding": { "outcome": "positive", "summary": "Site supports Markdown for Agents" } } ], "durationMs": 559, "messageRef": { "code": "check.markdownNegotiation.supported" } } } }, "iar_preset": "api", "level_name": "Agent-Native", "scanned_at": "2026-11-03T06:43:07.215Z", "is_commerce": false, "mismatch_warning": "Declared as product, but scan level suggests full agent-native stack." }, "agent_endpoints": { "llms_txt": "https://datagalactica.com/llms.txt", "ard_url": "https://datagalactica.com/.well-known/ard.json", "mcp_card_url": "https://datagalactica.com/.well-known/mcp/server-card.json" }, "commerce": { "ucp_ready": true, "ucp_manifest_url": "https://datagalactica.com/.well-known/ucp", "checks": [ { "id": "commerce.ucp", "status": "pass", "message": "UCP profile exists" }, { "id": "commerce.ap2", "status": "neutral", "message": "AP2 not detected (no A2A Agent Card) (not a commerce site)" }, { "id": "commerce.acp", "status": "pass", "message": "ACP discovery document exists" }, { "id": "commerce.x402", "status": "neutral", "message": "x402 payment protocol not detected (not a commerce site)" }, { "id": "commerce.mpp", "status": "neutral", "message": "MPP payment discovery not detected (not a commerce site)" } ] }, "site_type": "product", "agent_profile": { "best_for": [ "Resolving a company or person name to a permanent ID", "KYB and due diligence lookups with sourced records", "LEI", "SEC and register cross-references" ], "differentiators": "A permanent ID and sourced record for organisations and people" }, "directory": { "name": "AI Agent Pages", "listing_url": "https://www.aiagentpages.com/listings/datagalactica-com", "spec_url": "https://www.aiagentpages.com/api/listings/datagalactica-com/spec", "llms_txt_url": "https://www.aiagentpages.com/listings/datagalactica-com/llms.txt" }, "updated_at": "2026-11-04T01:20:00.624576+00:00" } ```