brainkb

MCP server for querying BrainKB, a knowledge base for neuroscience knowledge graphs.

사용해야 할까요

품질 및 안전성

B
설명 품질
96%
스키마 완전성
71%
이름 품질
80%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainbrainkb_ingest_upload에서
  • LOWTool 'brainkb_provenance_job' description lacks action verbbrainkb_provenance_job에서
  • LOWTool 'brainkb_provenance_graph' description lacks action verbbrainkb_provenance_graph에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~6,225토큰 (도구 정의)
~582 B일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 4.86%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "brainkb": {
      "url": "https://mcp.brainkb.org/mcp"
    }
  }
}

원격 엔드포인트

https://mcp.brainkb.org/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (53)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟡brainkb_login(email, password, base_url)

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).

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    },
    "password": {
      "title": "Password",
      "type": "string"
    },
    "base_url": {
      "default": "",
      "title": "Base Url",
      "type": "string"
    }
  },
  "required": [
    "email",
    "password"
  ],
  "title": "brainkb_loginArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "brainkb_loginOutput"
}
⚪brainkb_globus_login(provider, base_url)

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.)

입력 스키마

{
  "type": "object",
  "properties": {
    "provider": {
      "default": "globus",
      "title": "Provider",
      "type": "string"
    },
    "base_url": {
      "default": "",
      "title": "Base Url",
      "type": "string"
    }
  },
  "title": "brainkb_globus_loginArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "brainkb_globus_loginOutput"
}
⚪brainkb_finish_login(code, base_url)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "code": {
      "title": "Code",
      "type": "string"
    },
    "base_url": {
      "default": "",
      "title": "Base Url",
      "type": "string"
    }
  },
  "required": [
    "code"
  ],
  "title": "brainkb_finish_loginArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "brainkb_finish_loginOutput"
}
⚪brainkb_logout

Forget the cached token for this session.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_logoutArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "brainkb_logoutOutput"
}
⚪brainkb_whoami

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.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_whoamiArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "brainkb_whoamiOutput"
}
🟡brainkb_create_token(name, days)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "default": "",
      "title": "Name",
      "type": "string"
    },
    "days": {
      "default": 90,
      "title": "Days",
      "type": "integer"
    }
  },
  "title": "brainkb_create_tokenArguments"
}
🟢brainkb_list_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.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_list_tokensArguments"
}
🟢brainkb_revoke_token(token_id)

Revoke one of your Personal Access Tokens by id (see brainkb_list_tokens). Takes effect immediately — the next call using that token fails.

입력 스키마

{
  "type": "object",
  "properties": {
    "token_id": {
      "title": "Token Id",
      "type": "integer"
    }
  },
  "required": [
    "token_id"
  ],
  "title": "brainkb_revoke_tokenArguments"
}
⚪brainkb_use_token(token, base_url)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "token": {
      "title": "Token",
      "type": "string"
    },
    "base_url": {
      "default": "",
      "title": "Base Url",
      "type": "string"
    }
  },
  "required": [
    "token"
  ],
  "title": "brainkb_use_tokenArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "brainkb_use_tokenOutput"
}
🟡brainkb_list_spaces

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) - 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.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_list_spacesArguments"
}
🟡brainkb_create_space(slug, name, visibility, description, space_type)

Create a workspace/space. The caller becomes owner. slug: lowercase/hyphen id, **globally unique** — if it's already taken the call returns 409 (pick another slug; slugs are never reused/deleted). visibility: 'private' or 'public'; 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).

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "visibility": {
      "default": "private",
      "title": "Visibility",
      "type": "string"
    },
    "description": {
      "default": "",
      "title": "Description",
      "type": "string"
    },
    "space_type": {
      "default": "individual",
      "title": "Space Type",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "name"
  ],
  "title": "brainkb_create_spaceArguments"
}
🟡brainkb_set_space_visibility(slug, visibility)

Set a space 'public' (anyone, even anonymous, can read) or 'private' (members only). Owner only.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "visibility": {
      "title": "Visibility",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "visibility"
  ],
  "title": "brainkb_set_space_visibilityArguments"
}
🟡brainkb_add_space_member(slug, member_email, role)

