ntopology-mcp
ntopology-mcp
nTop(이전 nTopology)용 MCP 서버로, 노트북 블록 그래프를 직접 읽고 편집하며, nTop Automate를 통해 헤드리스로 실행하고, 결과로 나오는 지오메트리를 측정합니다.
nTop은 공식 MCP 서버를 제공하며, 이는 다른 문제를 해결합니다. 즉, nTop의 문서를 검색합니다. 이 서버는 사용자의 파일을 대상으로 작동합니다. 두 서버는 상호 보완적입니다. 공식 서버는 "토폴로지 최적화를 어떻게 설정할까"에 답하고, 이 서버는 설정을 직접 수행하고 실행합니다.
문서화된 자동화 경로(nTop Automate)는 GUI에서 노트북을 수동으로 만들고, 몇 가지 입력을 변수로 노출한 다음, 스크립트에서 해당 변수를 변경할 것을 요구합니다. 이는 매개변수 스윕을 다룹니다. 블록을 추가하거나, 입력을 다시 연결하거나, 그래프를 재구성하는 것은 허용하지 않습니다. 이 서버는 .ntop 파일을 그 자체로 취급하여 이를 수행합니다. 즉, JSON 블록 그래프를 담는 컨테이너입니다.
도구
도구 | 설명 |
| 버전, 섹션, 블록 및 값 개수, 루트가 평가하는 내용 |
| 타입이 지정된 시그니처, 배선 및 리터럴 값을 가진 블록; 필터 가능, 기본 200개 |
| 연결되지 않은 입력, 중복 ID, 누락된 루트, 값이 없는 리터럴, |
| 스칼라, 파일 경로, 벡터, 점, 부울 또는 열거형 변경 |
| 블록의 입력 슬롯 하나 다시 연결 |
| 타입이 지정된 시그니처에서 계산 블록 추가 |
| 상수 추가 |
| 루트를 선택한 출력으로 지정하고 도달할 수 없는 모든 것을 제거 |
|
|
| nTop 설치에 있는 블록 시그니처 검색 |
| 부피, 면적, 경계 상자, 열린 및 비-매니폴드 엣지 개수, 연결된 구성 요소 |
|
|
| nTop 자체 제공 예제 노트북 및 참조 페이지 검색 |
| 이 머신에서 서버가 찾을 수 있는 것 보고 |
Related MCP server: Onshape MCP Server
요구 사항
nTop 설치. Windows에서 5.54.2로 검증됨.
nTop Automate 라이선스는
run_notebook용. 이는 GUI 시트와 별도로 라이선스가 부여됨; 다른 모든 것은 라이선스 없이 작동.Node.js 20+ 서버 실행용. 테스트 스위트는 21+ 필요,
node --test가 glob을 허용하는 버전.
설치
git clone https://github.com/sohumsuthar/ntopology-mcp.git
cd ntopology-mcp
npm install
npm run build구성
MCP 클라이언트 구성에 추가:
{
"mcpServers": {
"ntopology": {
"command": "node",
"args": ["C:\\path\\to\\ntopology-mcp\\dist\\index.js"],
"env": {
"NTOP_INSTALL_ROOT": "C:\\Program Files\\nTopology\\nTopology"
}
}
}
}NTOP_INSTALL_ROOT는 nTop이 기본 Windows 위치에 있으면 선택 사항입니다. NTOPCL_PATH는 ntopcl.exe를 직접 가리킬 수 있습니다. 먼저 environment를 호출하여 서버가 찾은 것을 확인하세요.
예제
기존 최적화를 다른 설계 공간으로 재타겟팅하고, 하나의 출력 체인으로 줄이고, 실행:
read_graph notebook=bracket.ntop filter=file_path
set_literal_value notebook=bracket.ntop blockId=477 value={"val": "C:/parts/wedge.step"}
prune_graph notebook=bracket.ntop rootInputs=[900] output=bracket_run.ntop
run_notebook notebook=bracket_run.ntop
mesh_stats path=C:/parts/result.stl listComponents=true편집 도구는 쓰기 전에 검증하며 오류가 있는 그래프 저장을 거부하므로, 생성된 모든 것은 이미 검사된 것입니다. 이 서버가 작성하지 않은 노트북(예: nTop GUI에서 편집한 것)은 run_notebook에 시간을 쓰기 전에 validate_graph를 실행하세요.
노트북 형식
.ntop 형식은 nTop에서 문서화되지 않았습니다. 다음은 5.54.2에서 작성된 파일을 검사하여 파생되었으며, 파서는 실제 노트북을 바이트 단위로 왕복하여 검증됩니다.
file : "MAGIC%$1" u64 sectionCount u64 reserved
sectionCount * { name[16], u64 endOffset }
80 zero bytes, then sections laid out in table order
section : "MAGIC@@9" type[16] name[16] u64 contentLength 80 zero bytes, contentmain 섹션에는 두 개의 자식이 있습니다: fn(블록 그래프 JSON)과 leaves(모든 리터럴 값을 담는 index 섹션을 가진 객체 컨테이너). func가 비어 있지 않은 블록은 무언가를 계산하고, func가 비어 있는 블록은 리터럴입니다. 입력은 0과 -1이 모두 연결되지 않음을 의미하며, 생성 블록을 ID로 참조합니다.
알아두면 좋은 동작
이들은 실제 디버깅 시간을 소모하며 가능한 경우 validate_graph 또는 도구 설명에 인코딩되어 있습니다:
list<T>매개변수는 정확히 하나의core.list<T>블록으로 공급되어야 합니다. 두 개의 암시적 값을 목록 슬롯에 직접 연결하면 nTop이 전체 파일을 로드 시 "파일을 로드할 수 없음"이라는 일반 오류로 거부하며 아무것도 명명하지 않습니다.validate_graph는 실제로 발생하는 형태를 포착합니다:list<T>매개변수가 있는 블록에서 선언된 매개변수 수를 지나치는 연결된 엣지.추가적인 후행 연결되지 않은 입력 슬롯은 정상입니다. 블록 버전이 선택적 매개변수를 얻을 때 nTop 자체가 이를 생성하므로 오류가 아닙니다.
plane<point,vector,vector>는 원점과 평면을 생성하는 두 벡터를 받습니다. 법선은 두 번째 인수가 아니라 그들의 외적입니다.offset_implicit은 직관과 반대입니다: 양수 오프셋은 침식합니다. 볼록한 엣지를 둥글게(형태학적 열기)는offset(+r)후offset(-r)입니다.boolean_union의 블렌드 열거형:1은 접합부에 재료를 추가하고,2는 제거하며,0은 하드 유니온입니다.implicit_to_meshv2.4.0의 세 번째 입력은 최소 피처 크기입니다. 5mm로 설정하면 5mm 플레이트가 조용히 사라집니다.버전 접미사는 중요합니다. 바이너리에는 블록의 모든 과거 수정본이 포함되지만, nTop은 현재 것만 등록합니다. 오래된 수정본은 라이선스가 없는 툴킷과 동일한 "알 수 없는 블록 … 설치되지 않은 Toolkit 또는 Connector" 메시지로 실패하므로, 오래된 시그니처는 라이선스 누락과 정확히 동일하게 보입니다.
search_blocks는 이름의 최신 수정본을 먼저 반환합니다; 이를 선호하고, 버전이 없는 형태는 의심하세요.연결되지 않은 입력은
-1(Empty)이며0(None)이 아닙니다. 필수 입력에0이 있으면 nTop이 파일 로드를 거부합니다. 그러나-1도 보편적으로 안전하지 않습니다: 일부 선택적 입력은Input at N is Empty but optional로 거부하며 리터럴을 공급해야 합니다. 주변 노트북이 이미 하는 방식을 따르고,validate_graph와 시험 실행으로 나머지를 결정하세요.ntopcl -o는 그래프 자체의output키가 지정하는 블록을 보고하며,set_output이 이를 설정합니다. 루트 그룹의 입력은 노트북 출력이 아닙니다;set_output없이Output path specified, but can't find output in notebook.오류가 발생합니다.시계열을 노출하는 결과 블록은 1부터 인덱싱되며, 1단계는 종종 답이 아닌 비물리적 초기화입니다. 이를 읽으면 오류 없이 그럴듯해 보이는 넌센스가 생성됩니다.
최적화 중 영역 보존은
fe_region_by_implicit로 공급되는passive_region_constraint<region>을 사용하며, 최적화 제약 목록에 추가됩니다. 초기 밀도 입력은 아무것도 고정하지 않습니다 — nTop 문서는 시작 추측일 뿐이라고 설명합니다.
nTop은 자체 예제를 제공합니다 - 먼저 읽으세요
nTop은 약 100개의 작동 예제 노트북을
C:\ProgramData Topology\documentation\ExtendedBlockDocs\에 설치하고, 전체 HTML 참조 페이지는
block-documentationlocks\ 아래에 있습니다. find_example는 둘 다 검색합니다. 예제 노트북은 블록의 배선, 리터럴 형태 및 속성 경로를 몇 초 안에 결정하며, 오류 메시지에서 동일한 것을 역공학하는 데는 몇 시간이 걸립니다. 추측하기 전에 먼저 확인하세요.
리터럴 값 형태
리터럴 값은 타입별로 저장되며 형태는 균일하지 않습니다:
타입 | 값 |
|
|
| 세 개의 그러한 객체 배열 |
|
|
|
|
|
|
|
|
잘못된 형태는 로드 시 Leaf failed to deserialize with block/variable <name>로 실패합니다.
블록 시그니처
nTop은 자체 바이너리 내부에 블록 시그니처를 ASCII 문자열로 저장하며, 더 이상 등록되지 않은 수정본도 포함합니다. search_blocks는 런타임에 설치에서 이를 추출하고 각 이름의 최신 수정본을 먼저 정렬합니다. 이 저장소에는 시그니처 데이터가 포함되지 않습니다 — 시그니처는 nTop의 것이며, 이 서버는 재배포하지 않고 라이선스가 있는 설치에서 읽습니다.
제한 사항
컨테이너 형식은 역공학되었으며 nTop 5.54.2에 대해서만 검증되었습니다.
inspect_notebook은 각 파일이 기록하는 버전을 보고합니다. 다른 버전은 검증되지 않은 것으로 취급하고 백업을 유지하세요.편집 도구는
output을 전달하지 않으면 제자리에 씁니다. 검증에 실패하는 그래프 쓰기를 거부하지만, 편집이 모델에 의미적으로 올바른지 알 수 없습니다.run_notebook은 nTop Automate 라이선스가 필요합니다. 없으면ntopcl이 로그인 후 종료되고 오류가 표시됩니다.실제로는 Windows 전용입니다, nTop이 실행되는 곳이기 때문입니다.
개발
npm run check # type-check src and test
npm test # build, then run the test suite
npm run format:check # Prettier is enforced by config, not by CI테스트는 자체 포함되어 있으며 nTop이 필요하지 않습니다. 두 스위트는 더 많은 것을 제공할 때 확장됩니다:
NTOP_TEST_NOTEBOOKS— 세미콜론으로 구분된.ntop경로, 바이트 단위로 왕복. 이는 nTop 설치가 아닌 제공된 경로에 따라 제한됩니다. 저장소에는 노트북이 포함되지 않으므로, 위의 왕복 주장은 신뢰하지 말고 자신의 파일로 다시 검증해야 합니다.카탈로그 스위트는 실제 설치를 찾으면 스캔하고, 그렇지 않으면 건너뜁니다.
라이선스
MIT — LICENSE 참조.
nTop과 제휴하거나 보증하지 않습니다. "nTop" 및 "nTopology"는 해당 소유자의 상표입니다.
Available Tools
14 toolsadd_blockA
Add a computed block. Give the full typed signature from search_blocks. Inputs are source block ids in parameter order; use 0 for an unconnected optional input. A list parameter takes exactly one core.list block.
| Name | Required | Description | Default |
|---|---|---|---|
| func | Yes | Typed signature, e.g. "box_from_corners<point,point>" | |
| name | Yes | ||
| type | Yes | Output type, e.g. "implicit" | |
| inputs | Yes | ||
| output | No | ||
| blockId | No | Defaults to the next free id | |
| notebook | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses input behavior (source block ids in order, 0 for unconnected, list parameter requirement) but does not mention side effects, permissions, or return values. It adds some behavioral detail but is not comprehensive.
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 concise sentences, front-loaded with the core action. Each sentence adds essential information about signature, input structure, and list handling. No redundancy or wasted words.
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 7 parameters, no annotations, and no output schema, the description covers the two most complex parameters (func and inputs) but omits guidance for the other required parameters (name, output, notebook). An agent may struggle to fill all fields correctly, especially since the schema descriptions are sparse.
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 only 43%, so the description must compensate. It clarifies the func parameter (typed signature from search_blocks) and the inputs array (order, 0 for optional, list handling). However, it leaves name, output, and notebook unexplained. It partially fills the gap but not fully.
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 the action 'Add a computed block' with a clear verb and resource. It implies differentiation from add_literal through the word 'computed' and the specifics about typed signatures and inputs, but does not explicitly name the sibling tool. Overall it is clear about what it does.
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?
It instructs to get the signature from search_blocks, implying a prerequisite step. It explains how to construct inputs (order, 0 for unconnected, list types). However, it does not explicitly state when to prefer this over add_literal or other alternatives, so the usage context is partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_literalC
Add a literal block holding a constant. Value shape follows nTop: a length scalar is {"isFinite":true,"units":{"length":1},"val":0.005} in metres, a point is an array of three such objects, an enum is {"enum":0}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes | Literal type, e.g. "real", "point", "file_path", "bool", "unit_length_enum" | |
| value | Yes | ||
| output | No | ||
| blockId | No | ||
| notebook | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'Add a literal block holding a constant' and dives into value formatting. It does not disclose side effects (does it modify the notebook in place?), return behavior, permissions, or any constraints on the operation. As a write operation with no annotation coverage, this is a significant gap.
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 sentence plus examples, which is efficient. It front-loads the action and then provides the critical value-shape details. The structure is clean, though the value examples could arguably be moved to the parameter schema. It earns its place for conveying essential information without fluff.
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 6 parameters, 4 required, no output schema, and no annotations, the description is incomplete. It only explains the value parameter's shape; notebook, name, output, and blockId are left entirely to the agent's inference. There is no mention of return values or behavior on failure. The tool likely operates in a complex notebook context, and the description does not equip an agent to call it correctly for all required inputs.
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 only 17% (only the type property has a description). The description compensates by explaining the exact shape of the 'value' parameter for common literal types (length scalar, point, enum), which is valuable. However, other parameters (notebook, name, output, blockId) receive no extra meaning beyond the schema. The description adds value where it matters most but doesn't fully compensate for the low coverage.
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 clear action and resource: 'Add a literal block holding a constant.' It's distinct from generic add_block and set_literal_value, though it doesn't explicitly name siblings. The purpose is understandable at a glance, but it could be sharper about what makes this different from adding other block types.
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 guidance on when to use this tool versus alternatives like set_literal_value or add_block. No conditions, prerequisites, or exclusions are given. An agent has to infer the intended use case from the name and sibling context, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
environmentB
Report whether ntopcl and an nTop installation were found, and how many block signatures are visible.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool 'reports' information, implying a read-only operation, but does not explicitly confirm no side effects, describe return format, or mention any environmental prerequisites.
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, focused sentence that directly states what the tool does with no fluff. It is well-structured and easily scannable.
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-parameter, no-output-schema tool, the description covers what the agent needs to know to call it and interpret its purpose. It could explain 'block signatures' further but that is likely domain-specific context not required for invocation.
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 has zero parameters and schema coverage is 100% (vacuously). Per the baseline for 0 parameters, a score of 4 is appropriate; no additional parameter information is needed or possible.
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 uses a clear verb ('Report') and specifies the resource (ntopcl, nTop installation, block signatures). It is easily distinguished from siblings like add_block or search_blocks, though it does not explicitly name alternatives.
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?
No guidance on when to use this tool versus alternatives. It does not state prerequisites, typical call timing, or why one might invoke it before other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_exampleA
Search nTop's own shipped documentation for a block: working example notebooks and HTML reference pages. Consult this BEFORE reverse-engineering a block's wiring - nTop ships 100+ example .ntop files that show the correct inputs, literal shapes and property paths.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Block or topic name, e.g. "flow_analysis" or "lattice" | |
| documentationRoot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of disclosing behavior. It states that the tool is a search (implying read-only, non-destructive), and that it returns 'working example notebooks and HTML reference pages.' However, it does not disclose potential side effects, authentication requirements, rate limits, or the output format. For a simple search tool this is acceptable, but the lack of any protection annotation means the description should be more explicit about its harmless nature.
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 sentences with zero filler. The primary purpose is front-loaded, and the usage guidance is placed immediately after. Every sentence adds value, and it is appropriately sized for the tool's simplicity.
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 search tool with two parameters, the description is mostly complete: it explains what is searched and when to use it. However, the undocumented 'documentationRoot' parameter is a clear gap, and there is no mention of the return value structure (though no output schema exists to lean on). This prevents full completeness.
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 only 50% (the 'query' parameter is described, but 'documentationRoot' is not). The description adds no additional meaning to the parameters beyond what the schema provides. It does not explain what documentationRoot does, nor does it clarify how query should be formatted beyond the schema's example. Given the low coverage, the description fails to compensate for the undocumented parameter.
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 states the tool's function: searching nTop's shipped documentation (example notebooks and HTML reference pages) for a given block. It uses a specific verb ('search') and a distinct resource, and implicitly differentiates from siblings like search_blocks (which likely searches the block catalog) and inspect_notebook (which examines a specific notebook).
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 explicit guidance on when to use this tool: 'Consult this BEFORE reverse-engineering a block's wiring.' It explains the advantage (nTop ships 100+ example .ntop files with correct inputs and property paths), which helps the agent decide between this and inspection-based tools. However, it does not name specific alternative tools or state when not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_notebookA
Summarise a .ntop notebook: nTop version it was written by, its sections, how many blocks and literal values it holds, and what the root block evaluates.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook | Yes | Path to the .ntop file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains what information the tool provides (version, sections, counts, root evaluation), but it does not explicitly state that the operation is read-only or non-destructive, nor does it mention return format. 'Summarise' implies no mutation, but it's not explicit, so the transparency is adequate but not thorough.
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 specifies the action first and then lists the key outputs. Every word contributes to the meaning with no redundancy or filler.
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 simple tool with one parameter, the description covers the purpose and the expected summary contents. There is no output schema, but the description lists what the summary includes, so an agent knows what to expect. It does not discuss error cases or required file existence, but these are minor gaps given the tool's simplicity.
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% (the only parameter 'notebook' is described as 'Path to the .ntop file'). The description mentions the notebook but does not add any semantic value beyond the schema, so the baseline of 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?
The description clearly states a specific verb ('Summarise') and resource ('.ntop notebook'), and enumerates exactly what the summary includes (version, sections, counts, root block evaluation). It is distinct from siblings like run_notebook (execution) and read_graph (graph reading), so an agent can tell it apart without opening schemas.
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 the tool should be used when a high-level summary of a notebook is needed. It does not explicitly name alternatives or exclusions (e.g., 'use X instead when...'), but the context is clear and no misleading guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mesh_statsA
Measure an STL: volume, surface area, bounding box, watertightness and connected components. Use this to check what a notebook actually produced.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| listComponents | No | Also return per-component volumes and bounds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It states what is measured but does not mention side effects (the name and 'Measure' imply read-only, yet that is not explicit), does not describe error behavior, performance characteristics, or the exact return format. For a tool with zero annotation coverage, this is a noticeable gap.
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 sentences, front-loaded with the core purpose and followed by a practical usage hint. Every word earns its place; there is no filler or redundancy.
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 simple 2-parameter tool with no output schema, the description covers the scope of measurements and the primary use case. However, it omits obvious but potentially relevant details such as expected file parameter format (STL binary or ASCII), whether the tool returns a single object or a list of metrics, and any caveats about large meshes. These gaps keep it from being fully self-sufficient.
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 50%: only 'listComponents' has a description, while the required 'path' parameter is undocumented in the schema. The tool description does not compensate by explaining what 'path' should refer to (e.g., a filesystem path to an STL file). Since the description adds no parameter guidance, agents relying on it may not know how to fill the required field.
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 ('Measure') and resource ('an STL') followed by the exact set of measurements: volume, surface area, bounding box, watertightness, and connected components. This clearly distinguishes the tool from all sibling tools, which relate to notebooks, graphs, and literals, not mesh geometry.
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 clear context: 'Use this to check what a notebook actually produced.' That tells an agent when to reach for this tool. It does not explicitly name alternatives or state when not to use it, but given the sibling set, the context is unambiguous enough to infer there are no competing mesh tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prune_graphA
Point the root block at the given outputs and drop every block no longer reachable. Use this to cut a large notebook down to one chain before running it.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | ||
| notebook | Yes | ||
| rootInputs | Yes | Block ids the notebook should evaluate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core destructive behavior ('drop every block no longer reachable') and the modification of the root block, but does not state whether the operation mutates the input notebook or returns a new one, nor any reversibility or validation details. This is a partial disclosure, hence a 3.
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 sentences with zero wasted words. The core action is front-loaded, and the usage context is appended efficiently. It is a model of conciseness for a tool description.
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 that this is a mutating tool with no annotations and no output schema, the description is incomplete. It does not specify the return value, whether the notebook object is modified in place, or what happens to dropped blocks (deleted vs. detached). The ambiguous 'output' parameter is also unaddressed. For an agent to sequence this correctly with the notebook object, it needs more detail.
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 only 33% (only rootInputs is described). The description mentions 'given outputs' and 'root block' but does not clarify the meaning of the output parameter (a string) or the notebook parameter. It fails to compensate for the missing schema descriptions, leaving the agent to guess the output's role. Minimal added value, so a 2.
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 action ('point the root block at the given outputs and drop every block no longer reachable') and a clear resource (the notebook graph). It also implies the goal ('cut a large notebook down to one chain'), which differentiates it from siblings like run_notebook and inspect_notebook. The verb+resource 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?
The description explicitly says to use this 'before running it', giving clear context for when to invoke it. It implies a pre-processing step relative to run_notebook, but does not explicitly name alternatives or exclusion criteria. Since it provides clear usage timing, it earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_graphA
List the blocks in a notebook with their typed signatures, wiring and literal values. Use filter to narrow by block name or signature.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum blocks to return (default 200) | |
| filter | No | Case-insensitive substring matched against block name and signature | |
| notebook | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The verb 'List' implies a read-only operation, but the description does not explicitly state that it does not modify the notebook, require specific permissions, or explain pagination/limit behavior. Since the limit parameter hints at paging but is not elaborated, the description leaves some behavioral ambiguity.
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 consists of two concise sentences. The first establishes the primary purpose with a clear verb and resource, and the second offers a practical usage tip. There is no fluff or redundant phrasing, and the most important information is front-loaded. It scores high for efficiency and structure.
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 tool with three simple parameters and no output schema, the description covers the core purpose and filter usage. The required notebook parameter is in the schema, so that is covered. Missing explicit output format or a read-only guarantee, but given the simplicity and schema coverage, it is largely adequate. A brief mention of return structure or side-effect-free behavior would make it fully complete.
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 67%: limit and filter have descriptions, but notebook does not. The tool description reiterates the filter's purpose ('narrow by block name or signature') but adds no new parameter-specific meaning. It does contextualize what signatures are (typed signatures) but that is not tied to the notebook parameter. Given moderate schema coverage, the description adds minimal value beyond the schema, matching the baseline of 3.
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 states the action (List), the target (blocks in a notebook), and the specific data included (typed signatures, wiring, literal values). This is specific and distinguishes it from generic operations, though it does not explicitly name sibling tools. It is not a tautology and gives an agent a precise understanding of what the tool returns.
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 hint is 'Use filter to narrow by block name or signature,' which addresses the filter parameter but provides no guidance on when to choose this tool over alternatives like search_blocks or inspect_notebook. There are no exclusions, prerequisites, or cross-references to related tools. The context implies a read operation but does not help an agent decide between similar capabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_notebookB
Execute a notebook headlessly through nTop Automate (ntopcl) and return its errors, warnings and per-block timings. Requires an nTop Automate licence.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Write results back into the notebook (ntopcl -s). Rewrites the file. | |
| notebook | Yes | ||
| timeoutMs | No | ||
| inputsJson | No | JSON file of notebook input variables (ntopcl -j) | |
| outputJson | No | Where to write the output variable (ntopcl -o) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the licensing requirement and states that diagnostics (errors, warnings, timings) are returned. However, it does not mention that the tool can modify the notebook file when 'save' is true (a side effect), nor does it describe the execution environment or non-interactivity beyond 'headlessly'. Some behavioral context is given, but significant gaps remain.
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, front-loaded sentence that efficiently states the purpose, method, and return values. There is no redundancy or filler; every phrase earns its place.
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?
This is a complex execution tool with 5 parameters, no output schema, and no annotations. The description is sparse: it names the return values and the licence but omits when-to-use guidance, side-effect warnings, and parameter context (especially for the required 'notebook'). An agent would need additional inference to select and call it correctly, making it incomplete.
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 60% (save, inputsJson, outputJson have descriptions; notebook and timeoutMs do not). The tool description adds no parameter details, failing to compensate for the undocumented required parameter 'notebook' or 'timeoutMs'. It only references the licence, not how parameters should be used, so it adds no value beyond the schema.
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 ('Execute'), a concrete resource ('notebook'), a method ('headlessly through nTop Automate (ntopcl)'), and explicitly names the return artifacts ('errors, warnings and per-block timings'). This clearly distinguishes it from sibling tools like inspect_notebook or validate_graph, which are about inspection/validation rather than execution.
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 guidance on when to use this tool versus the sibling tools. It does not mention alternatives, exclusions, or prerequisites beyond the licence note. The description implies a use case (execute a notebook) but does not help an agent decide between this and related tools like validate_graph or inspect_notebook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_blocksA
Search the block signatures present in the installed nTop binaries. Returns the exact typed signature strings that add_block needs, newest revision of each name first. The binaries retain retired revisions, and nTop rejects those with the same error it gives an unlicensed toolkit - so prefer the highest [version] and distrust a bare unversioned form.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| installRoot | No | Overrides NTOP_INSTALL_ROOT and the default location |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the tool returns exact typed signatures, orders results newest-first, and warns about retired revisions and unlicensed-toolkit-like rejection. It does not mention whether the operation is read-only, side effects, or error handling, but for a search tool the disclosed behavior is reasonably transparent.
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 sentences with no redundancy. The core purpose and output are front-loaded, and the warning about retired revisions is delivered concisely as an important caveat. Every sentence earns its place.
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 tool's simplicity (3 params, no output schema, no annotations), the description covers purpose, ordering, and a key pitfall. However, it omits details on result format/limit behavior and does not clarify how the 'limit' parameter affects results. For a search tool this is adequate but not fully complete, especially given the low schema coverage.
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 only 33% (only installRoot has a description). The description does not explain the 'query' or 'limit' parameters; while 'search the block signatures' implies 'query' is the search term, 'limit' is left entirely unexplained. Since the schema is sparse, the description fails to compensate, offering only marginal clarification for the primary parameter.
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 states the tool searches for block signatures in installed nTop binaries and returns the exact typed signature strings that add_block needs. This is a specific verb and resource, and it distinguishes itself from the sibling add_block by explaining it provides the signatures that add_block consumes. No ambiguity about what the tool does.
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 usage context by stating the signatures are needed by add_block, and it provides critical guidance about preferring the highest version and distrusting unversioned forms due to nTop's rejection of retired revisions. However, it does not explicitly state when not to use this tool or mention alternative tools, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_inputA
Rewire one input slot of a block to a different source block. Use 0 to disconnect.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| output | No | ||
| blockId | Yes | ||
| notebook | Yes | ||
| sourceId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the disconnect convention (sourceId=0), which is a useful behavioral trait, but it omits side effects (e.g., what happens to the previous connection), error cases, or irreversibility. It gives minimal behavior beyond the core action.
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, focused sentence that front-loads the verb and resource. It includes the essential disconnect note without any redundant phrasing. There is zero waste, making it highly concise and well structured.
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 tool with five parameters, no output schema, and no annotations, the description is too thin. It does not explain all parameter meanings, describe the return value or side effects, or cover edge cases like invalid slot indices. An agent lacks enough context to call it confidently in a variety of situations.
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 0%, so the description must compensate. It explains the meaning of slot (input slot) and sourceId (source block) indirectly, but it does not clarify notebook, blockId, or the 'output' parameter at all. The description is insufficient to map all five parameters to their roles.
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 ('Rewire'), resource ('one input slot of a block'), and the target ('a different source block'). The addition of 'Use 0 to disconnect' clarifies a key behavior. It clearly distinguishes from the sibling set_output by focusing on input slots, making its purpose 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?
The description implies usage by its action phrase, but it does not explicitly state when to use this tool over alternatives (e.g., set_output) or provide any warnings or exclusions. The '0 to disconnect' note is a usage hint, but there is no overall guidance on choosing this tool in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_literal_valueC
Set the value of a literal block - a scalar, file path, vector, point, boolean or enum. Writes in place unless output is given.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Replacement value, in the same shape the notebook already stores | |
| output | No | ||
| blockId | Yes | ||
| notebook | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description alone must disclose behavioral traits. 'Writes in place unless output is given' is a useful but minimal hint; it does not explain what the output parameter does, whether the operation is destructive or reversible, whether special permissions are required, or what the return value is. For a mutation tool, this is a significant gap.
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 concise, using two sentences with no filler. The primary action and the key behavioral nuance ('writes in place unless output is given') are front-loaded, and every word contributes to the overall meaning.
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 that this is a mutation tool with no annotations, no output schema, and a sparse input schema, the description is under-specified. It fails to explain the output parameter, the exact effect of writing in place, any preconditions, or the response format. An agent would likely need additional information to invoke this tool confidently and correctly.
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 only 25% (only the 'value' parameter has a description). The description adds context for 'value' ('Replacement value, in the same shape the notebook already stores') but provides no semantic guidance for the 'output' parameter, which the description mentions only vaguely ('unless output is given') without clarifying its purpose or format. It also does not explain blockId or notebook beyond their names.
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 states the action (set) and the resource (a literal block), and enumerates the allowed value types (scalar, file path, vector, point, boolean or enum). It distinguishes from add_literal by use of 'set' (implying modification) and from set_input/set_output by focus on literal blocks, though it does not explicitly name alternatives.
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 does not provide any explicit guidance on when to use this tool versus its siblings like add_literal (for creation) or set_input/set_output. The phrase 'Writes in place' hints that it works on an existing block, but there are no exclusions or alternative recommendations, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_outputA
Choose which block ntopcl reports as the notebook output. Required before run_notebook's outputJson will produce anything - nTop reads the graph's own output key, not the root group's inputs, and answers "can't find output in notebook" when it is unset. Pass -1 to clear.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | ||
| blockId | Yes | Block whose value becomes the notebook output, or -1 to clear | |
| notebook | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It discloses that the tool sets the output block, that nTop reads the graph's own output key rather than root group inputs, and that passing -1 clears the output. It does not detail side effects or validation, but for a simple setter this is adequate transparency.
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 sentences pack the purpose, a critical prerequisite, the error condition, and the clear command (pass -1) with zero filler. The most important information is front-loaded, 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?
The description is complete for the tool's core function and the blockId parameter, and it explains the error when unset. However, it omits any explanation for the 'output' and 'notebook' parameters, and does not mention return values or side effects (e.g., whether the graph is modified in place). For a tool with low schema coverage, these gaps mean an agent cannot fully determine correct invocation.
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 only 33% (only blockId has a description). The tool description adds meaning for blockId via the '-1 to clear' note, but it says nothing about the 'output' or 'notebook' parameters, leaving them undocumented in both the schema and the description. An agent would not know what values to provide for these fields.
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 action (choose which block), a resource (the notebook output), and clarifies the distinction from related tools like set_input or add_block. It also explains the underlying mechanism (nTop reads the graph's own output key), which makes the purpose 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?
It explicitly says this tool is 'Required before run_notebook's outputJson will produce anything' and describes the exact error message when unset, giving clear context on when to use it. It does not name alternatives, but the prerequisite and the -1 clear behavior provide strong usage guidance without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_graphA
Check a notebook for problems that stop it loading or building: dangling inputs, duplicate ids, literals with no value, and list parameters wired with several inline edges instead of a core.list block.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It says 'check', implying non-destructive validation, and lists specific checks. This adds context beyond the name. The only gap is that it doesn't describe the result format (return value, errors) or any side effects, but it is otherwise transparent.
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, information-packed sentence that front-loads the purpose ('Check a notebook for problems that stop it loading or building') and then lists specific cases. Every phrase adds value; there is no fluff.
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?
The description lists the problem categories it detects, which is helpful, but it lacks information about the expected output (does it return a list, a boolean, or throw an exception?) and the exact nature of the notebook parameter. Given there is no output schema and low parameter coverage, these gaps leave the tool only partially complete.
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 0%, so the description must compensate. The single parameter 'notebook' is only described as part of the phrase 'Check a notebook', which fails to clarify whether it's a path, ID, content, or something else. The description adds no semantic detail beyond what the schema (a string) already 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 states the verb ('check') and resource ('a notebook'), and enumerates specific problem types (dangling inputs, duplicate ids, etc.). This distinguishes it from sibling tools like run_notebook (executes) and inspect_notebook (presumably examines), making the purpose 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?
The description conveys when to use this tool: when checking for specific loading/building problems. It implies a pre-run validation role. However, it doesn't explicitly name alternatives or state when not to use it, so it stops short of full guidance.
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. Dates show when Glama detected each change.
14 tool updates
v0.1.0- First observed
add_block - First observed
add_literal - First observed
environment - First observed
find_example - First observed
inspect_notebook - First observed
mesh_stats - First observed
prune_graph - First observed
read_graph - First observed
run_notebook - First observed
search_blocks - First observed
set_input - First observed
set_literal_value - First observed
set_output - First observed
validate_graph
TDQS
Each tool has a clearly distinct purpose: adding literals vs. setting their values, reading the graph vs. inspecting the notebook, validating vs. running, searching blocks vs. finding examples. No two tools appear to do the same thing, so an agent can reliably pick the right one.
The vast majority of tools follow a consistent verb_noun snake_case pattern (add_literal, search_blocks, set_output). Two exceptions break the pattern: 'mesh_stats' is a noun_noun compound and 'environment' is a bare noun, which slightly reduces predictability but does not cause real confusion.
14 tools is well within the sweet spot for a domain-specific server. Each tool addresses a distinct step in the notebook lifecycle—inspection, editing, validation, execution, and analysis—earning its place without bloat or obvious omission.
The tool surface covers the core workflow: read/inspect/validate, add and modify blocks/literals, rewire inputs, set outputs, run, and check results. Minor gaps exist (e.g., no explicit block deletion, no direct 'save notebook' tool), but existing tools like prune_graph and set_input can work around these without agent failure.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Geometry and CAD file metadata extraction for STL, OBJ, PLY, PCD, LAS/LAZ, glTF/GLB.
Create, browse, remix, collaborate on, and run durable AI workflow nodes from MCP hosts.
Search, read, and automate TextMine documents, records, workflows, integrations, and agent tasks.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables automated control of Ansys Workbench, Mechanical, and MAPDL through scripted journals and batch processing for simulation workflows.70MIT
- FlicenseAqualityDmaintenanceEnables programmatic CAD modeling with Onshape's REST API, offering 45 tools for parametric sketches, feature management, assemblies, analysis, variables, and exports.45134-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Ansys simulation software (Fluent, MAPDL, Mechanical, Geometry) through the Model Context Protocol.55MIT
- FlicenseNot gradedqualityDmaintenanceEnables programmatic CAD modeling with Onshape through document discovery, parametric sketching, feature management, and gear creation.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sohumsuthar/ntopology-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server