diff --git a/mcp-about.php b/mcp-about.php new file mode 100644 index 0000000..0b1eb53 --- /dev/null +++ b/mcp-about.php @@ -0,0 +1,320 @@ + '🔍', + 'dbn.corpus_search' => '🧭', + 'dbn.corpus_stats' => '📊', + 'dbn.list_documents' => '📚', + 'dbn.get_document' => '📖', + 'dbn.citation_graph' => '🔗', + 'dbn.korrespond' => '✉️', + 'dbn.korrespond_refine' => '✨', + 'dbn.advocate_brief' => '🏛️', + 'dbn.deep_research' => '🔬', + 'dbn.ask' => '💬', + 'dbn.summarize' => '📋', + 'dbn.legal_analysis' => '⚖️', + 'dbn.timeline' => '📅', + 'dbn.barnevernet_analyze' => '📄', + 'dbn.discrepancy_find' => '🔄', + 'dbn.extract_text' => '📑', + 'dbn.transcribe_audio' => '🎤', + 'dbn.translate' => '🌍', + 'dbn.redact' => '🔒', + 'dbn.case_workbench_plan' => '🗂️', + 'dbn.save_to_case' => '💾', +]; + +// Presentation groups (ordered). Any tool not listed falls into "More tools". +$toolGroups = [ + 'Search & retrieval' => ['dbn.search_legal', 'dbn.corpus_search', 'dbn.corpus_stats', 'dbn.list_documents', 'dbn.get_document', 'dbn.citation_graph'], + 'Drafting & correspondence' => ['dbn.korrespond', 'dbn.korrespond_refine', 'dbn.advocate_brief', 'dbn.deep_research'], + 'Analysis' => ['dbn.ask', 'dbn.summarize', 'dbn.legal_analysis', 'dbn.timeline', 'dbn.barnevernet_analyze', 'dbn.discrepancy_find'], + 'Documents, media & privacy'=> ['dbn.extract_text', 'dbn.transcribe_audio', 'dbn.translate', 'dbn.redact'], + 'Case workbench' => ['dbn.case_workbench_plan', 'dbn.save_to_case'], +]; + +// Index tools by slug for grouped rendering. +$bySlug = []; +foreach ($toolCatalog as $t) { + $bySlug[(string)($t['slug'] ?? '')] = $t; +} +$grouped = []; +$claimed = []; +foreach ($toolGroups as $groupName => $slugs) { + $bucket = []; + foreach ($slugs as $s) { + if (isset($bySlug[$s])) { + $bucket[] = $bySlug[$s]; + $claimed[$s] = true; + } + } + if ($bucket) { + $grouped[$groupName] = $bucket; + } +} +$leftover = []; +foreach ($toolCatalog as $t) { + if (empty($claimed[(string)($t['slug'] ?? '')])) { + $leftover[] = $t; + } +} +if ($leftover) { + $grouped['More tools'] = $leftover; +} +?> + + + + + + MCP server — Norwegian legal tools | Do Better Norge + + + + + + + + + + + + + + + + + + +
+ + +
+
Model Context Protocol
+

Norwegian family-law & public-law tools, as an MCP server.

+

+ The Do Better Norge legal toolkit is exposed as a Model Context Protocol server. Any MCP + client — Claude, an n8n agent, Cursor or your own SDK — can search the legal corpus + (family law, child-welfare, procurement, health, labour, tax, ECHR case law and more), + draft correspondence to authorities, analyze Barnevernet documents and more, all grounded + in the live DBN legal sources. +

+ Mint a token & connect → +
+ + +
+ +

+ A live Streamable-HTTP bridge in front of the DBN tool runtime. Tools are registered + dynamically per session, so the catalog always reflects the server. Access is gated by a + member token (Plus/Pro), so each call runs in the token-holder's own tenant. +

+
+
Host
+
Endpoint
+
TransportStreamable HTTP (MCP)
+
AuthBearer token (Plus/Pro member)
+
Health
+
Tools registered
+
+
+ + +
+ +

+ Every tool returns source-grounded output with citations where applicable. This is + informational legal assistance, not legal advice. +

+ + $tools): ?> +
+

+ +
+ +
+ + +
+ +

+ Plus and Pro members mint a personal MCP token, then point Claude Desktop, Claude Code, + Cursor, VS Code or any Streamable-HTTP MCP client at the endpoint above. The server + registers all dbn.* tools per session. +

+ Open MCP setup → +
+ + +
+ +
+ Default privacy is process-and-forget. Tool calls are not persisted to a + case record unless you explicitly call dbn.save_to_case. +
+
+ +
+ + + +