{"name":"Bcontext","description":"The context layer for the AI-first company — typed knowledge graph + RAG + agent endpoints. MCP-native.","mcp":{"url":"https://app.bcontext.dev/mcp","transport":"streamable-http","tools":["search_nodes","get_node","create_node","update_node","delete_node","list_nodes","ask_rag","toggle_checklist_item","link_nodes","unlink_nodes","attach_file","list_changes","list_skills","run_skill","list_workspaces","ping"]},"cli":{"package":"@bcontext/cli","bins":["bcontext","bx"],"install":"npx @bcontext/cli login --token bctx_live_…","env":["BCONTEXT_TOKEN","BCONTEXT_URL","BCONTEXT_WORKSPACE"],"recommendation":"Prefer the CLI over MCP when a shell is available — MCP injects its tool schema into model context every turn; a shell command costs ~0 standing tokens. Full parity via `bx mcp <tool> '<json>'`."},"rest":{"base_url":"https://app.bcontext.dev/api","endpoints":[{"method":"POST","path":"/api/agents/context","scope":"agents:read"},{"method":"POST","path":"/api/agents/write","scope":"agents:write"},{"method":"POST","path":"/api/chat","scope":"chat:run"},{"method":"GET","path":"/api/nodes","scope":"nodes:read"},{"method":"POST","path":"/api/nodes","scope":"nodes:write"}]},"auth":{"scheme":"bearer","scopes":["nodes:read","nodes:write","chat:run","skills:execute","agents:read","agents:write","admin:*"],"token_prefix":"bctx_live_"},"contact":"founders@bcontext.es","docs":"https://app.bcontext.dev/docs","conventions":{"content_blocks":{"rule":"Structure node content with H2 (##) headings. Each H2 section becomes a stable, addressable block referenced as /n/<node_id>#<block_id> where block_id = slugify(heading_text).","rationale":"Block-level addressing improves RAG retrieval precision and lets references target a specific section instead of an entire document."},"optimistic_concurrency":{"rule":"Pass if_updated_at (the updated_at you last read) on content patches. A 409 means another session wrote first: re-fetch, rebase, retry with the new timestamp.","rationale":"Multiple agents and humans write the same workspace concurrently; last-write-wins silently destroys their work."},"dependencies":{"rule":"Express task dependencies as typed edges (link_nodes, relation blocked_by), never as prose. Query ready work with list_nodes({unblocked:true}).","rationale":"Structured edges give every agent the same live answer to 'what can I start now' and let briefs report newly-unblocked work."}}}