Skip to main content
Glama

nocobase-mcp-server

An MCP (Model Context Protocol) server for NocoBase, enabling AI assistants like Claude to interact with your NocoBase instance — read collections, manage UI schemas, build flowPage blocks, and run dynamic API operations via OpenAPI.

Features

  • 24 hand-crafted tools covering collections, UI schemas, desktop routes, flow models, and JS blocks

  • Dynamic tools auto-generated from your NocoBase's OpenAPI/Swagger spec (requires API documentation plugin)

  • Works with NocoBase v2.x (tested on 2.0.17-full)

Related MCP server: anyapi-mcp-server

Requirements

  • Node.js 18+

  • A running NocoBase instance

  • A NocoBase API token (root or sufficient permissions)

Installation

npm install -g @reroet/nocobase-mcp-server

Then add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "nocobase": {
      "type": "stdio",
      "command": "nocobase-mcp-server",
      "env": {
        "NOCOBASE_URL": "http://localhost:13000",
        "NOCOBASE_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Or use npx without installing globally:

{
  "mcpServers": {
    "nocobase": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@reroet/nocobase-mcp-server"],
      "env": {
        "NOCOBASE_URL": "http://localhost:13000",
        "NOCOBASE_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Option B — from source

git clone https://github.com/puguhsudarma/nocobase-mcp-server.git
cd nocobase-mcp-server
pnpm install

Then add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "nocobase": {
      "type": "stdio",
      "command": "/absolute/path/to/nocobase-mcp-server/node_modules/.bin/tsx",
      "args": ["/absolute/path/to/nocobase-mcp-server/src/index.ts"],
      "env": {
        "NOCOBASE_URL": "http://localhost:13000",
        "NOCOBASE_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Replace /absolute/path/to/nocobase-mcp-server with the actual path (e.g. /Users/yourname/Projects/nocobase-mcp-server).

Environment Variables

Variable

Required

Default

Description

NOCOBASE_API_TOKEN

Yes

NocoBase API token

NOCOBASE_URL

No

http://localhost:13000

NocoBase instance base URL

Getting an API Token

  1. In NocoBase UI: Settings → Plugins → enable the API keys plugin

  2. Go to Settings → API keys → Add API key

  3. Copy the generated token

Enabling Dynamic Tools (optional)

Enable the API documentation plugin in NocoBase (Settings → Plugins). Once active, the server will automatically load all additional API endpoints as tools on startup.

Tools Reference

Collections

Tool

Description

list_collections

List all collections

get_collection

Get a collection by name

UI Schemas (Classic Pages)

Tool

Description

list_pages

List all UI schema nodes

get_page

Get full nested UI schema tree by UID

get_parent_schema

Get the parent schema of a node

create_page

Create a new root-level UI schema node

insert_new_schema

Create and insert a new UI schema node

insert_adjacent_schema

Insert a schema node relative to a target node

update_ui_schema

Patch an existing UI schema node

batch_patch_ui_schema

Patch multiple UI schema nodes in one request

remove_ui_schema

Remove a UI schema node and its descendants ⚠️

save_as_template

Save a UI schema node as a reusable block template

Desktop Routes / Navigation

Tool

Description

list_desktop_routes

List all desktop routes (pages, menus, groups, tabs)

Flow Models (flowPage blocks)

Tool

Description

get_flow_model

Get a flowPage block by UID

get_flow_model_by_parent

Get a flowPage block by parent ID and subKey

save_flow_model

Create or update a flowPage block

attach_flow_model

Attach a block to a flowPage container

move_flow_model

Move a block to a different position

duplicate_flow_model

Deep-copy a block and auto-attach it

destroy_flow_model

Delete a block and its children ⚠️

JS Blocks

Tool

Description

get_js_block

Get a JS block schema (classic page)

update_js_block

Update JS block code (classic page)

update_flow_js_block

Update JS block code inside a flowPage — use ctx.render() or JSX via ctx.libs.React

⚠️ Destructive operations cannot be undone.

JS Block Sandbox

flowPage JS blocks run in NocoBase's sandbox. Available APIs:

// Render HTML
ctx.render(`<h1>Hello</h1>`);

// Render JSX with React + Ant Design
const { React, antd } = ctx.libs;
const { useState } = React;
const { Table, Tag } = antd;

function MyComponent() {
  const [tab, setTab] = useState("a");
  return <div>...</div>;
}

ctx.render(<MyComponent />);

Example Prompts

How to get UIDs:

  • Block UID — right-click any block in NocoBase UI → Copy UID (e.g. add17a3cf3f)

  • Page UID — visible in the browser URL when you open a page (e.g. http://localhost:13000/page/96acpujiwc6 → UID is 96acpujiwc6)

Without Figma MCP

List all collections in my NocoBase, then create a JS block on flowPage "<your-page-uid>"
that shows a summary dashboard with total records from the "users" collection.
Get the flowPage with UID "<your-page-uid>", add a new JS block below the existing ones
(the grid block UID is "<your-grid-uid>"), and implement a tabbed table showing data
from the "orders" and "products" collections.
Show me all desktop routes, then fetch the UI schema tree of the first page
and explain its block structure.

With Figma MCP

Here's my Figma design: https://www.figma.com/board/XXXXXXXXXXXXXXXX/MyApp?node-id=8273-xxxx
Implement it as a JS block on flowPage "<your-page-uid>" (grid UID: "<your-grid-uid>").
Use React + Ant Design from ctx.libs. Use dummy data for now.
Fetch the Figma design at the link above, then create a new JS block on my NocoBase
flowPage and implement the tabs component with the exact columns from the Figma table.
The block UID I want to update is "<your-block-uid>".

Contributing

Contributions are welcome! To add a new tool:

  1. Fork the repo and create a feature branch

  2. Add your tool in src/index.ts using server.registerTool()

  3. Follow the existing pattern — use nocoFetch() for API calls and ok() to format responses

  4. Update the tool list in README.md

  5. Open a pull request

For bug reports or feature requests, open an issue on GitHub.

License

MIT — see LICENSE for details.

Available Tools

23 tools
attach_flow_modelA

Attach an existing flowPage block/model to a parent. Use this to add an existing block into a flowPage container at a specific position.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesFlow model UID to attach
parentIdYesParent flow model UID to attach to
subKeyYesSub-key within the parent (e.g. 'items')
subTypeNoSub-type (e.g. 'array')
positionNoSort position index

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It only states the basic action of attaching, without disclosing side effects, prerequisites (e.g., does the block need to be unattached?), error behavior, or whether it modifies the parent schema. This lack of behavioral context leaves the agent guessing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words, front-loaded with the key action. It is appropriately sized for a tool that is conceptually simple.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should explain what the tool returns (if anything) and error conditions. It only covers purpose and usage. Missing details like behavior on missing UIDs, position handling, and effects on the parent schema make it incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all 5 parameters. The description adds no additional meaning or context beyond what the schema provides, earning the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool attaches an existing flowPage block/model to a parent at a specific position, using specific verb and resource, and distinguishes from siblings like insert_new_schema and move_flow_model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context ('Use this to add an existing block into a flowPage container at a specific position'), but does not explicitly exclude alternatives or specify when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_patch_ui_schemaA

Patch multiple UI schema nodes in a single request. Each object in the patches array must include 'x-uid' plus the fields to update.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchesYesArray of partial schema patch objects, each identified by x-uid

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states the tool patches multiple nodes, but does not describe side effects (e.g., whether it replaces or merges fields), authentication needs, rate limits, or error behavior. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence plus a brief instruction, making it concise and front-loaded. However, the instruction could be integrated more naturally; it feels slightly tacked on. Still, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description covers the essential purpose and a critical usage constraint. It does not explain return values or limits on batch size, but these are not strictly necessary for a basic tool. Overall, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a description for 'patches', but the schema itself is very permissive (additionalProperties: {}). The description adds the key constraint that each object must include 'x-uid', which is not enforced by the schema. Beyond that, no additional semantics are provided for the parameter structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'patch' and the resource 'UI schema nodes', and explicitly states it operates on 'multiple' nodes in a single request. This distinguishes it from sibling tools like 'update_ui_schema' which likely handles single nodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides the requirement that each object must include 'x-uid' plus fields, which guides usage. However, it does not explicitly state when to use this tool versus the alternative 'update_ui_schema' for single updates, nor does it mention any preconditions or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pageB

Create a new root-level UI schema node in NocoBase

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYesUI schema object to create (JSON)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It merely says 'create' without disclosing side effects, permissions, or behavior if the schema already exists. For a mutation tool, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a complex nested parameter and no output schema, the description lacks details about return values, success indicators, or how the schema relates to existing pages. It leaves the agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema's 'UI schema object to create (JSON)'. No parameter documentation beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create) and resource (root-level UI schema node) and system (NocoBase). It distinguishes from siblings like 'update_ui_schema' by specifying 'root-level'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'insert_new_schema' or 'insert_adjacent_schema'. The description does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

destroy_flow_modelA

Delete a flowPage block/model by UID. DESTRUCTIVE — also removes child blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesFlow model UID to delete

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It explicitly states the tool is destructive and that it also removes child blocks, which are important behavioral traits. It does not detail irreversibility or system-side effects, but for a delete tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that wastes no words. It front-loads the action ('Delete') and immediately provides critical context (DESTRUCTIVE and child removal).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter delete tool without an output schema, the description sufficiently covers what the tool does and its destructive scope. It could mention the return value (e.g., success indicator), but this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the parameter as 'Flow model UID to delete' with 100% coverage. The description adds no further meaning beyond what is in the schema, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete'), the target object ('a flowPage block/model'), and the method of identification ('by UID'). It distinguishes itself from siblings like 'duplicate_flow_model' and 'save_flow_model' by explicitly noting its destructive nature and scope (removes child blocks).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly conveys when to use the tool: when you need to delete a flow model and its children. No alternative deletion tool exists among siblings, so explicit when-not guidance is unnecessary. The warning 'DESTRUCTIVE — also removes child blocks' provides sufficient context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_flow_modelB

Duplicate an existing flowPage block/model (deep copy) and automatically attach it to the same parent. Returns the new block's data.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesFlow model UID to duplicate

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description adds some value by mentioning 'deep copy' and 'automatically attach to same parent', but it does not cover permissions, reversibility, or what happens to the original. Basic transparency is provided but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that immediately states the action and key behaviors. Every word is functional; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 and no output schema, the description covers the action and return value, but does not describe the return structure beyond 'the new block's data'. Additional details about the data format or potential error conditions would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'uid' is fully covered by the schema (100% coverage). The description merely restates the schema's description ('Flow model UID to duplicate') without adding new meaning or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('duplicate'), resource ('flowPage block/model'), and scope ('deep copy, attach to same parent'). It distinguishes from sibling tools that do related but different actions (e.g., destroy, move), though not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'destroy_flow_model' or 'save_flow_model'. It does not mention prerequisites (e.g., existence of the source model) or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_collectionB

Get a specific collection by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCollection name

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states it retrieves a collection but does not disclose behaviors such as error handling (e.g., if name not found), idempotency, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that efficiently conveys the tool's purpose with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is reasonably complete. It covers purpose and identification, though it could mention return format or error scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'name' is fully described in the input schema ('Collection name'), and the description adds the contextual phrase 'by name'. With 100% schema coverage, the baseline is 3, and the description adds minimal extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get a specific collection by name' clearly states the action (Get), resource (collection), and identifier (name). It effectively distinguishes from sibling 'list_collections' which retrieves multiple collections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives or when not to use it. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_flow_modelA

Get a flowPage block/model by UID. Use this for blocks inside flowPage type pages (not classic 'page' type). Returns the block's model data including 'use' (component type), 'parentId', 'stepParams', etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesFlow model UID (from 'Copy UID' on a block inside a flowPage)
includeAsyncNodeNoWhether to include async node data (default false)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It explains that the tool returns model data including specific fields, implying a read operation. However, it does not explicitly state that the operation is read-only or disclose any potential side effects, permissions, or error conditions. The information is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences. The first immediately states the purpose, and the second adds usage guidance and return info. Every sentence is valuable and there is no extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 parameters and no output schema, the description covers the main functionality, usage context, and key return fields. However, it does not mention the 'includeAsyncNode' parameter in the text, which is a minor gap. Overall, it is mostly complete for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 adds some context for the 'uid' parameter (mentioning 'Copy UID' usage) but does not provide additional meaning for 'includeAsyncNode' beyond what the schema already states. Thus, it does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('flowPage block/model by UID'), and explicitly distinguishes it from sibling tools like get_flow_model_by_parent by specifying 'use this for blocks inside flowPage type pages (not classic page type)'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context by saying 'Use this for blocks inside flowPage type pages (not classic page type)', which tells when to use this tool vs. alternatives. It does not explicitly list when not to use it, but the guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_flow_model_by_parentB

Get a flowPage block/model by its parent ID and subKey. Useful for navigating the flowPage block tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
parentIdYesParent flow model UID
subKeyNoSub-key within the parent (e.g. 'items')
includeAsyncNodeNoWhether to include async node data (default false)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as idempotency, read-only nature, or side effects. It only describes the operation's purpose without additional behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey the tool's purpose and use case without any redundant words. The information is front-loaded and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter tool with no output schema, the description covers the basic usage scenario. However, it lacks details about return values, error conditions, or the structure of a flowPage block model, which could be helpful for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description reinforces the key parameters (parentId and subKey) but adds no new semantic meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a flowPage block/model by its parent ID and subKey', using a specific verb and resource. It distinguishes itself from siblings like 'get_flow_model' by specifying the lookup method, though it could explicitly differentiate from other getters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Useful for navigating the flowPage block tree', implying when to use it, but does not provide explicit when-not-to-use guidance or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_js_blockA

Get a JS block UI schema by UID (for classic 'page' type pages, not flowPage)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUI schema UID of the JS block

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It correctly indicates a read operation ('Get') with no mention of side effects. However, it lacks details on authentication, rate limits, or error conditions, which are not critical for a simple getter but would add transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys purpose and context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is mostly complete. It explains the return (UI schema) implicitly through the verb 'Get'. Could be improved by explicitly stating the return format, but not essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'uid', which the schema describes as 'UI schema UID of the JS block'. The description adds no further semantics beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'JS block UI schema', and the method 'by UID'. It also distinguishes from sibling tools by specifying it is for 'classic page type pages, not flowPage', which is a clear qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use the tool, i.e., for classic page type pages, and explicitly excludes flowPage. This helps the agent decide when to use this tool versus others like get_flow_model, though no alternative tool names are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pageA

Get the full nested UI schema tree for a node by UID (uses :getProperties to include all descendants)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUI schema UID

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses inclusion of all descendants and :getProperties method, but lacks info on error handling, permissions, or idempotency. Annotations absent so burden on description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with purpose front-loaded and method detail in parentheses. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description gives high-level idea of return type but lacks specifics on structure or fields. Adequate for simple tool but incomplete for agent to fully anticipate response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description adds context to the 'uid' parameter by specifying it's a node UID in UI schema tree, beyond the schema's brief description. Single param with 100% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Get' and specific resource 'full nested UI schema tree' with method hint. Distinguishes from siblings like get_flow_model or get_parent_schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use when full tree is needed but no explicit guidance on when not to use or alternatives like get_parent_schema for single node.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_parent_schemaB

Get the parent UI schema of a node by UID

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUI schema UID of the child node

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It does not mention side effects, permissions, error handling (e.g., if UID not found), or whether the tool is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no unnecessary words. It conveys the essential information concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with one required parameter and no output schema, the description is adequate. It could mention the return value (the parent UI schema) for greater completeness, but is still sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the parameter as 'UI schema UID of the child node' (100% coverage). The tool description adds no additional meaning beyond confirming the UID identifies the child node.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('parent UI schema'), and the identifier ('by UID'). It distinguishes this read operation from sibling tools which involve creation, updates, or deletions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool over alternatives, nor does it mention prerequisites or contexts where it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_adjacent_schemaA

Insert a schema node at a position relative to a target node. Position values: beforeBegin (prev sibling), afterBegin (first child), beforeEnd (last child), afterEnd (next sibling)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesTarget UI schema UID to insert relative to
schemaYesNew schema node to insert (JSON)
positionYesInsert position relative to the target node

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only describes the insertion mechanics. It does not disclose side effects, error behavior, permissions, or what happens if the target UID is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence plus a concise listing of positions, with no fluff. It is front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose and positions, but lacks details on return value, validation, or success/failure behavior, which would help given the schema has nested objects and no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions; the tool description adds value by explaining the four position values in plain language, which complements the enum in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (insert) and the resource (schema node relative to a target), distinguishing it from siblings like insert_new_schema which likely inserts without relative positioning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the meaning of each position value, but does not explicitly state when to use this tool versus alternatives (e.g., insert_new_schema, update_ui_schema) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_new_schemaB

Create and insert a new UI schema node via NocoBase's insertNewSchema action

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYesSchema node to create and insert (JSON)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only states 'create and insert' but does not disclose behavioral traits like conflict handling, permission requirements, or side effects. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 14 words, no redundant information. Efficiently communicates the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a complex nested object parameter and no output schema, the description does not explain the schema node structure or return behavior. Insufficient for an agent to confidently invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds 'via NocoBase's insertNewSchema action', but does not elaborate on the expected structure of the schema object beyond what the schema already specifies. Adequate but not enhanced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'create and insert' and the resource 'UI schema node', and differentiates from siblings like insert_adjacent_schema by specifying it's a new insertion via NocoBase action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like insert_adjacent_schema or update_ui_schema. Lacks context for selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_collectionsA

List all collections in NocoBase

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description indicates read-only behavior ('list') but does not disclose any potential side effects, rate limits, or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise (two words) and front-loaded. Every word is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with no parameters and no output schema, the description adequately conveys its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0 parameters with 100% coverage, so description does not need to add extra meaning. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'list' and resource 'collections', and clarifies scope as 'all'. It implicitly distinguishes from sibling 'get_collection' which retrieves a single collection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'get_collection'. No context on prerequisites or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_desktop_routesA

List all desktop routes (pages and menus) in NocoBase v2. Each route has a type: 'page', 'flowPage', 'group', 'tabs'. Use schemaUid to fetch page content. Works for both classic pages and flowPages.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoNumber of routes per page (default 100)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the tool is a read operation (list), describes the output includes type and schemaUid, and confirms compatibility with classic pages and flowPages. This provides sufficient behavioral context beyond the parameter schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two sentences. The first sentence immediately states the purpose, and the second adds key details about output and usage. No redundant or unnecessary information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one optional parameter, no output schema, and no annotations, the description sufficiently covers its purpose, output shape (types and schemaUid), and scope (classic pages and flowPages). It lacks explicit pagination details, but the schema covers the pageSize parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the pageSize parameter with default 100. The description adds no additional meaning to the parameter beyond what the schema provides. Schema coverage is 100%, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all desktop routes (pages and menus) in NocoBase v2', providing a specific verb and resource. It further distinguishes itself from siblings like list_pages by mentioning route types and that it works for both classic pages and flowPages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating 'Use schemaUid to fetch page content' and 'Works for both classic pages and flowPages', but it does not explicitly mention when not to use this tool or name alternatives like list_pages for comparison. Guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pagesA

List all UI schemas in NocoBase (returns raw schema nodes, not page-level navigation)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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 reveals the return type (raw schema nodes) and that it returns all schemas, but lacks details on side effects, permissions, rate limits, or error behavior. It is adequate but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences, no wasted words. The first sentence states the main purpose, the second clarifies the output type. Perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description adequately covers what the tool does and returns. It specifies 'all UI schemas' and 'raw schema nodes'. However, it could mention if there are any limitations (e.g., pagination) or error scenarios. Overall, it is mostly complete for a simple listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the baseline is 4. The description does not need to add parameter info, and it does not. It accurately conveys that no inputs are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all UI schemas in NocoBase, using specific verb ('list') and resource ('UI schemas'). It also clarifies that it returns raw schema nodes, not page-level navigation, distinguishing it from siblings like get_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests when to use this tool (getting raw schema nodes) vs siblings (e.g., get_page for a specific page). However, it does not explicitly state when not to use or provide alternatives, missing the chance to offer stronger guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_flow_modelB

Move a flowPage block/model to a different position relative to another block.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesUID of the flow model to move
targetIdYesUID of the target flow model (reference position)
positionNoTarget sort position index

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It states 'move' but does not clarify whether the operation is destructive (removing from original position) or if it's a copy. It also omits side effects, permission requirements, or behavior on invalid references.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently conveys the core action without unnecessary words. It is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of flow models and the absence of an output schema or annotations, the description is quite brief. It does not explain return values, error behavior, or constraints like whether moving can affect child elements. Adequate for a simple operation but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for parameters (sourceId, targetId, position). The description adds minimal value beyond the schema, only clarifying the repositioning is 'relative to another block'. With full schema coverage, baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Move' and the resource 'flowPage block/model', specifying the operation 'to a different position relative to another block'. It effectively distinguishes from sibling tools like attach_flow_model and duplicate_flow_model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as when to use attach_flow_model or duplicate_flow_model instead. It lacks any context about prerequisites or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_ui_schemaA

Remove a UI schema node and all its descendants by UID. DESTRUCTIVE — cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUI schema UID to remove

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explicitly states the action is destructive and cannot be undone, adding behavioral context. However, it does not disclose additional details such as required permissions, side effects beyond removing descendants, or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the purpose and adding a critical warning. No redundant information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single required parameter, no output schema, well-defined behavior), the description is largely complete. It explains the destructive nature and the scope of removal, which is sufficient for an agent to understand its effect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 minimal extra meaning beyond the schema's parameter description ('UI schema UID to remove') by stating 'by UID'. This does not significantly enhance semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove'), the target ('UI schema node'), the scope ('and all its descendants'), and the identifier ('by UID'). It effectively distinguishes from siblings like update_ui_schema (which modifies) and insert_adjacent_schema (which adds).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly communicates when to use this tool (for removal) and includes a explicit warning about its destructive nature. However, it does not explicitly state when not to use it or provide alternative tools for related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_as_templateB

Save an existing UI schema node as a reusable block template

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUI schema UID to save as template
valuesYesTemplate metadata (e.g. name, componentName, collectionName)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It mentions 'Save' (mutation) but lacks details on side effects, permissions, or whether the template is stored independently or modifies the source node. This is insufficient for safe and correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is concise but could be more informative without significant bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a nested object parameter and no output schema, the description lacks explanation of what constitutes a 'reusable block template' or how the template is later used or retrieved. It does not address potential constraints or behavioral nuances, making it incomplete for complex usage scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. The description does not add new semantic information beyond the schema, which already specifies 'UI schema UID' and 'Template metadata (e.g. name, componentName, collectionName)'. With high schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Save an existing UI schema node as a reusable block template', which clearly identifies the verb, resource, and outcome. It distinguishes from sibling tools like 'save_ui_schema' or 'update_ui_schema' by specifying 'as a reusable block template'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating templates but provides no explicit guidance on when to use this tool versus alternatives like 'save_flow_model' or 'insert_adjacent_schema'. No when-not-to-use or prerequisite information is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_flow_modelA

Create or update a flowPage block/model. If 'uid' is provided in values, it updates; otherwise creates a new one. The 'use' field specifies the component type (e.g. 'JSBlockModel', 'TableBlockModel'). NOTE: after creating, call attach_flow_model to make it appear on the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYesFlow model data. Key fields: uid (optional), use (component type), parentId, subKey, subType, stepParams, sortIndex

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the core behavior (create/update based on uid) and the need for attach_flow_model, but doesn't detail side effects, return values, or error conditions. With no annotations, more behavior disclosure would improve confidence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose, conditional logic, and key usage note. No wasted words, front-loaded with primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main workflow and crucial post-call. Lacks return value description and any error handling notes. Given the tool's complexity (one parameter, no output schema), it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the 'values' parameter with 100% coverage. The description adds meaning by explaining how 'uid' controls update logic and lists key fields, going beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it creates or updates a flowPage block/model. Distinguishes from sibling tools like attach_flow_model (which is for making it appear) and destroy_flow_model. Gives concrete examples of component types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to create vs update based on uid. Provides critical guidance to call attach_flow_model after creation. Could have mentioned alternatives like destroy or get, but the note suffices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_flow_js_blockA

Update the JavaScript code of a JSBlockModel inside a flowPage. Code runs in NocoBase sandbox — use ctx.render(htmlString) to render output. Example: ctx.render(<h1>Hello</h1>);

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesFlow model UID of the JS block (JSBlockModel)
codeYesJavaScript code using ctx.render(htmlString) sandbox API

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses that code runs in a NocoBase sandbox requiring ctx.render(htmlString), which is essential behavioral context. It could also mention that the code fully replaces existing code, but the main behavior is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver purpose and key behavioral info with a code example, no unnecessary words. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema, the description covers purpose, sandbox behavior, and a usage example. It could mention return value or that the update is persistent, but it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters with 100% coverage, so the description adds value by providing a concrete sandbox example and clarifying the render API, going beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates JavaScript code of a JSBlockModel inside a flowPage, distinguishing it from sibling update_js_block by specifying the flowPage context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for flowPage JS blocks by mentioning the sandbox and giving an example, but it does not explicitly state when to use this tool over alternatives like update_js_block.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_js_blockA

Update the code content of a JS block UI schema by UID (for classic 'page' type pages, not flowPage)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUI schema UID of the JS block
codeYesNew JavaScript code content

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only says 'update', which is a mutation. It does not disclose any behavioral traits such as destructive potential, permissions needed, or idempotency, leaving the agent with minimal information beyond the fact that code content will be modified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the core purpose and scope, with no redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 required parameters and no output schema, the description covers the essential scope (classic pages vs flow pages). However, it lacks details about return values, side effects, or confirmation of success, which could help an agent understand the full behavior after invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both uid and code. The description adds no extra meaning beyond the schema, and there are no constraints or formatting hints for the code parameter, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates code content of a JS block UI schema by UID, specifying 'for classic page type pages, not flowPage', which effectively distinguishes it from siblings like update_flow_js_block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly limits usage to classic pages, implying when not to use it (flow pages). While it does not name alternatives, the sibling list includes update_flow_js_block for flow pages, providing indirect guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ui_schemaB

Patch an existing UI schema node by UID (partial update)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUI schema UID
patchYesPartial schema fields to update (JSON)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only mentions 'partial update' but lacks details on idempotency, error behavior, required permissions, or what happens on invalid UID/patch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, to the point, no redundant words. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations. For a mutation tool, more detail on success/failure behavior and patch structure would improve completeness. Sibling tools exist but no distinction provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description adds no extra meaning beyond schema; does not clarify patch format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Patch', resource 'UI schema node', and key detail 'partial update'. It distinguishes from siblings like 'batch_patch_ui_schema' which implies batch operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., batch_patch_ui_schema). No prerequisites or context provided for when partial update is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation4/5

Tools are generally distinct, with clear differentiation between flowPage blocks, classic pages, JS blocks, and UI schema operations. However, the high number of flow model and schema tools could cause some confusion, though descriptions help.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case, with no mixing of conventions. Examples include 'attach_flow_model', 'batch_patch_ui_schema', 'get_flow_model_by_parent'.

Tool Count4/5

23 tools is slightly on the high side but appropriate for a full-featured low-code platform like NocoBase. The count reflects the complexity of managing UI schemas, blocks, collections, and routes without being excessive.

Completeness4/5

The tool set covers most essential operations for UI schema management: create, read, update, delete, move, duplicate, and template. Minor gaps exist (e.g., no direct tool for updating page metadata), but these can be handled via update_ui_schema.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides AI assistants with access to documentation, schemas, and operations for over 535 n8n workflow automation nodes. It enables models to understand, create, and manage n8n workflows through natural language by connecting to the n8n API.
    123,606
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A universal MCP server that connects any REST API to AI assistants via OpenAPI or Postman specifications. It enables dynamic tool creation with GraphQL-style field selection and automatic schema inference for efficient data retrieval.
    13
    6
    Unlicense - libtelnet variant
  • F
    license
    Not graded
    quality
    D
    maintenance
    Remote MCP server that auto-generates tools from NocoBase OpenAPI specs to enable full CRUD operations on collections across multiple instances. Supports streamable HTTP transport and API key authentication for secure, natural language interaction with NocoBase deployments.
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server that enables AI assistants to interact with the VoIPbin CPaaS platform, exposing tools for managing calls, flows, messaging, conferencing, and more.
    52
    1
    MIT

Latest Blog Posts

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/puguhsudarma/nocobase-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server