diff --git a/.well-known/mcp.json b/.well-known/mcp.json new file mode 100644 index 0000000..58d5774 --- /dev/null +++ b/.well-known/mcp.json @@ -0,0 +1,36 @@ +{ + "name": "getbased", + "description": "MCP server that exposes your getbased health data — blood work context, biomarker sections, and an optional RAG knowledge base — as tools for any MCP-compatible agent. Your data stays on your device; the server reads a read-only context summary, not raw records.", + "version": "0.2.0", + "transport": "stdio", + "hosting": "local", + "homepage": "https://getbased.health", + "documentation": "https://app.getbased.health/docs/guide/agent-access", + "repository": "https://github.com/elkimek/getbased-agents/tree/main/packages/mcp", + "license": "GPL-3.0-only", + "install": { + "pypi": "getbased-mcp", + "command": "getbased-mcp", + "bundle": { + "package": "getbased-agent-stack", + "repository": "https://github.com/elkimek/getbased-agents/tree/main/packages/stack", + "description": "Meta-package that bundles the MCP server with the RAG backend and example Claude Code / Hermes / OpenClaw configs." + } + }, + "authentication": { + "type": "token", + "env": "GETBASED_TOKEN", + "description": "Read-only token generated in the getbased app under Settings > Data > Messenger Access. Grants access to lab-context text only — no raw data, no write access. Revocable at any time by regenerating the token." + }, + "gateway": "https://sync.getbased.health", + "tools": [ + { "name": "getbased_lab_context", "description": "Full lab summary — biomarkers, ranges, trends, context cards, supplements, goals. Pass a profile to target a specific profile." }, + { "name": "getbased_section", "description": "Get a specific section (e.g. hormones, lipids) or list all available sections. Token-efficient alternative to the full dump." }, + { "name": "getbased_list_profiles", "description": "List available profiles by name and ID." }, + { "name": "knowledge_search", "description": "Semantic search across the active library of your RAG knowledge base. Requires the getbased-rag server; degrades gracefully if unavailable." }, + { "name": "knowledge_list_libraries", "description": "List all knowledge-base libraries and show which is active." }, + { "name": "knowledge_activate_library", "description": "Switch the active knowledge-base library for subsequent searches." }, + { "name": "knowledge_stats", "description": "Per-source chunk counts for the active library — useful for diagnosing missing results." }, + { "name": "getbased_lens_config", "description": "Show the Custom Knowledge Source endpoint configuration used by the getbased app." } + ] +} diff --git a/robots.txt b/robots.txt index 5def0c7..98141c2 100644 --- a/robots.txt +++ b/robots.txt @@ -1,6 +1,9 @@ # getbased.health robots.txt +# Content Signals — open-source project, all uses welcome +# search: appear in search results | ai-input: ground AI answers (RAG) | ai-train: train AI models User-agent: * +Content-Signal: search=yes, ai-input=yes, ai-train=yes Allow: / Disallow: /thank-you Disallow: /blog-template diff --git a/vercel.json b/vercel.json index 61c6efa..a78d15e 100644 --- a/vercel.json +++ b/vercel.json @@ -11,6 +11,10 @@ "key": "Content-Security-Policy", "value": "default-src 'self'; script-src 'self' 'unsafe-inline' https://umami-iota-olive.vercel.app; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.github.com https://umami-iota-olive.vercel.app; img-src 'self' data:; frame-src 'none'; object-src 'none'; base-uri 'self'" }, + { + "key": "Link", + "value": "; rel=\"alternate\"; type=\"text/plain\"; title=\"llms.txt\", ; rel=\"service-desc\"; type=\"application/json\"; title=\"MCP server card\"" + }, { "key": "X-Content-Type-Options", "value": "nosniff" }, { "key": "X-Frame-Options", "value": "DENY" }, { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" },