Add/update a space member. role: 'owner' | 'editor' | 'viewer'. Owner only.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "member_email": {
      "title": "Member Email",
      "type": "string"
    },
    "role": {
      "default": "viewer",
      "title": "Role",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "member_email"
  ],
  "title": "brainkb_add_space_memberArguments"
}
🟡brainkb_add_space_graph(slug, named_graph_iri, description)

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).

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "named_graph_iri": {
      "title": "Named Graph Iri",
      "type": "string"
    },
    "description": {
      "default": "",
      "title": "Description",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "named_graph_iri"
  ],
  "title": "brainkb_add_space_graphArguments"
}
🔴brainkb_ingest_text(named_graph_iri, data, sha256, expected_bytes)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "named_graph_iri": {
      "title": "Named Graph Iri",
      "type": "string"
    },
    "data": {
      "title": "Data",
      "type": "string"
    },
    "sha256": {
      "default": "",
      "title": "Sha256",
      "type": "string"
    },
    "expected_bytes": {
      "default": 0,
      "title": "Expected Bytes",
      "type": "integer"
    }
  },
  "required": [
    "named_graph_iri",
    "data"
  ],
  "title": "brainkb_ingest_textArguments"
}
🟡brainkb_list_uploads

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.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_list_uploadsArguments"
}
🟡brainkb_upload_status(upload_id)

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).

입력 스키마

{
  "type": "object",
  "properties": {
    "upload_id": {
      "title": "Upload Id",
      "type": "string"
    }
  },
  "required": [
    "upload_id"
  ],
  "title": "brainkb_upload_statusArguments"
}
🔴brainkb_discard_upload(upload_id)

Delete one of your staged uploads without ingesting it.

입력 스키마

{
  "type": "object",
  "properties": {
    "upload_id": {
      "title": "Upload Id",
      "type": "string"
    }
  },
  "required": [
    "upload_id"
  ],
  "title": "brainkb_discard_uploadArguments"
}
🟡brainkb_ingest_upload(named_graph_iri, upload_id)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "named_graph_iri": {
      "title": "Named Graph Iri",
      "type": "string"
    },
    "upload_id": {
      "title": "Upload Id",
      "type": "string"
    }
  },
  "required": [
    "named_graph_iri",
    "upload_id"
  ],
  "title": "brainkb_ingest_uploadArguments"
}
⚪brainkb_ingest_files(named_graph_iri, file_paths, max_concurrency)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "named_graph_iri": {
      "title": "Named Graph Iri",
      "type": "string"
    },
    "file_paths": {
      "items": {
        "type": "string"
      },
      "title": "File Paths",
      "type": "array"
    },
    "max_concurrency": {
      "default": 8,
      "title": "Max Concurrency",
      "type": "integer"
    }
  },
  "required": [
    "named_graph_iri",
    "file_paths"
  ],
  "title": "brainkb_ingest_filesArguments"
}
🟢brainkb_list_jobs(limit)

List the user's ingest jobs (newest first) with status and progress.

입력 스키마

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "brainkb_list_jobsArguments"
}
⚪brainkb_job_status(job_id)

Detailed status of one ingest job: status, progress %, current file/stage, per-file failures, and (when complete) a summary.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "title": "Job Id",
      "type": "string"
    }
  },
  "required": [
    "job_id"
  ],
  "title": "brainkb_job_statusArguments"
}
⚪brainkb_recover_job(job_id)

Attempt to recover a stuck/errored ingest job (marks it recoverable/errored).

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "title": "Job Id",
      "type": "string"
    }
  },
  "required": [
    "job_id"
  ],
  "title": "brainkb_recover_jobArguments"
}
🟢brainkb_search(q, space, limit, offset)

Full-text search over the knowledge graphs, access-filtered by space visibility. Pass `space` to scope to one workspace, omit for a full search. Anonymous/other users never see private-space data.

입력 스키마

{
  "type": "object",
  "properties": {
    "q": {
      "title": "Q",
      "type": "string"
    },
    "space": {
      "default": "",
      "title": "Space",
      "type": "string"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    }
  },
  "required": [
    "q"
  ],
  "title": "brainkb_searchArguments"
}
🟢brainkb_read_space(slug)

Read all RDF (JSON-LD) in a space's graphs. Public spaces are readable by anyone; private spaces require membership.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    }
  },
  "required": [
    "slug"
  ],
  "title": "brainkb_read_spaceArguments"
}
🟢brainkb_list_registered_graphs

