From bohrium-skills
Large Knowledge Model (LKM) via open.bohrium.com. Use when: user asks about searching scientific knowledge graphs, verifying claims with evidence, querying variable relationships, or batch OCR of papers. NOT for: general paper search (use bohrium-paper-search), knowledge base management (use bohrium-knowledge-base).
How this skill is triggered — by the user, by Claude, or both
Slash command
/bohrium-skills:bohrium-lkmThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
LKM endpoints on `open.bohrium.com` provide scientific knowledge graph search, claim verification with evidence chains, variable relationship queries, and batch paper OCR.
LKM endpoints on open.bohrium.com provide scientific knowledge graph search, claim verification with evidence chains, variable relationship queries, and batch paper OCR.
Core capabilities:
| Endpoint | Function |
|---|---|
/v2/lkm/search | Knowledge graph semantic search |
/v2/lkm/claims/match | Claim matching: find evidence supporting/refuting a scientific claim |
/v2/lkm/claims/:id/evidence | Get detailed evidence chain for a specific claim |
/v2/lkm/variables/batch | Batch query variable relationships (e.g., temperature vs. catalytic activity) |
/v2/lkm/papers/ocr/batch | Batch paper OCR (extract structured content) |
Use when:
Don't use for:
bohrium-paper-searchbohrium-knowledge-basebohrium-pdf-parserNo CLI support — HTTP API only.
"bohrium-lkm": {
"enabled": true,
"apiKey": "YOUR_BOHR_ACCESS_KEY",
"env": {
"BOHR_ACCESS_KEY": "YOUR_BOHR_ACCESS_KEY"
}
}
import os, requests
AK = os.environ["BOHR_ACCESS_KEY"]
BASE = "https://open.bohrium.com/openapi/v2/lkm"
H = {"Authorization": f"Bearer {AK}", "Content-Type": "application/json"}
/lkm/searchr = requests.post(f"{BASE}/search", headers=H, json={
"query": "effect of temperature on lithium ion battery degradation",
"limit": 10
})
data = r.json()
print(data)
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
query | string | yes | Natural language search query |
limit | int | no | Max results |
/lkm/claims/matchSubmit a scientific claim, get back evidence that supports or refutes it (with source papers and relevance scores).
r = requests.post(f"{BASE}/claims/match", headers=H, json={
"text": "Graphene oxide improves the mechanical strength of concrete",
"limit": 5
})
data = r.json()
# data["data"]["variables"] contains matched claims
# data["data"]["papers"] contains related paper details
# data["data"]["new_claim_likely"] indicates if this might be a novel claim
for item in data.get("data", {}).get("variables", []):
print(f" Claim ID: {item['id']}")
print(f" Role: {item.get('role')}") # premise / conclusion
print(f" Score: {item.get('score')}")
print(f" Content: {item.get('content')[:100]}...")
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
text | string | yes | Scientific claim to verify |
limit | int | no | Max matching results |
Response fields:
| Field | Description |
|---|---|
data.new_claim_likely | Whether this might be a novel claim (insufficient support/refutation) |
data.variables[] | List of matched existing claims |
data.variables[].id | Claim ID (use for evidence chain lookup) |
data.variables[].content | Claim content (with data and references) |
data.variables[].role | premise or conclusion |
data.variables[].score | Relevance score |
data.variables[].provenance | Source info (paper ID, version) |
data.papers | Related paper details map (keyed by paper ID) |
/lkm/claims/:id/evidenceGet detailed evidence for a specific claim ID (source papers, experimental data, reasoning paths).
claim_id = "abc123"
r = requests.get(f"{BASE}/claims/{claim_id}/evidence", headers=H)
data = r.json()
for ev in data.get("data", []):
print(f" Paper: {ev.get('paper_title')}")
print(f" Evidence: {ev.get('text')}")
print(f" Type: {ev.get('evidence_type')}")
/lkm/variables/batchBatch query variable details by ID. Variable IDs can be obtained from /lkm/search or /lkm/claims/match responses.
r = requests.post(f"{BASE}/variables/batch", headers=H, json={
"ids": ["gcn_b2bf079b541a4fa0", "gcn_5cecd02c3d8a4e61"]
})
data = r.json()
for var in data.get("data", {}).get("variables", []):
print(f" ID: {var['id']}")
print(f" Content: {var.get('content')[:100]}...")
# data["data"]["not_found"] lists IDs that were not found
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
ids | string[] | yes | Variable/claim IDs (obtained from other LKM endpoints) |
/lkm/papers/ocr/batchBatch OCR extraction from papers.
r = requests.post(f"{BASE}/papers/ocr/batch", headers=H, json={
"paper_ids": ["doi:10.1038/s41586-021-03819-2", "doi:10.1126/science.abf3041"]
})
data = r.json()
for paper in data.get("data", []):
print(f" Paper: {paper.get('title')}")
print(f" Status: {paper.get('status')}")
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
paper_ids | string[] | yes | Paper identifiers (DOI or internal ID) |
AK="$BOHR_ACCESS_KEY"
# Knowledge graph search
curl -s -X POST "https://open.bohrium.com/openapi/v2/lkm/search" \
-H "Authorization: Bearer $AK" -H "Content-Type: application/json" \
-d '{"query":"lithium battery degradation mechanism","limit":10}' | jq .
# Claim matching
curl -s -X POST "https://open.bohrium.com/openapi/v2/lkm/claims/match" \
-H "Authorization: Bearer $AK" -H "Content-Type: application/json" \
-d '{"text":"MoS2 is a promising catalyst for hydrogen evolution","limit":5}' | jq .
# Evidence chain
curl -s -X GET "https://open.bohrium.com/openapi/v2/lkm/claims/abc123/evidence" \
-H "Authorization: Bearer $AK" | jq .
# Variable batch query (IDs from search/claims results)
curl -s -X POST "https://open.bohrium.com/openapi/v2/lkm/variables/batch" \
-H "Authorization: Bearer $AK" -H "Content-Type: application/json" \
-d '{"ids":["gcn_b2bf079b541a4fa0","gcn_5cecd02c3d8a4e61"]}' | jq .
# Batch OCR
curl -s -X POST "https://open.bohrium.com/openapi/v2/lkm/papers/ocr/batch" \
-H "Authorization: Bearer $AK" -H "Content-Type: application/json" \
-d '{"paper_ids":["doi:10.1038/s41586-021-03819-2"]}' | jq .
| Symptom | Cause | Fix |
|---|---|---|
| claims/match returns nothing | Claim too vague | Use specific scientific phrasing with variables and relationships |
| variables/batch timeout | Too many pairs | Submit in batches of 10 or fewer |
| OCR status pending | Backend processing | Poll for results or wait for callback |
npx claudepluginhub dptech-corp/bohrium-skills --plugin bohrium-skillsProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.