bjjgraph
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bjjgraphhow do I get from half guard bottom to back control?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bjjgraph-mcp
A small local MCP server that lets Claude (Claude Code, Claude Desktop) look things up in BJJGraph — a directed graph of Brazilian Jiu-Jitsu positions (each with a top and bottom role), transitions, submissions, systems, principles and learning notes.
Ask things like "How do I get from half guard bottom to the back?" and Claude answers from the graph: routes, step-by-step execution, counters, common errors and defensive options.
This repository contains code only. It does not include BJJGraph data.
The code here is MIT-licensed (see LICENSE).
The BJJGraph data is © Diogo Seca and licensed under PolyForm Noncommercial 1.0.0. It is not included. Each user downloads it themselves with
npm run fetch-data, and may use it for noncommercial purposes only, under that licence's terms.Per its own README, BJJGraph content is produced with AI-assisted generation, and its probabilities are authored estimates that have not been validated by a panel of black belts. Treat it as a study aid, not ground truth.
This project is not affiliated with or endorsed by BJJGraph or its author.
Requirements
Node.js 20 or newer
About 45 MB of disk space for the downloaded data
Related MCP server: LLM Graph Builder MCP
Install
git clone https://github.com/hanwong/bjjgraph-mcp.git
cd bjjgraph-mcp
npm install # also builds the server into dist/
npm run fetch-data # downloads BJJGraph's content JSON into data/bjjgraph.jsonfetch-data downloads the BJJGraph repository archive from GitHub, keeps only content/**/*.json (positions, transitions, submissions, systems, principles, learning), and saves one bundle file in data/ (git-ignored). Downloaded files are only parsed as JSON — nothing from the download is extracted or executed. BJJGraph changes often; rerun npm run fetch-data any time to refresh. The server notices the new file automatically.
Options: npm run fetch-data -- --ref <branch-or-commit> and --out <file>. To use a BJJGraph checkout you already have, set BJJGRAPH_DATA to its folder (or to a bundle file).
Add to Claude Code
From inside the bjjgraph-mcp folder:
claude mcp add bjjgraph --scope user -- node "$(pwd)/dist/src/index.js"Then run claude mcp list to confirm it shows bjjgraph: ... ✓ Connected.
Add to Claude Desktop
Open Settings → Developer → Edit Config (this opens claude_desktop_config.json) and add the server, using the absolute path to your clone:
{
"mcpServers": {
"bjjgraph": {
"command": "node",
"args": ["/absolute/path/to/bjjgraph-mcp/dist/src/index.js"]
}
}
}Restart Claude Desktop.
Tools
Tool | What it does |
| Fuzzy search by name or alias across positions, transitions, submissions, systems, principles and learning notes. Partial names and typos work; common Korean terms (하프가드, 백, 암바…) are translated. |
| Full detail for a transition or submission: outcomes and probabilities, conditions, key principles, setup, execution steps, counters, common errors, training progressions, defender cues and options, variants, safety, clips. Filter with |
| A position for the top and/or bottom role: overview, properties and metrics, principles, decision tree, errors, drills, technique menu, clips. |
| What can be attempted from a position and role, most common first, with where each outcome leads. |
| A few shortest routes between two positions using only successful outcomes, with the techniques for each step. The goal can also be a submission (e.g. "Armbar"). |
| Lists systems, principles, learning notes, positions or submission families. |
| Full content of a system, principle or learning note. |
| Loaded data version (commit, date, counts), how to refresh, licence. |
Long results are paged (page, max_chars; default 6,000 characters) so they don't flood the conversation.
Roles. States are written Position/Role, from the point of view of whoever does the technique: Back Control/Top means you have the back; Half Guard/Bottom means you are playing half guard.
Example questions
"How do I get from half guard bottom to back control?"
"What can I do from closed guard bottom in no-gi?"
"Show me the execution steps and common errors for the Kimura Sweep."
"How do I defend the triangle? Give me the defender's recognition cues."
"Find a route from side control bottom to mount top."
"Which principles does BJJGraph list? Explain Pressure."
"What systems are there for half guard?"
Development
npm test # builds, then runs tests against a tiny made-up fixture (test/fixture)
npm run check-data # sanity checks every tool and entry against your downloaded data한국어 안내
Claude(Claude Code, Claude Desktop)가 BJJGraph의 주짓수 포지션·기술·서브미션·시스템·원리를 찾아볼 수 있게 해 주는 로컬 MCP 서버입니다. 예를 들어 "하프가드에서 백까지 가는 방법 알려줘"라고 물으면, 그래프에서 경로와 단계별 실행 방법, 카운터, 흔한 실수를 찾아 답합니다.
설치
git clone https://github.com/hanwong/bjjgraph-mcp.git
cd bjjgraph-mcp
npm install
npm run fetch-data
claude mcp add bjjgraph --scope user -- node "$(pwd)/dist/src/index.js"BJJGraph 데이터는 자주 갱신되니, 가끔 npm run fetch-data를 다시 실행하면 최신 데이터로 바뀝니다.
꼭 알아 두세요
이 저장소의 코드는 MIT 라이선스입니다.
BJJGraph 데이터는 © Diogo Seca, PolyForm Noncommercial 1.0.0 라이선스이며 이 저장소에 포함되어 있지 않습니다. 각자
npm run fetch-data로 내려받으며, 비상업적 용도로만 쓸 수 있습니다.BJJGraph 내용은 상당 부분 AI의 도움으로 만들어졌고, 확률은 작성자가 정한 추정치입니다(블랙벨트 검증 전). 공부 보조 자료로만 쓰고, 정답으로 받아들이지 마세요.
Available Tools
8 toolsbjj_aboutAbout the dataBRead-only
Which BJJGraph version is loaded (commit, fetch date, counts), how to refresh it, and the data licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered and the description correctly does not claim any mutation. It adds useful context by saying the response contains commit hash, fetch date, counts, and licence, which the agent cannot learn elsewhere since there is no output schema. However, 'how to refresh it' is ambiguous about whether the tool returns refresh instructions or performs a refresh, and no caching/staleness behaviour is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the most important element (version identity) is front-loaded. The only weakness is the fragmentary opening and the slightly vague trailing clause about refreshing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only metadata tool with no output schema, the description covers the essentials: what is reported (version, fetch date, counts, licence) and a hint at refresh guidance. It is close to complete; a sentence clarifying that the tool only reports and does not trigger a refresh would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing parameter-wise for the description to explain. It does not mislead about inputs, and calling it requires no arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (BJJGraph version metadata) and enumerates the specific contents: commit, fetch date, counts, and data licence. That is enough to distinguish it from the seven sibling tools, all of which retrieve graph content rather than environment metadata. It is phrased as a sentence fragment, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when an agent should call this tool versus just proceeding with bjj_search or bjj_get_technique. The phrase 'how to refresh it' hints at a diagnostic/provenance use case, but the description never says to check this before trusting counts, nor that it is optional context. Usage is only weakly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bjj_find_pathsFind paths between positionsARead-only
Finds a few shortest routes from one position to another using only successful technique outcomes (e.g. Half Guard bottom → Back Control top). Each step lists the techniques that achieve it. The target may also be a submission (e.g. "Armbar"): routes then end at a position where it can be attempted.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Goal position (e.g. "Back Control/Top") or a submission name. | |
| from | Yes | Start position, e.g. "Half Guard" or "Half Guard/Bottom". | |
| ruleset | No | Ruleset for probabilities (default gi). | |
| to_role | No | Your role at the goal (default: as in name, else both; top = you control). | |
| from_role | No | Your role at the start (default: as in name, else both). | |
| max_paths | No | How many routes (default 3). | |
| max_steps | No | Max steps per route (default 5). | |
| techniques_per_step | No | Techniques listed per step (default 3). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond them: routes are restricted to successful technique outcomes only, and when the target is a submission the routes terminate at a position where it can be attempted rather than at the submission itself. That is exactly the kind of semantic quirk the schema cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then the output shape, then the submission special case. Minor deduction: "a few" is vaguer than necessary when max_paths has a documented default of 3.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps up by sketching the return shape (each step lists the techniques that achieve it) and the semantics of the submission-target mode. It does not mention path ranking/ordering or what happens when no route exists, which are the remaining gaps for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes slightly beyond it by demonstrating the accepted position string form, including role notation ("Half Guard bottom → Back Control top"), and by clarifying that the `to` value may be a submission name — a non-obvious dual-mode input the schema only hints at.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Finds a few shortest routes from one position to another using only successful technique outcomes." The parenthetical example (Half Guard bottom → Back Control top) makes the domain concrete, and the sibling set (search, get_technique, get_position, position_options) has no other path-finding tool, so it is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description — call it when you want routes between two positions — but there is no explicit when/when-not guidance or comparison to siblings like bjj_position_options or bjj_search, which an agent could plausibly choose instead. The submission-target case is the only conditional rule given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bjj_get_conceptGet system, principle or learning noteARead-only
Full content of a system (game plan, with study guide and sources), a principle (component skills, decision framework, errors, training approaches) or a learning note.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name, e.g. "Pressure", "10th Planet Half Guard Bottom System". | |
| page | No | Page number for long results (default 1). | |
| type | No | Restrict to one kind. | |
| max_chars | No | Max characters per page (default 6000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe read-only operation against a closed knowledge base. The description adds useful context about the content returned for each concept type, but it does not explain pagination behavior or response format beyond implying that results may be long.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that identifies the tool's scope immediately and uses its parenthetical details to clarify the three concept categories. Every clause contributes useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool with a fully described schema and no output schema, the description gives enough information about what content is returned. It omits explicit pagination details, but page and max_chars are documented in the schema, so the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining what the system, principle, and learning note categories contain, which helps an agent choose the appropriate type filter rather than just reading the enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific retrieval action and names the three concept categories it returns: system, principle, and learning note. It clearly distinguishes concept content from the sibling retrieval tools by describing what kinds of resources are covered, though it does not explicitly contrast those siblings by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Full content' implies this tool should be used to retrieve details after a broader search or listing, but it does not explicitly say when to use this versus bjj_search, bjj_list, bjj_get_technique, or bjj_get_position. Usage is inferable from the description, but not fully routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bjj_get_positionGet position detailBRead-only
Detail for one position, for the top and/or bottom role: overview, state properties and metrics, key principles, decision tree, common errors, drills, the technique menu with attempt weights, related positions and clips.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Position name, e.g. "Half Guard", "Back Control" (a "/Top" or "/Bottom" suffix also works). | |
| page | No | Page number for long results (default 1). | |
| role | No | Which role(s) to show (default both). | |
| sections | No | Only include these sections (default all). | |
| max_chars | No | Max characters per page (default 6000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds useful return-content detail, but it does not disclose pagination/truncation behavior despite supporting page and max_chars parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that lists the returned sections without obvious filler. It is dense but appropriately sized, though the long colon-delimited list makes it slightly run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage and useful annotations, the description supplies the missing return-content picture by naming the detail sections and attempt weights. It omits pagination/default behavior, but that is documented in the schema, leaving only a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, role, sections, page, and max_chars. The description repeats the role and section concepts but adds no syntax or defaults beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as one BJJ position and enumerates the detail returned (overview, principles, decisions, drills, menu, related positions, clips). It is specific enough to distinguish this as a detail-retrieval tool, but it does not explicitly differentiate itself from siblings such as bjj_get_technique or bjj_position_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus bjj_position_options, bjj_search, or bjj_get_technique. Usage is only implied by 'Detail for one position,' with no exclusions or alternative-routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bjj_get_techniqueGet technique detailARead-only
Full detail for one transition or submission: outcomes and probabilities, conditions, key principles, setup, execution steps, common counters, common errors, training progressions, defender recognition cues / defensive options / escapes, variants, related content, safety and video clips. Use sections to fetch only what you need.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Technique name, e.g. "Kimura Sweep" or "Armbar from Mount". | |
| page | No | Page number for long results (default 1). | |
| sections | No | Only include these sections (default all). 'defense' = recognition cues, defensive options, escapes. | |
| max_chars | No | Max characters per page (default 6000). | |
| perspective | No | Whose side to show (default both). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds what categories of content exist (outcomes, probabilities, counters, safety, clips), but says nothing about pagination behavior, defaults, or output size limits beyond the schema's page/max_chars fields. No annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose ('Full detail for one transition or submission'), followed by a compact enumeration of what is included and one practical tip. No wasted framing, though the long section list is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All five parameters are documented, annotations cover safety, and there is no output schema to explain. The description tells the agent what content areas exist and how to narrow retrieval via `sections`, which is enough to call it correctly. Minor gap: no explicit mention of how page and max_chars interact for long results, though the schema covers the basics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, page, sections enum, max_chars, and perspective. The description reinforces the meaning of `sections` ('fetch only what you need') and lists returned content categories, but adds no format, ordering, or interaction details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Full detail for one transition or submission', and enumerates the content categories returned. It is clearly distinguishable from list/search siblings by implication, but never names a sibling or explicitly contrasts scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is 'Use `sections` to fetch only what you need', which is a tuning tip rather than when-to-use-this-vs-alternatives guidance. There is no explicit exclusion or routing cue relative to bjj_search, bjj_get_position, or bjj_find_paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bjj_listList BJJGraph entriesARead-only
Lists entries of one kind with a one-line summary: systems (game plans / courses), principles, learning notes, positions or submission families. Optional text filter.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | What to list. 'submission' lists family hubs. | |
| limit | No | Max entries (default 50). | |
| filter | No | Only entries whose name or summary contains this text. | |
| offset | No | Skip this many (paging). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered structurally. The description adds that results include a 'one-line summary,' which is useful behavioral context beyond the schema. It does not describe pagination behavior or other operational details, so the added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no wasted words. The core listing behavior is front-loaded, followed by the optional filter note, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, annotations, and the absence of an output schema, the description provides enough context: it names the supported kinds, says results are one-line summaries, and mentions the optional filter. No critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds semantic clarity for the 'type' values by mapping 'system' to game plans/courses and 'submission' to submission families, going beyond the enum labels even though the schema already documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Lists entries of one kind with a one-line summary.' It also enumerates the supported entry kinds, making the tool's purpose clear. It does not explicitly contrast itself with siblings like bjj_search or bjj_get_technique, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the required 'type' parameter and the phrase 'Lists entries of one kind,' so an agent can infer this is the browsing/list tool. However, the description gives no explicit guidance on when to use this instead of bjj_search or the get tools, and no alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bjj_position_optionsWhat can I do from here?ARead-only
Lists the transitions and submissions that can be attempted from a position in a given role, most commonly attempted first, with success rate and where each outcome (success / failure / counter) leads.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | top or bottom (default: both, or the role in the name). | |
| type | No | Filter by kind (default all). | |
| limit | No | Max techniques per role (default 25). | |
| offset | No | Skip this many (paging). | |
| ruleset | No | Ruleset for probabilities (default gi). | |
| position | Yes | Position name, e.g. "Half Guard" or "Half Guard/Bottom". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, so the description's job is to add context beyond safety. It does: results are ordered by most-commonly-attempted first, each entry carries a success rate, and each outcome maps to where it leads (success/failure/counter). No auth, rate-limit, or paging behavior is discussed, but the substantive output semantics are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with no filler, front-loaded with the verb and resource. It is slightly run-on because the output contract (ordering, success rate, outcome destinations) is packed into the same sentence, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe results, and it does: ordering, success rate, and outcome destinations. With 100% schema coverage on the six (mostly optional) parameters, the gaps are minor — nothing states that role defaults to both or that the position string can encode a slash-suffixed role, though the schema examples cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and enums document role, type, and ruleset, so the schema carries the parameter burden. The description's only added semantics are 'in a given role' and the ordering of results; it does not explain how ruleset affects probabilities or how limit interacts with roles. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: lists transitions and submissions available from a position in a given role. The scope is clearly narrower than a position lookup (bjj_get_position) or a search (bjj_search). It never names a sibling explicitly, so sibling differentiation is only inferable from the scope wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the title 'What can I do from here?' and by the phrase 'from a position in a given role', which suggests pairing with a position lookup. There are no explicit when-to-use/when-not statements and no reference to alternatives such as bjj_get_position or bjj_find_paths, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bjj_searchSearch BJJGraphARead-only
Fuzzy search positions, transitions (sweeps, passes, escapes, takedowns…), submissions, systems, principles and learning notes by name or alias. Partial English names work; common Korean terms are translated.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to one kind (default any). 'technique' = transitions + submissions. | |
| limit | No | Max results (default 10). | |
| query | Yes | Name or part of a name, e.g. "half guard", "kimura", "berimbolo". | |
| offset | No | Skip this many results (paging). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, openWorldHint=false), and the description adds real behavioral color beyond them: matching is fuzzy, aliases are searchable, partial English names resolve, and Korean terms are auto-translated. It does not describe result ordering or pagination behavior, but the schema already documents limit/offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the resource coverage is front-loaded and the fuzzy-matching caveat follows immediately. Every clause carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search over a fully documented schema, the description covers what can be matched and the fuzziness caveat. With no output schema, it could have said what a result looks like (name + type + id), but that gap is small for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters including the type enum are fully documented in structured fields, giving a baseline of 3. The description adds only marginal semantics for 'query' (aliases, partial names, Korean translation) beyond the schema's own 'name or part of a name' wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fuzzy search') and enumerates the resource types it covers (positions, transitions, submissions, systems, principles, learning notes), which distinguishes it from the get_* and list siblings by its search-oriented nature. It does not explicitly name the sibling it replaces, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies lookup usage and notes that partial English names work and Korean terms are translated, which is useful query guidance. It never says when to use this instead of bjj_list or bjj_get_technique/bjj_get_position, leaving the search-vs-retrieve choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
bjj_about - First observed
bjj_find_paths - First observed
bjj_get_concept - First observed
bjj_get_position - First observed
bjj_get_technique - First observed
bjj_list - First observed
bjj_position_options - First observed
bjj_search
TDQS
Scored across 8 tools
Each tool targets a fairly distinct resource+action: search (fuzzy across all), list (enumerate one kind), get_technique/get_position/get_concept (detail per entity type), position_options (menu for a role), find_paths (routing), about (metadata). The closest pair is bjj_list vs bjj_search and bjj_position_options vs bjj_get_position, but the descriptions make the boundaries clear enough that an agent should pick correctly.
All tools share the bjj_ prefix and snake_case, with a mostly predictable verb-first pattern (search, list, get_technique, get_position, get_concept, find_paths) plus two noun-ish outliers (position_options, about). Minor deviation but highly readable.
Eight tools is well-scoped for a read-only knowledge graph: retrieval by search, enumeration, per-entity detail, position menus, pathfinding, and metadata. No obvious redundancy or missing bulk operations that would warrant extra tools.
The surface covers discovery (search/list), drill-down (get_technique/get_position/get_concept), role-based options, and navigation (find_paths), plus version metadata. Minor gaps like no explicit reverse lookup (e.g. techniques that end in a position) or bulk compare are workaroundable via search and find_paths.
Maintenance
Related MCP Connectors
BJJ gym, coach, event, and city data for AI agents. Free base tools, x402-paid premium.
BJJ video analysis — YOLO pose detection + Claude AI technique analysis.
Knowledge graph for AI agents. Query concepts, walk edges, get advisories.
BJJ video analysis — YOLO pose detection, AI technique analysis, and highlight reels.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude to search, query, and interact with an Enterprise Knowledge Management System (EKMS). Supports semantic search, knowledge recommendations, relationship graphs, and feedback recording for enterprise knowledge bases.7MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to automatically extract entities and relationships from URLs, PDFs, and YouTube videos to build structured knowledge graphs in Neo4j. It supports custom schemas, academic citation extraction, and community detection for advanced research and content analysis.Apache 2.0
- FlicenseAqualityDmaintenanceAutomatically organizes and merges learned CS knowledge into a graph structure using Claude for entity/relation extraction and SQLite for storage, with tools for ingestion, querying, merging, and managing nodes and edges.6-
- FlicenseNot gradedqualityDmaintenanceEnables Claude to intelligently analyze and query codebases using knowledge graphs, supporting natural language code search, relationship discovery, and incremental updates.11-