List registered named graphs visible to the caller (private-space graphs the caller can't access are hidden).

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_list_registered_graphsArguments"
}
🟢brainkb_sparql(sparql_query)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "sparql_query": {
      "title": "Sparql Query",
      "type": "string"
    }
  },
  "required": [
    "sparql_query"
  ],
  "title": "brainkb_sparqlArguments"
}
⚪brainkb_provenance_job(job_id)

PROV-O provenance bundle (JSON-LD) for one ingest job.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "title": "Job Id",
      "type": "string"
    }
  },
  "required": [
    "job_id"
  ],
  "title": "brainkb_provenance_jobArguments"
}
⚪brainkb_provenance_graph(named_graph_iri)

PROV-O ingestion/activity history (JSON-LD) for a named graph.

입력 스키마

{
  "type": "object",
  "properties": {
    "named_graph_iri": {
      "title": "Named Graph Iri",
      "type": "string"
    }
  },
  "required": [
    "named_graph_iri"
  ],
  "title": "brainkb_provenance_graphArguments"
}
⚪brainkb_delta(job_id)

The exact triples a job added (its delta), as JSON-LD.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "title": "Job Id",
      "type": "string"
    }
  },
  "required": [
    "job_id"
  ],
  "title": "brainkb_deltaArguments"
}
🟡brainkb_delta_history(named_graph_iri)

A named graph's change history: one entry per ingest delta (job, triple count, timestamp), newest first.

입력 스키마

{
  "type": "object",
  "properties": {
    "named_graph_iri": {
      "title": "Named Graph Iri",
      "type": "string"
    }
  },
  "required": [
    "named_graph_iri"
  ],
  "title": "brainkb_delta_historyArguments"
}
⚪brainkb_delta_compare(job_id_a, job_id_b)

Compare two jobs' deltas: A-only / B-only / shared triple counts + triples.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id_a": {
      "title": "Job Id A",
      "type": "string"
    },
    "job_id_b": {
      "title": "Job Id B",
      "type": "string"
    }
  },
  "required": [
    "job_id_a",
    "job_id_b"
  ],
  "title": "brainkb_delta_compareArguments"
}
🟡brainkb_capabilities(member)

(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.

입력 스키마

{
  "type": "object",
  "properties": {
    "member": {
      "title": "Member",
      "type": "string"
    }
  },
  "required": [
    "member"
  ],
  "title": "brainkb_capabilitiesArguments"
}
🟡brainkb_grant_capability(member, capability)

(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').

입력 스키마

{
  "type": "object",
  "properties": {
    "member": {
      "title": "Member",
      "type": "string"
    },
    "capability": {
      "title": "Capability",
      "type": "string"
    }
  },
  "required": [
    "member",
    "capability"
  ],
  "title": "brainkb_grant_capabilityArguments"
}
⚪brainkb_revoke_capability(member, capability)

(Admin only) Revoke a previously granted capability from a user.

입력 스키마

{
  "type": "object",
  "properties": {
    "member": {
      "title": "Member",
      "type": "string"
    },
    "capability": {
      "title": "Capability",
      "type": "string"
    }
  },
  "required": [
    "member",
    "capability"
  ],
  "title": "brainkb_revoke_capabilityArguments"
}
🟢brainkb_list_capabilities

(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.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_list_capabilitiesArguments"
}
🟢brainkb_role_capabilities(role)

(Admin only) List the capabilities granted to a role/group (e.g. 'uk_collaborator', 'Lab Member').

입력 스키마

{
  "type": "object",
  "properties": {
    "role": {
      "title": "Role",
      "type": "string"
    }
  },
  "required": [
    "role"
  ],
  "title": "brainkb_role_capabilitiesArguments"
}
🟡brainkb_grant_role_capability(role, capability)

(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.

입력 스키마

{
  "type": "object",
  "properties": {
    "role": {
      "title": "Role",
      "type": "string"
    },
    "capability": {
      "title": "Capability",
      "type": "string"
    }
  },
  "required": [
    "role",
    "capability"
  ],
  "title": "brainkb_grant_role_capabilityArguments"
}
⚪brainkb_revoke_role_capability(role, capability)

(Admin only) Revoke a capability from a role/group.

입력 스키마

{
  "type": "object",
  "properties": {
    "role": {
      "title": "Role",
      "type": "string"
    },
    "capability": {
      "title": "Capability",
      "type": "string"
    }
  },
  "required": [
    "role",
    "capability"
  ],
  "title": "brainkb_revoke_role_capabilityArguments"
}
🟢brainkb_list_access_rules(slug)

List a space's fine-grained access rules (member/manager of the space).

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    }
  },
  "required": [
    "slug"
  ],
  "title": "brainkb_list_access_rulesArguments"
}
🟡brainkb_add_access_rule(slug, action, subject_type, subject_value)

