accueil / serveurs / Recherche & Web / org.brainkb/brainkb
org.brainkb/brainkb
serveur MCP (Model Context Protocol) · brainkb 1.30.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que org.brainkb/brainkb est sûr ?
Au dernier audit MCP Hub, le serveur MCP « org.brainkb/brainkb » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 71 outils
- brainkb_activate_user≈ 72 tokens
(Admin) Activate a user's account (sets the JWT user active) by email.
Paramètres, retour & exemple (1)
Paramètresemail· string · requis
Exemple d'appel{"name": "brainkb_activate_user", "arguments": {"email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_add_access_rule≈ 233 tokens
(Space manager) Restrict a space action to a subject. action: 'read' | 'write' | 'manage'. subject_type: 'global_role' (e.g. 'Admin','Lab Member') | 'member' (an email) | 'space_role' ('viewer'|'editor'|'owner', matched as >=). When rules exist for an action, only matching callers may perform it; the space owner and Admin/SuperAdmin always bypass (no lockout). Example: restrict writing to Admins -> action='write', subject_type='global_role', subject_value='Admin'.
Paramètres, retour & exemple (4)
Paramètresslug· string · requisaction· string · requissubject_type· string · requissubject_value· string · requis
Exemple d'appel{"name": "brainkb_add_access_rule", "arguments": {"slug": "texte", "action": "texte", "subject_type": "texte", "subject_value": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_add_space_graph≈ 187 tokens
Register a named graph and bind it to a space, so ingest/read on that graph are governed by the space's membership and visibility. Owner/editor only. The named_graph_iri is **globally unique** — one graph belongs to exactly one space. If it's already registered (to any space) the call returns 409; graph bindings are permanent (no unregister/delete).
Paramètres, retour & exemple (3)
Paramètresslug· string · requisdescription· string · optionnelnamed_graph_iri· string · requis
Exemple d'appel{"name": "brainkb_add_space_graph", "arguments": {"slug": "texte", "named_graph_iri": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_add_space_member≈ 109 tokens
Add/update a space member. role: 'owner' | 'editor' | 'viewer'. Owner only.
Paramètres, retour & exemple (3)
Paramètresrole· string · optionnelslug· string · requismember_email· string · requis
Exemple d'appel{"name": "brainkb_add_space_member", "arguments": {"slug": "texte", "member_email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_assign_role≈ 138 tokens
(Admin) Assign a role/group to a user by email (e.g. 'Lab Member', 'External', or a custom group). The user must already have a profile (created on first login/registration). NOTE: assigning the 'Admin'/'SuperAdmin' role is SuperAdmin-only (hierarchy: SuperAdmin > Admin).
Paramètres, retour & exemple (2)
Paramètresrole· string · requisemail· string · requis
Exemple d'appel{"name": "brainkb_assign_role", "arguments": {"role": "texte", "email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_available_roles≈ 56 tokens
(Admin) List the available roles/groups (Admin, Lab Member, Curator, …).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_available_roles", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_ban_user≈ 118 tokens
(Admin) Ban a user by email (reversible; preserves history). This is how accounts are removed — there is NO hard delete. Banning an Admin is SuperAdmin-only; SuperAdmin accounts cannot be banned.
Paramètres, retour & exemple (2)
Paramètresemail· string · requisreason· string · requis
Exemple d'appel{"name": "brainkb_ban_user", "arguments": {"email": "texte", "reason": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_capabilities≈ 93 tokens
(Admin only) Show a user's roles, effective capabilities, and delegated grants. Useful to check why someone can/can't create team spaces, ingest, etc.
Paramètres, retour & exemple (1)
Paramètresmember· string · requis
Exemple d'appel{"name": "brainkb_capabilities", "arguments": {"member": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_create_permission≈ 151 tokens
(Admin) Create a new usermanagement permission, e.g. name='dataset.export', resource='dataset', action='export'. Attach it to roles via the usermanagement role-permissions API.
Paramètres, retour & exemple (4)
Paramètresname· string · requisaction· string · requisresource· string · requisdescription· string · optionnel
Exemple d'appel{"name": "brainkb_create_permission", "arguments": {"name": "texte", "action": "texte", "resource": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_create_role≈ 122 tokens
(Admin) Create a new role/group — e.g. an 'External' collaborator group — which can then be assigned with brainkb_assign_role.
Paramètres, retour & exemple (3)
Paramètresname· string · requiscategory· string · optionneldescription· string · optionnel
Exemple d'appel{"name": "brainkb_create_role", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_create_space≈ 357 tokens
Create a workspace/space, or a subspace inside one. The caller becomes owner. slug: lowercase/hyphen id, **globally unique** — if it's already taken the call returns 409 (pick another slug). visibility: 'private' or 'public' (set per space: a private space may hold a public subspace); description: short human description (recommended — surfaces in the registry); space_type: 'individual' (a personal space — any write-capable role) or 'team' (a shared space — only Admin/SuperAdmin, or a user granted create_team_space). parent_slug: create it as a **subspace** of that space (any depth). Needs the right to manage the parent; the subspace takes the parent's space_type, and everyone with a role in the parent (or above) gets the same role in it. A subspace can't be moved to another parent later.
Paramètres, retour & exemple (6)
Paramètresname· string · requisslug· string · requisspace_type· string · optionnelvisibility· string · optionneldescription· string · optionnelparent_slug· string · optionnel
Exemple d'appel{"name": "brainkb_create_space", "arguments": {"name": "texte", "slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_create_token≈ 184 tokens
Generate a Personal Access Token (PAT) for browser-free auth. Requires you to be logged in already (brainkb_login or brainkb_globus_login). The token is shown ONCE and never again — copy it and set it as BRAINKB_TOKEN in your MCP/skill config; then no login or browser is needed until it expires. `name`: a label so you can tell tokens apart (e.g. 'laptop'). `days`: lifetime (default 90, server-capped). Treat the returned token like a password.
Paramètres, retour & exemple (2)
Paramètresdays· integer · optionnelname· string · optionnel
Exemple d'appel{"name": "brainkb_create_token", "arguments": {"days": 1, "name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_deactivate_user≈ 66 tokens
(Admin) Deactivate a user's account by email.
Paramètres, retour & exemple (1)
Paramètresemail· string · requis
Exemple d'appel{"name": "brainkb_deactivate_user", "arguments": {"email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_delete_space≈ 328 tokens
PERMANENTLY delete a space and everything in it. SuperAdmin only; irreversible. Drops the space's named graphs and the ingestion-history (delta) graphs that hold copies of their data, removes the graphs' registry entries and the space's RDF manifest, and deletes the space with its members, access rules, search entries and SynthScholar reviews (with their kept files). EVERY SUBSPACE below it, at any depth, is deleted the same way, deepest first (`subspaces_deleted`). Each deletion is kept in the provenance graph (who, when, which graphs: prov:invalidated). `confirm_slug` must equal `slug`. Before calling: show the user the space AND its subspaces (brainkb_space_tree) and what will be lost, and get their explicit confirmation in this conversation. Never call it to tidy up on your own initiative. A non-SuperAdmin caller gets 403; if a step fails (502) the message says which spaces were already deleted — the rest is untouched and it is safe to retry.
Paramètres, retour & exemple (2)
Paramètresslug· string · requisconfirm_slug· string · requis
Exemple d'appel{"name": "brainkb_delete_space", "arguments": {"slug": "texte", "confirm_slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_delta≈ 64 tokens
The exact triples a job added (its delta), as JSON-LD.
Paramètres, retour & exemple (1)
Paramètresjob_id· string · requis
Exemple d'appel{"name": "brainkb_delta", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_delta_compare≈ 91 tokens
Compare two jobs' deltas: A-only / B-only / shared triple counts + triples.
Paramètres, retour & exemple (2)
Paramètresjob_id_a· string · requisjob_id_b· string · requis
Exemple d'appel{"name": "brainkb_delta_compare", "arguments": {"job_id_a": "texte", "job_id_b": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_delta_history≈ 89 tokens
A named graph's change history: one entry per ingest delta (job, triple count, timestamp), newest first.
Paramètres, retour & exemple (1)
Paramètresnamed_graph_iri· string · requis
Exemple d'appel{"name": "brainkb_delta_history", "arguments": {"named_graph_iri": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_discard_upload≈ 71 tokens
Delete one of your staged uploads without ingesting it.
Paramètres, retour & exemple (1)
Paramètresupload_id· string · requis
Exemple d'appel{"name": "brainkb_discard_upload", "arguments": {"upload_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_finish_login≈ 158 tokens
Complete an OAuth login started with brainkb_globus_login by exchanging the one-time code shown in the browser for a session token. The code is single-use and never echoed back.
Paramètres, retour & exemple (2)
Paramètrescode· string · requisbase_url· string · optionnel
Exemple d'appel{"name": "brainkb_finish_login", "arguments": {"code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - brainkb_get_space≈ 144 tokens
A space's details: graphs, members (direct, plus `inherited_members` with the parent space each comes from), visibility, `parent_slug`, `ancestors` (root first) and direct `subspaces` — only the ones the caller may see — and the caller's `your_role` / `role_inherited`. Public spaces need no login; member emails are shown to members and admins only.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Exemple d'appel{"name": "brainkb_get_space", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_globus_login≈ 212 tokens
Start an OAuth login (Globus / ORCID / GitHub) for THIS session — use this instead of brainkb_login when the user signs in with Globus rather than a password. Returns a URL to open in a browser; after signing in, the page shows a short one-time code — pass it to brainkb_finish_login(code) to complete. (The browser step is unavoidable: only the user can consent at the provider.)
Paramètres, retour & exemple (2)
Paramètresbase_url· string · optionnelprovider· string · optionnel
Exemple d'appel{"name": "brainkb_globus_login", "arguments": {"base_url": "texte", "provider": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - brainkb_grant_capability≈ 152 tokens
(Admin only) Delegate a capability to a user — e.g. 'create_team_space' or 'manage_team_space' so a Curator/Lab Member can create/manage team spaces. Grantable: create_private_space, create_team_space, manage_team_space, ingest, recover, read_private (NOT the admin-only 'grant'/'sparql_admin').
Paramètres, retour & exemple (2)
Paramètresmember· string · requiscapability· string · requis
Exemple d'appel{"name": "brainkb_grant_capability", "arguments": {"member": "texte", "capability": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_grant_role_capability≈ 186 tokens
(Admin only) Grant a capability to a whole role/group so EVERY member gets it — e.g. give a custom group 'uk_collaborator' the 'ingest' or 'create_private_space' capability. Grantable: create_private_space, create_team_space, manage_team_space, ingest, recover, read_private (NOT the admin-only 'grant'/'sparql_admin'). Create the group first with brainkb_create_role, then assign it to users with brainkb_assign_role.
Paramètres, retour & exemple (2)
Paramètresrole· string · requiscapability· string · requis
Exemple d'appel{"name": "brainkb_grant_role_capability", "arguments": {"role": "texte", "capability": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_ingest_files≈ 144 tokens
Ingest local RDF files (ttl/nt/nq/rdf/owl/jsonld/json) into a named graph. Returns a job_id; runs in the background — poll with brainkb_job_status.
Paramètres, retour & exemple (3)
Paramètresfile_paths· array · requismax_concurrency· integer · optionnelnamed_graph_iri· string · requis
Exemple d'appel{"name": "brainkb_ingest_files", "arguments": {"file_paths": [], "named_graph_iri": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_ingest_text≈ 346 tokens
Ingest raw RDF text (Turtle / N-Triples / JSON-LD, auto-detected) into a named graph. Returns a job_id; ingestion runs in the background — poll with brainkb_job_status. The graph must be registered (see brainkb_add_space_graph) and the caller must have write access to its space. `sha256` / `expected_bytes` are an integrity contract, and you should use them whenever the RDF came from a file. Ingest is append-only — no delete for triples, no unregister for a graph — so RDF that arrives here mangled is permanent. Because `data` is a string, it passes through the caller's context, where dense Turtle is exactly what gets silently altered: ligatures, Greek letters, embedded newlines, escaped quotes. Declare the digest of the bytes you MEANT to send (`shasum -a 256 file.ttl`) and this refuses the write on any mismatch, turning an unrecoverable corruption into a clean rejection.
Paramètres, retour & exemple (4)
Paramètresdata· string · requissha256· string · optionnelexpected_bytes· integer · optionnelnamed_graph_iri· string · requis
Exemple d'appel{"name": "brainkb_ingest_text", "arguments": {"data": "texte", "named_graph_iri": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_ingest_upload≈ 467 tokens
Ingest a file you staged with `POST /upload` into a named graph. This is the route for a large local file: your HTTP client streams the bytes straight to this server over HTTPS, then you name the resulting upload_id here. The server reads its own staged copy and posts it to the ingest API internally, so the RDF never passes through a model's context — nothing to transcribe, no context-window ceiling, and no reason to split the document (splitting breaks blank-node identity and silently detaches triples, permanently). Stage a file with any HTTP client — the point is that the LIBRARY reads the file, so the bytes never pass through a model: import requests, hashlib, pathlib f = pathlib.Path("review.ttl") r = requests.post( "https://mcp.brainkb.org/upload", params={"filename": f.name, "sha256": hashlib.sha256(f.read_bytes()).hexdigest()}, headers={"Authorization": f"Bearer {TOKEN}"}, data=f.open("rb"), # streamed — never loaded into memory ) print(r.json()) # -> {"upload_id": "up_...", "state": "staged"} It returns an upload_id and the sha256 the server computed — compare it with your own before ingesting. Returns a job_id; poll brainkb_job_status, then reconcile brainkb_delta(job_id) against the triple count you expected. The staged copy is deleted once the ingest API has accepted the bytes.
Paramètres, retour & exemple (2)
Paramètresupload_id· string · requisnamed_graph_iri· string · requis
Exemple d'appel{"name": "brainkb_ingest_upload", "arguments": {"upload_id": "texte", "named_graph_iri": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_job_status≈ 86 tokens
Detailed status of one ingest job: status, progress %, current file/stage, per-file failures, and (when complete) a summary.
Paramètres, retour & exemple (1)
Paramètresjob_id· string · requis
Exemple d'appel{"name": "brainkb_job_status", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_access_rules≈ 73 tokens
List a space's fine-grained access rules (member/manager of the space).
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Exemple d'appel{"name": "brainkb_list_access_rules", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_capabilities≈ 96 tokens
(Admin only) Catalog of all KG capabilities, which are delegatable ('grantable'), which are admin-only, and a description of each. Use this to see the available permission options before granting to a user or group/role.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_capabilities", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_jobs≈ 67 tokens
List the user's ingest jobs (newest first) with status and progress.
Paramètres, retour & exemple (1)
Paramètreslimit· integer · optionnel
Exemple d'appel{"name": "brainkb_list_jobs", "arguments": {"limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_permissions≈ 97 tokens
(Admin) List all usermanagement permissions (resource/action pairs used for page-access and role-permission mapping). These are the addable 'permission' options; KG action-capabilities are listed by brainkb_list_capabilities.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_permissions", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_registered_graphs≈ 70 tokens
List registered named graphs visible to the caller (private-space graphs the caller can't access are hidden).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_registered_graphs", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_reserved_graphs≈ 122 tokens
(Admin/SuperAdmin) List reserved named graphs: graph IRIs, or every IRI under a prefix, that only an Admin/SuperAdmin — or, when reserved for a space, that space's managers/editors — may register or bind. Includes the built-in system reservations (BrainKB's metadata and provenance graphs), which nobody can bind.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_reserved_graphs", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_spaces≈ 331 tokens
List spaces the user can see (their own/member spaces + public ones), each annotated with THIS caller's permission so you know what they may do: - your_role: 'owner' | 'editor' | 'viewer' | null (their space membership, including a role inherited from a parent space) - role_inherited: the role comes from a parent space, not this one - parent_slug: the parent space, when this is a subspace the caller can see the parent of (build the tree from it) - is_owner: they own the space - access: 'owner' | 'member' | 'public' (how it's available to them) - can_write: their space role permits ingest (owner/editor) — a real ingest also needs the 'ingest' capability + any per-space access rules. Use this to tell the user which spaces they can read vs. write vs. only see as public. No login needed: an unauthenticated caller gets the public spaces only (read-only). Log in to also see your own/member spaces. `owner` is shown only for spaces the caller is a member of; a public space read by a non-member never exposes its owner's email.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_spaces", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_tokens≈ 89 tokens
List your Personal Access Tokens (metadata only — the secret is never shown): id, name, prefix, created/last-used/expiry, and whether each is active/revoked/expired. Use the id with brainkb_revoke_token.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_tokens", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_uploads≈ 81 tokens
List RDF files YOU have staged with POST /upload but not yet ingested. Shows each upload_id, its size, sha256 and when it expires. Only your own uploads are visible.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_uploads", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_users≈ 113 tokens
(Admin) List users (profiles) — filter by `q` (name/email/orcid) or `role`. Shows profile_id, email, roles, providers, ban status.
Paramètres, retour & exemple (3)
Paramètresq· string · optionnelrole· string · optionnellimit· integer · optionnel
Exemple d'appel{"name": "brainkb_list_users", "arguments": {"q": "texte", "role": "texte", "limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_list_writable_spaces≈ 164 tokens
Spaces the caller can ingest into, each with its graphs (and descriptions) and `parent_slug` for subspaces — decided by the same checks ingestion uses: owner/ editor membership (including a role inherited from a parent space), a space write access rule, or Admin/SuperAdmin. `can_ingest` false means the caller has no write-capable role at all. `unmapped_graphs` are registered graphs in no space. Use this, not brainkb_list_registered_graphs, to choose where to ingest.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_list_writable_spaces", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_login≈ 272 tokens
Authenticate to BrainKB with the user's credentials and cache the JWT for THIS session only (isolated per caller). The password/token are never echoed. Uses single sign-on: one login mints a refresh token, cached for THIS session, which is exchanged on demand for per-service access tokens (query_service, usermanagement, …). Falls back to a legacy per-service token if the backend has no SSO. On the hosted multi-user remote you can skip this and instead have your client send an 'Authorization: Bearer <token>' header (a refresh token unlocks all services).
Paramètres, retour & exemple (3)
Paramètresemail· string · requisbase_url· string · optionnelpassword· string · requis
Exemple d'appel{"name": "brainkb_login", "arguments": {"email": "texte", "password": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - brainkb_logout≈ 83 tokens
Forget the cached token for this session.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_logout", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - brainkb_provenance_graph≈ 78 tokens
PROV-O ingestion/activity history (JSON-LD) for a named graph.
Paramètres, retour & exemple (1)
Paramètresnamed_graph_iri· string · requis
Exemple d'appel{"name": "brainkb_provenance_graph", "arguments": {"named_graph_iri": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_provenance_job≈ 69 tokens
PROV-O provenance bundle (JSON-LD) for one ingest job.
Paramètres, retour & exemple (1)
Paramètresjob_id· string · requis
Exemple d'appel{"name": "brainkb_provenance_job", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_qa_list≈ 300 tokens
Find a canned question BrainKB can answer, then run it with brainkb_qa_run. Prefer these over writing SPARQL: they are vetted against BrainKB's actual vocabulary. Discovery is two steps, so you never read every query at once: 1. brainkb_qa_list() -> the menu: each category's name, a description of the questions it covers, and how many queries it has. Pick the category whose description matches the user's question. 2. brainkb_qa_list(category="<name>") -> that category's queries. Each has `question` (what it answers), `notes` (when to use it, where parameter values come from, what the results mean), `params` (required ones have no default — ask the user rather than guess) and a working `example`. `search="words"` filters queries by words in their id/question/notes; use it alone to search every category when none of the descriptions fits.
Paramètres, retour & exemple (2)
Paramètressearch· string · optionnelcategory· string · optionnel
Exemple d'appel{"name": "brainkb_qa_list", "arguments": {"search": "texte", "category": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_qa_run≈ 145 tokens
Run a canned question from brainkb_qa_list by id. `params` maps parameter names to values; they are validated and escaped, never spliced in raw. Runs through the same SPARQL endpoint as brainkb_sparql, so it needs the same role.
Paramètres, retour & exemple (2)
Paramètresparams· ? · optionnelquery_id· string · requis
Exemple d'appel{"name": "brainkb_qa_run", "arguments": {"query_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_read_space≈ 108 tokens
Read all RDF (JSON-LD) in a space's graphs. Public spaces are readable by anyone without logging in (read-only); private spaces require login and membership. Don't ask the user to log in just to read a public space.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Exemple d'appel{"name": "brainkb_read_space", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_recover_job≈ 73 tokens
Attempt to recover a stuck/errored ingest job (marks it recoverable/errored).
Paramètres, retour & exemple (1)
Paramètresjob_id· string · requis
Exemple d'appel{"name": "brainkb_recover_job", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_remove_access_rule≈ 96 tokens
(Space manager) Delete a fine-grained access rule by its id (see brainkb_list_access_rules).
Paramètres, retour & exemple (2)
Paramètresslug· string · requisrule_id· integer · requis
Exemple d'appel{"name": "brainkb_remove_access_rule", "arguments": {"slug": "texte", "rule_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_remove_role≈ 78 tokens
(Admin) Remove a role/group from a user by email.
Paramètres, retour & exemple (2)
Paramètresrole· string · requisemail· string · requis
Exemple d'appel{"name": "brainkb_remove_role", "arguments": {"role": "texte", "email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_reserve_graph≈ 250 tokens
(Admin/SuperAdmin) Reserve a named graph so other users can't create it. match_type 'exact' reserves one graph IRI; 'prefix' reserves every IRI starting with it (e.g. 'https://brainkb.org/graph/allen/'). Give a `reason` — it is shown to anyone who is refused. Optional `space_slug` reserves it for that space, whose managers/editors may then bind it. Graphs already bound stay where they are; the response lists them under `already_bound`. 409 if it is already reserved, overlaps a system graph, or is bound to another space than `space_slug`.
Paramètres, retour & exemple (4)
Paramètresiri· string · requisreason· string · optionnelmatch_type· string · optionnelspace_slug· string · optionnel
Exemple d'appel{"name": "brainkb_reserve_graph", "arguments": {"iri": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_revoke_capability≈ 90 tokens
(Admin only) Revoke a previously granted capability from a user.
Paramètres, retour & exemple (2)
Paramètresmember· string · requiscapability· string · requis
Exemple d'appel{"name": "brainkb_revoke_capability", "arguments": {"member": "texte", "capability": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_revoke_role_capability≈ 88 tokens
(Admin only) Revoke a capability from a role/group.
Paramètres, retour & exemple (2)
Paramètresrole· string · requiscapability· string · requis
Exemple d'appel{"name": "brainkb_revoke_role_capability", "arguments": {"role": "texte", "capability": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_revoke_token≈ 92 tokens
Revoke one of your Personal Access Tokens by id (see brainkb_list_tokens). Takes effect immediately — the next call using that token fails.
Paramètres, retour & exemple (1)
Paramètrestoken_id· integer · requis
Exemple d'appel{"name": "brainkb_revoke_token", "arguments": {"token_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_role_capabilities≈ 81 tokens
(Admin only) List the capabilities granted to a role/group (e.g. 'uk_collaborator', 'Lab Member').
Paramètres, retour & exemple (1)
Paramètresrole· string · requis
Exemple d'appel{"name": "brainkb_role_capabilities", "arguments": {"role": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_search≈ 166 tokens
Full-text search over the knowledge graphs, access-filtered by space visibility. Pass `space` to scope to one workspace, omit for a full search. No login needed: an unauthenticated caller searches public spaces only. Anonymous/other users never see private-space data.
Paramètres, retour & exemple (4)
Paramètresq· string · requislimit· integer · optionnelspace· string · optionneloffset· integer · optionnel
Exemple d'appel{"name": "brainkb_search", "arguments": {"q": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_set_space_visibility≈ 162 tokens
Set a space 'public' (anyone, even anonymous, can read) or 'private' (members only). Owner only. Everything in a public space is public: making a space public also makes all its subspaces public, and a subspace of a public space cannot be made private (409). Under a private space each subspace can be public or private on its own.
Paramètres, retour & exemple (2)
Paramètresslug· string · requisvisibility· string · requis
Exemple d'appel{"name": "brainkb_set_space_visibility", "arguments": {"slug": "texte", "visibility": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_space_tree≈ 110 tokens
A space and every subspace below it (any depth), nested: each node has slug, name, visibility, the caller's role and whether it's inherited from a parent, and its graph count. Only subspaces the caller may see are included.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Exemple d'appel{"name": "brainkb_space_tree", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_sparql≈ 113 tokens
Run an arbitrary SPARQL query. Requires an Admin/SuperAdmin role (the sparql_admin capability) — for ordinary questions prefer brainkb_search, brainkb_read_space, or the provenance/delta tools, which need no admin role.
Paramètres, retour & exemple (1)
Paramètressparql_query· string · requis
Exemple d'appel{"name": "brainkb_sparql", "arguments": {"sparql_query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_evidence≈ 237 tokens
Evidence spans of an ingested review: the quoted text its claims rest on, with the study, section, relevance, and whether the quote was matched verbatim in the source (`grounded`). Filter by text, claim type, PMID or grounding.
Paramètres, retour & exemple (8)
Paramètresq· string · optionnelpmid· string · optionnelclaim· string · optionnellimit· integer · optionnelspace· string · optionneloffset· integer · optionnelgrounded· ? · optionnelreview_id· string · requis
Exemple d'appel{"name": "brainkb_synthscholar_evidence", "arguments": {"review_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_find_study≈ 152 tokens
Which ingested reviews (that you can read) include or screened a study — by DOI, PMID or part of its title (6+ characters) — and what happened to it in each: included (read in full or from the abstract) or each screening decision with its reason.
Paramètres, retour & exemple (3)
Paramètresdoi· string · optionnelpmid· string · optionneltitle· string · optionnel
Exemple d'appel{"name": "brainkb_synthscholar_find_study", "arguments": {"doi": "texte", "pmid": "texte", "title": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_get_review≈ 153 tokens
One ingested review: summary, its graph and space, the files kept (path, kind, media type, size, sha256), the run's search log and verification, the screening basis and full-text retrieval. Long texts and the per-study list are left out here — read them from the graph or the review page.
Paramètres, retour & exemple (2)
Paramètresspace· string · optionnelreview_id· string · requis
Exemple d'appel{"name": "brainkb_synthscholar_get_review", "arguments": {"review_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_ingest≈ 319 tokens
Ingest a SynthScholar review — the output directory of a run (the folder holding review.json and review.ttl, as the synthscholar skill writes it) — into a space you may write to (see brainkb_list_writable_spaces; you need to be its owner or an editor). A review is unique per space: the same run can go into several spaces, once each. Its graph, https://brainkb.org/synthscholar/<space>/reviews/<protocol.review_id>/, is registered in the space; review.ttl plus an import record (PROV-O: who, when, every kept file with media type, size and sha256, what was left out) are ingested as an ordinary job → job_id (poll brainkb_job_status, reconcile with brainkb_delta). Everything but work/ is kept and shown on the review's page. Once per review per space: the same run into the same space again is refused (409). Reads the MCP server's filesystem, so it follows brainkb_ingest_files' rules (MCP_INGEST_ROOT).
Paramètres, retour & exemple (2)
Paramètresoutput_dir· string · requisspace_slug· string · requis
Exemple d'appel{"name": "brainkb_synthscholar_ingest", "arguments": {"output_dir": "texte", "space_slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_list_reviews≈ 126 tokens
Ingested SynthScholar reviews you can read (public spaces: anyone): id, title, research question, space, graph, included count, when ingested, ingest job. `q` filters on text in the title or research question.
Paramètres, retour & exemple (2)
Paramètresq· string · optionnelspace· string · optionnel
Exemple d'appel{"name": "brainkb_synthscholar_list_reviews", "arguments": {"q": "texte", "space": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_records≈ 284 tokens
Per-study records an ingested review produced. `kind`: `charting` (the data-charting form's answers per study), `appraisal` (critical appraisal by domain) or `narrative` (narrative synthesis rows: design, methods, outcomes, limitations). `q`: text in the answers (e.g. "neo4j" finds the studies that report it); `study`: source id (S-001), title, DOI or PMID; `fields`: comma-separated fields to return (the response lists the available ones).
Paramètres, retour & exemple (8)
Paramètresq· string · optionnelkind· string · requislimit· integer · optionnelspace· string · optionnelstudy· string · optionnelfields· string · optionneloffset· integer · optionnelreview_id· string · requis
Exemple d'appel{"name": "brainkb_synthscholar_records", "arguments": {"kind": "texte", "review_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_screening≈ 327 tokens
The screening audit trail of an ingested review: every decision with its stage (title_abstract | full_text), decision (include | exclude), what it was judged on (title_abstract | full_text | abstract_only), the full-text route and the reason. Filter by any of those, by text or criterion code in the reason (e.g. "EC2"), or by PMID. Also returns counts for the filtered set: by stage and decision, what decisions were judged on, and exclusion reasons by criterion.
Paramètres, retour & exemple (10)
Paramètresq· string · optionnelpmid· string · optionnellimit· integer · optionnelspace· string · optionnelstage· string · optionneloffset· integer · optionnelreason· string · optionneldecision· string · optionnelreview_id· string · requisassessed_on· string · optionnel
Exemple d'appel{"name": "brainkb_synthscholar_screening", "arguments": {"review_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_studies≈ 349 tokens
The included studies of an ingested review, filtered. `q`: text in title, authors, journal, DOI, PMID or keywords. `full_text`: true = read in full, false = abstract only. `source`: full-text route (europe_pmc, unpaywall, ezproxy, arxiv, …). `rob`: risk-of-bias rating (low, high, some concerns). Years inclusive. Each study: ids, title, authors, year, journal, how it was read and by which route, RoB. Paged (`total`, at most 200 per call).
Paramètres, retour & exemple (11)
Paramètresq· string · optionnelrob· string · optionnellimit· integer · optionnelspace· string · optionneloffset· integer · optionnelsource· string · optionnelyear_to· integer · optionnelfull_text· ? · optionnelreview_id· string · requisyear_from· integer · optionnelwith_abstract· boolean · optionnel
Exemple d'appel{"name": "brainkb_synthscholar_studies", "arguments": {"review_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_synthscholar_text≈ 151 tokens
An ingested review's own text: `abstract`, `introduction`, `synthesis`, `bias`, `limitations`, `conclusions`, `research_question`, `search_queries` or `per_group` (the per-group analysis) — or all of them when `section` is empty.
Paramètres, retour & exemple (3)
Paramètresspace· string · optionnelsection· string · optionnelreview_id· string · requis
Exemple d'appel{"name": "brainkb_synthscholar_text", "arguments": {"review_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_unban_user≈ 62 tokens
(Admin) Lift a ban on a user by email.
Paramètres, retour & exemple (1)
Paramètresemail· string · requis
Exemple d'appel{"name": "brainkb_unban_user", "arguments": {"email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_unreserve_graph≈ 94 tokens
(Admin/SuperAdmin) Remove a reservation by its id (see brainkb_list_reserved_graphs). System reservations cannot be removed.
Paramètres, retour & exemple (1)
Paramètresreservation_id· integer · requis
Exemple d'appel{"name": "brainkb_unreserve_graph", "arguments": {"reservation_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_update_space≈ 178 tokens
Rename a space (its display name) and/or change its description. Owner/manager only. The slug can't change: it is the space's IRI, and links, graph bindings and provenance point at it. Pass only what changes; description="" clears it. Confirm the new name with the user before calling.
Paramètres, retour & exemple (3)
Paramètresname· ? · optionnelslug· string · requisdescription· ? · optionnel
Exemple d'appel{"name": "brainkb_update_space", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_upload_status≈ 146 tokens
State of one of your staged/submitted uploads. `state` is `staged` (waiting for brainkb_ingest_upload), `submitting` (the server is streaming it to the ingest API), `submitted` (accepted — `job_id` is set, poll brainkb_job_status) or `failed` (the staged bytes were KEPT, so retry with brainkb_ingest_upload rather than re-uploading).
Paramètres, retour & exemple (1)
Paramètresupload_id· string · requis
Exemple d'appel{"name": "brainkb_upload_status", "arguments": {"upload_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - brainkb_use_token≈ 168 tokens
Use a Personal Access Token (brainkb_pat_...) for THIS session — an alternative to setting BRAINKB_TOKEN in the config. Validates the token, then caches it so subsequent calls authenticate with it. The token is never echoed.
Paramètres, retour & exemple (2)
Paramètrestoken· string · requisbase_url· string · optionnel
Exemple d'appel{"name": "brainkb_use_token", "arguments": {"token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - brainkb_whoami≈ 153 tokens
Report the current caller's auth state (email, authenticated, and when the cached session expires). When signed in it also returns base_url — the backend THIS SERVER talks to, which on a hosted deployment is an internal address and says nothing about the caller's own machine.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "brainkb_whoami", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».