(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'.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "action": {
      "title": "Action",
      "type": "string"
    },
    "subject_type": {
      "title": "Subject Type",
      "type": "string"
    },
    "subject_value": {
      "title": "Subject Value",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "action",
    "subject_type",
    "subject_value"
  ],
  "title": "brainkb_add_access_ruleArguments"
}
🔴brainkb_remove_access_rule(slug, rule_id)

(Space manager) Delete a fine-grained access rule by its id (see brainkb_list_access_rules).

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "rule_id": {
      "title": "Rule Id",
      "type": "integer"
    }
  },
  "required": [
    "slug",
    "rule_id"
  ],
  "title": "brainkb_remove_access_ruleArguments"
}
🟢brainkb_list_users(q, role, limit)

(Admin) List users (profiles) — filter by `q` (name/email/orcid) or `role`. Shows profile_id, email, roles, providers, ban status.

입력 스키마

{
  "type": "object",
  "properties": {
    "q": {
      "default": "",
      "title": "Q",
      "type": "string"
    },
    "role": {
      "default": "",
      "title": "Role",
      "type": "string"
    },
    "limit": {
      "default": 50,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "brainkb_list_usersArguments"
}
🟢brainkb_available_roles

(Admin) List the available roles/groups (Admin, Lab Member, Curator, …).

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_available_rolesArguments"
}
🟡brainkb_create_role(name, category, description)

(Admin) Create a new role/group — e.g. an 'External' collaborator group — which can then be assigned with brainkb_assign_role.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "title": "Name",
      "type": "string"
    },
    "category": {
      "default": "Content",
      "title": "Category",
      "type": "string"
    },
    "description": {
      "default": "",
      "title": "Description",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "title": "brainkb_create_roleArguments"
}
⚪brainkb_assign_role(email, role)

(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).

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    },
    "role": {
      "title": "Role",
      "type": "string"
    }
  },
  "required": [
    "email",
    "role"
  ],
  "title": "brainkb_assign_roleArguments"
}
🔴brainkb_remove_role(email, role)

(Admin) Remove a role/group from a user by email.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    },
    "role": {
      "title": "Role",
      "type": "string"
    }
  },
  "required": [
    "email",
    "role"
  ],
  "title": "brainkb_remove_roleArguments"
}
⚪brainkb_activate_user(email)

(Admin) Activate a user's account (sets the JWT user active) by email.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    }
  },
  "required": [
    "email"
  ],
  "title": "brainkb_activate_userArguments"
}
⚪brainkb_deactivate_user(email)

(Admin) Deactivate a user's account by email.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    }
  },
  "required": [
    "email"
  ],
  "title": "brainkb_deactivate_userArguments"
}
⚪brainkb_ban_user(email, reason)

(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.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    },
    "reason": {
      "title": "Reason",
      "type": "string"
    }
  },
  "required": [
    "email",
    "reason"
  ],
  "title": "brainkb_ban_userArguments"
}
⚪brainkb_unban_user(email)

(Admin) Lift a ban on a user by email.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    }
  },
  "required": [
    "email"
  ],
  "title": "brainkb_unban_userArguments"
}
🟢brainkb_list_permissions

(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.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "brainkb_list_permissionsArguments"
}
🟡brainkb_create_permission(name, resource, action, description)

(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.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "title": "Name",
      "type": "string"
    },
    "resource": {
      "title": "Resource",
      "type": "string"
    },
    "action": {
      "title": "Action",
      "type": "string"
    },
    "description": {
      "default": "",
      "title": "Description",
      "type": "string"
    }
  },
  "required": [
    "name",
    "resource",
    "action"
  ],
  "title": "brainkb_create_permissionArguments"
}

권장 프롬프트

search_research
Search for information about [topic] using brainkb
예상 도구: brainkb_search
find_specific
Find [specific item] using brainkb
예상 도구: brainkb_search
retrieve_data
Get details about [item] from brainkb
예상 도구: brainkb_read_space
fetch_info
Fetch [information type] using brainkb
예상 도구: brainkb_read_space
list_items
List all [items] available in brainkb
예상 도구: brainkb_list_tokens

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 53개
검증됨버전이 기록되지 않음도구 53개