Skip to main content
Glama

vnyan-mcp

An MCP server for full-coverage control of VNyan (VTuber avatar software) from Claude or any other MCP client — parameters, triggers, blendshapes, bones, pendulums, props, colliders, node graphs, and more.

VNyan's own automation ports (REST/WebSocket/OSC) are fire-and-forget only — they can trigger things but never read state back. This project ships a small VNyan plugin that opens a real two-way bridge, plus an MCP server that talks to it, so an LLM can both drive your avatar and observe it.

What it covers

  • Parameters, dictionaries, triggers — get/set VNyan's runtime variables, call named triggers, watch recent trigger activity

  • Avatar — live blendshape values and overrides, humanoid bone read/write

  • Pendulum chains, stretch bones, colliders, props, Spout2 cameras — read the persisted config and drive them live

  • Node graphs — read, author, and export/import VNyan's visual node graphs; a generated "bridge graph" makes post-processing effects and lights controllable

  • Settings — read the full settings.json config (tracking, output, graphics, audio, connections, misc) and write it with guardrails

  • VNyanNet, plugin inventory, native REST/WebSocket/OSC passthroughs

Full capability list and verified behavior: docs/VERIFIED.md.

Related MCP server: Blender Copilot MCP Server

Requirements

  • VNyan, with Allow Mods enabled (Settings → Misc)

  • Node.js ≥ 22

  • Windows (VNyan itself is Windows-only)

Install

Step 1 — the plugin

  1. Download VNyanMcp.dll from the latest release.

  2. Close VNyan if it's running.

  3. Drop the DLL into <your VNyan folder>\Items\Assemblies\.

  4. In VNyan, enable Allow Mods (Settings → Misc) if you haven't already.

  5. Start VNyan.

  6. Confirm it loaded: open Player.log in VNyan's profile directory (Settings → Misc → Open Log Folder, or %USERPROFILE%\AppData\LocalLow\Suvidriel\VNyan\Player.log by default) and look for [VNyanMcp] initialized.

Step 2 — the MCP server

With Claude Code:

claude mcp add vnyan -- npx -y github:seth-rah/vnyan-mcp

For Claude Desktop or another MCP client, add this to your MCP config:

{
  "mcpServers": {
    "vnyan": {
      "command": "npx",
      "args": ["-y", "github:seth-rah/vnyan-mcp"]
    }
  }
}

No manual build step needed — npx installs and builds it on first run.

Verify

Ask your MCP client to call vnyan_status. All four reflection systems (props, colliders, spout2, stretchbones) should report true, and it will show which VNyan profile directory it resolved and how (see Configuration below — nothing is hardcoded).

Configuration

Every path this server needs is resolved at runtime, not hardcoded. Env vars, all optional:

Variable

Purpose

Default

VNYAN_PROFILE_DIR

VNyan's profile directory (settings, colliders, node graphs)

Asked from the running plugin; falls back to the conventional %USERPROFILE%\AppData\LocalLow\Suvidriel\VNyan path if the plugin isn't reachable

VNYAN_MCP_GRAPH_EXPORT_DIR

Where authored/exported node graphs are written

<resolved profile dir>\Exports

VNYAN_MCP_BRIDGE_URL

The plugin's HTTP bridge

http://127.0.0.1:8071/rpc

VNYAN_REST_URL

VNyan's built-in REST API (native port passthrough)

http://127.0.0.1:8069/

VNYAN_WS_URL

VNyan's built-in WebSocket (native port passthrough)

ws://127.0.0.1:8000/vnyan

VNYAN_OSC_HOST / VNYAN_OSC_PORT

VNyan's OSC receiver (native port passthrough)

127.0.0.1 / 28569

Security note

The plugin's bridge listens on 127.0.0.1:8071loopback-only, but unauthenticated. Any process running as you on your own machine can reach it and drive your avatar while VNyan is running. This is a deliberate tradeoff (matching VNyan's own REST/WS/OSC ports, which have the same property) rather than an oversight, but you should know about it before installing.

What needs VNyan closed

Only settings.json writes (vnyan_settings_set, and the Props/Chains/StretchBones/Gestures/Expressions writes that live inside it) require closing VNyan — it rewrites that file on every save and would silently clobber an external edit. Everything else, including node graph authoring (which exports a file for live import via VNyan's own "Load Graph" menu), works with VNyan running. Details: vnyan_guide topic:'restart-policy'.

Known limits

See docs/VERIFIED.md for the full list. Highlights: post-processing effects and lights are write-only at every tier (no readback exists in VNyan); SunLightNode has an unexplained VNyan-side bug that limits its bridge action to fixed defaults; reflection-backed capabilities (props, colliders, Spout2, stretch bones) depend on internal names that could change in a future VNyan update — vnyan_status is the canary if something breaks.

Building the plugin yourself

cd plugin
dotnet build -c Release -p:VNyanPath="<your VNyan install folder>"

The build fails with a clear error if VNyanPath is missing or doesn't point at a real VNyan install. The bundled node-type schema (src/graph/schema.json) and the reflection-backed capabilities were generated against Unity 2022.3.62f3 — if a VNyan update changes node types or breaks a reflected capability, vnyan_status will show it.

Regenerating the node-type schema

src/graph/schema.json describes all ~300 node types' socket layouts. To regenerate it for a newer VNyan build:

dotnet tool install -g ilspycmd
ilspycmd -p -o /tmp/acs "<your VNyan>/VNyan_Data/Managed/Assembly-CSharp.dll"
python tools/extract-node-schema.py /tmp/acs \
  --unity-version <see Player.log "Initialize engine version"> \
  --graphs "<your VNyan>/Examples/*.json" \
  -o src/graph/schema.json

Passing --graphs matters: node values[] key names can't be read reliably from the obfuscated assembly, so the script prefers names observed in real VNyan-written graph files and flags the rest valuesUncertain.

License

MIT — see LICENSE.

Available Tools

30 tools
vnyan_api_fireFire VNyan REST API actionA

POSTs {action, payload} to VNyan's built-in REST API (http://localhost:8069) to trigger a matching API Message node in a node graph. Source: native port, no plugin required. Fire-and-forget: no return value, payload values must be strings (binds to Dictionary<string,string>).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesMust match an API Message node's configured Action
payloadNoString-only key/value pairs

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: it is fire-and-forget with no return value, payload values must be strings (binds to Dictionary<string,string>), and it uses a specific localhost address. This provides the agent with complete understanding of the tool's behavior and constraints.

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 three sentences, each adding essential information: the mechanism (POST to REST API), the purpose (trigger API Message node), and constraints (fire-and-forget, string payloads). No unnecessary words; 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 no output schema, the description adequately covers the tool's behavior, constraints, and address. It lacks information about error handling or potential failures, but for a fire-and-forget tool with no return value, the provided context is sufficient for an agent to use it effectively.

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%, but the description adds valuable meaning beyond the schema: it explains that the action parameter must match an API Message node's configured Action, and that payload values are strings that bind to Dictionary<string,string>. This enhances the agent's understanding of parameter usage.

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 tool POSTs an action and payload to VNyan's REST API to trigger an API Message node. The verb 'POSTs' and the resource 'VNyan's built-in REST API' are specific, and the description distinguishes it from sibling tools by mentioning 'native port, no plugin required' and the fire-and-forget nature.

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 tool's function and that it is native (no plugin required), implying it should be used for triggering API Message nodes. However, it does not explicitly state when to use this tool versus alternatives like vnyan_trigger or vnyan_dict, nor does it provide exclusions or conditions for use.

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

vnyan_avatarVNyan avatar statusA

Whether an avatar is currently loaded. Source: plugin (live, read-only).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/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 discloses that the source is a plugin, live, and read-only, which is clear behavioral context for a read operation.

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, front-loaded with the core purpose, and includes a clarifying source note. No wasted words.

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 zero-parameter, no-output-schema tool that simply returns a boolean, the description completely covers the tool's behavior and source, making it fully comprehensible.

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?

There are no parameters, and schema coverage is trivially 100%. The description adds no parameter info, which is acceptable as per baseline.

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 it reports whether an avatar is currently loaded, which is a specific verb+resource. It distinguishes from sibling tools by clarifying 'Source: plugin (live, read-only)'.

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 as a status check but provides no explicit guidance on when to use or not, nor any alternatives. It is minimal but sufficient for such a simple tool.

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

vnyan_blendshapeVNyan blendshapesA

Read live blendshape values (all, or one by name) and set/clear override values that take priority over tracking - the same mechanism as the Blendshape node. Source: plugin (live, read+write).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoFor 'get': instant value or accumulated last-frame value
nameNoBlendshape name (required except for 'list')
valueNoRAW value, on the same scale 'get'/'list' report and pendulum outputs write - roughly 0-1 for full deflection, and NOT clamped (set 250 and it stores 250). This is deliberately NOT the 0-100 convention BlendshapeNode uses in a node graph: only BlendshapeNode divides by 100, so an int 37 there lands here as 0.37. Passing 50 expecting half deflection would give you 50x. Setting 0 removes the override entirely. Required for set actions.
actionYesWhich blendshape operation to perform

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the tool is 'live' and 'read+write', and that overrides take priority over tracking. It also notes the mechanism matches BlendshapeNode, adding useful context not present in the schema. This is more than minimal and provides the agent with key behavioral expectations.

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 fluff. The main function is front-loaded, followed by a brief source note. Every phrase earns its place, and the structure is easy to scan.

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 tool has six actions and two modes, but the description only summarizes reading and override setting/clearing. It does not explain the distinction between regular and mesh overrides, nor the return format of list/get. While the action enum provides names, the lack of detail on behavioral differences and outputs leaves some gaps for a tool of this complexity.

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 schema already documents all parameters with 100% coverage, including an exceptionally detailed description of the 'value' parameter (raw scale, not clamped, removal on 0). The description itself does not repeat parameter details, which is appropriate. Baseline of 3 is justified since the schema does the heavy lifting and no additional semantic clarification is 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 it reads live blendshape values and sets/clears overrides that take priority over tracking, with a specific verb and resource. It also references the Blendshape node, establishing a known mechanism and distinguishing it from other avatar tools. The wording is specific and not a tautology.

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 gives clear context for when to use the tool: for live blendshape reads and override management. It references the Blendshape node, which implies a standard usage model. However, it does not explicitly name alternative tools or exclusion conditions, though the resource specificity makes the intended use fairly obvious.

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

vnyan_boneVNyan bonesA

Read a humanoid bone's current position/rotation (the composed pose from tracking/other layers, before this plugin's own overrides), or set/clear a rotation override for it (Euler degrees). Bone names are UnityEngine.HumanBodyBones values, e.g. 'Head', 'LeftUpperArm', 'Spine'. Source: plugin (live, read+write). Note: reading a bone you just overrode still shows the pre-override value - it reflects the incoming pose, not your own pending change. Full valid bone-name list: vnyan_guide topic:'bone-names'.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoEuler X degrees, for 'set'
yNoEuler Y degrees, for 'set'
zNoEuler Z degrees, for 'set'
boneYesHumanBodyBones name, e.g. 'Head', 'LeftUpperArm', 'Spine' - see vnyan_guide topic:'bone-names' for the full list
actionYesWhich bone operation to perform

TDQS

A4.4/5.0
Behavior5/5

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

Despite no annotations, the description transparently discloses that reading a bone after overriding shows the pre-override value, and it mentions the source (plugin, live, read+write). This adds significant behavioral context beyond the schema.

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?

Two sentences plus a note; front-loaded with the main purpose. Could be slightly more structured by separating read and write operations, but overall concise and informative.

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, so description should clarify return values for 'get' action (e.g., returns position/rotation). It mentions reading position/rotation but doesn't specify format. Also doesn't describe response for set/clear. Adequate for a simple tool but missing some return details.

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 for all 5 parameters. The description adds extra context: Euler degrees, bone name format, and a reference to vnyan_guide for full list. It goes beyond the schema by explaining the override behavior related to set/clear actions.

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 tool reads bone position/rotation or sets/clears rotation overrides using HumanBodyBones names. It distinguishes from sibling tools like vnyan_blendshape or vnyan_param by focusing on bone operations.

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?

Describes when to read vs set/clear and explains a behavioral nuance (reading shows pre-override value). However, it does not explicitly compare to sibling tools or state when not to use this tool.

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

vnyan_bridge_graphVNyan capability bridge graphA

The bridge graph is how post-processing effects and lights become controllable with no reflection: one TriggerNode per capability (namespaced 'mcp.*'), wired to the effect/light node, callable via vnyan_trigger or the vnyan_effect/vnyan_light convenience tools. 'preview' (disk, read-only) lists the actions it would install and checks for trigger-name collisions against every existing graph - triggers are global. 'install' (disk, write) by default EXPORTS the graph as a file - import it into a spare tab via VNyan's own 'Load Graph' menu, no restart needed. Pass 'slot' instead to write directly into that slot (REQUIRES VNyan closed, backs up the slot first). Refuses on any trigger-name collision either way.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNoAdvanced/fallback: write directly into this slot instead of exporting a file. REQUIRES VNyan closed.
actionYes'preview' checks for collisions without writing; 'install' writes the graph

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behaviors: graph wiring, trigger name collision handling, export vs direct slot write (with VNyan closed requirement), backup behavior, and global trigger scope. Every important behavioral trait 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.

Conciseness4/5

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

The description is a single dense paragraph that efficiently conveys core concepts. While not broken into sections, it front-loads purpose and flows logically. Every sentence contributes value.

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 tool with 2 parameters and no output schema, the description covers all key aspects: actions, collisions, install modes, and constraints. Minor missing detail on return format, but overall 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?

Schema coverage is 100%, providing baseline 3. The description adds meaningful context: explains the effect of each action (preview lists actions, install writes) and the slot parameter (advanced/fallback, requires VNyan closed, backs up).

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 it's for making post-processing effects and lights controllable via a bridge graph, with specific actions like preview and install. It distinguishes from sibling tools like vnyan_trigger and vnyan_effect by explaining the graph construction role.

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 explains when to use preview (check collisions) vs install (write graph), and notes different install modes. It does not explicitly compare to all siblings but provides sufficient context for usage decisions.

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

vnyan_colliderVNyan avatar collidersA

Read or set the current avatar's head/torso/hand collider size and offset - 'get'/'set' are live (plugin) and take effect immediately, VNyan re-applies these every frame. 'diskList' (disk, always readable) lists every per-avatar override file under colliders\, since the currently-loaded avatar's filename isn't otherwise exposed - compare against 'get' to see whether the running values match a saved override.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich collider operation to perform
handSizeNoHand collider scale multiplier, world-space. Default 0.19. For 'set' only.
headSizeNoHead collider scale multiplier (Unity world-space, not pixels/percent). Typical value ~0.2 (this avatar's is 0.207). For 'set' only.
torsoSizeNoTorso collider scale multiplier, world-space. Typical value ~0.27. For 'set' only.
headOffsetNoHead collider offset along the head's up-axis, world units. Typical value ~0.06. For 'set' only.
torsoOffsetNoTorso collider vertical offset, world units. Typical value ~0.04. For 'set' only.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses live plugin behavior, immediate effect, frame-by-frame reapplying, and that diskList is always readable. It does not mention potential side effects or permissions needed.

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 dense sentences with no wasted words. Each clause adds essential information about actions, behavior, and usage.

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 tool has 6 parameters, no output schema, and no annotations, the description explains actions and parameter constraints well but lacks details on return format for 'get' and 'diskList', leaving the agent uncertain about expected outputs.

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%, but the description adds value by specifying which parameters are for 'set' only and providing typical default values (e.g., 0.19 for handSize). This goes beyond the schema's basic type and description.

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 reads or sets the current avatar's head/torso/hand collider size and offset, with three specific actions (get, set, diskList). It distinguishes itself from sibling tools by focusing solely on collider manipulation.

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 context: 'get'/'set' are live and immediate, 'diskList' lists override files, and advises comparing against 'get' to check saved override match. However, it does not explicitly state when not to use this tool 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.

vnyan_dictVNyan dictionariesB

Get/set/clear entries in VNyan's named dictionaries - the same store JsonDictionaryNode and GetDictionaryValueNode use in node graphs, and where the REST API's payload lands. Source: plugin (live, read+write).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoKey (required for get/set)
dictYesDictionary name
valueNoValue (required for set)
actionYesWhich dictionary operation to perform

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It states 'read+write' and live plugin source, but lacks details on atomicity, error handling, or return values. This partial disclosure leaves significant gaps.

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 with no wasted words. The key actions and context are front-loaded. Every sentence contributes value.

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?

No output schema is provided, and the description omits what the tool returns (especially for 'get') and error conditions. This is a significant gap for a CRUD tool, making it incomplete for an agent to use confidently.

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 no extra meaning beyond the schema; 'get/set/clear' is already in the action enum description.

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 identifies the verb (get/set/clear), resource (VNyan named dictionaries), and distinguishes from sibling tools by mentioning the specific data store used in node graphs and REST API.

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 when to use (for dictionary operations) but provides no explicit guidance on when not to use or alternatives among sibling tools. The mention of 'plugin (live, read+write)' gives context but no exclusions.

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

vnyan_effectFire a bridged post-processing effectA

Drives a post-processing effect (bloom/vignette) via the installed bridge graph's TriggerNode. REQUIRES vnyan_bridge_graph action 'install' to have been run once. Source: plugin trigger.call (live). This node type has no getter in VNyan at any tier - the MCP tracks the value it just sent, it does not read back the actual applied state.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesBridge action key, e.g. 'bloom' or 'vignette'
toggleNoDefault true (most of these effects toggle off on a repeat call with the same state)
intensityNoDefault 0

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 key behavioral traits: no getter capability, MCP only tracks sent values, and the effect toggling behavior. It could mention error handling but is largely transparent.

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 concise, with three sentences that front-load the core purpose and quickly cover requirements and limitations. No unnecessary 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?

The description covers prerequisite, behavior, and parameter context adequately for a 3-parameter tool with no output schema. Missing error handling, but overall complete for typical usage.

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%, so description adds value beyond schema by explaining the toggling behavior of the toggle parameter and the default values, though it does not elaborate on all parameters.

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 drives a post-processing effect (bloom/vignette) via a bridge graph's TriggerNode, providing specific examples and distinguishing it from siblings like vnyan_bridge_graph (install action) and vnyan_trigger (general trigger).

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 states the prerequisite (bridge graph install) and the limitation that the tool does not read back applied state. However, it does not explicitly mention when not to use it or alternative tools for other effects.

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

vnyan_expressionVNyan expressionsA

Expression Mapper entries: input blendshape value windows (AND-gated, case-insensitive match) that force output blendshape values when all inputs are in range. 'list'/'read' (disk, always readable) read settings.json 'Expressions'. 'export' writes one entry out as a standalone .vnexp JSON file. 'import' reads a .vnexp file and adds/replaces it by name in settings.json - REQUIRES VNyan closed, same guard as vnyan_settings_set.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoExpression name (required for read/export)
pathNo.vnexp file path (required for import/export)
actionYesWhich expression operation to perform

TDQS

A3.8/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 that list/read are disk reads, always readable; export writes a file; import adds/replaces by name and requires VNyan closed. It also explains the internal structure of expressions (input windows, AND-gating). The guard reference for import adds useful context. Minor omissions: no mention of permissions or side effects beyond file writes.

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 highly concise, using two sentences to explain the core concept and then a list-like format for actions. It front-loads the essential idea of an expression mapper entry and avoids redundancy. Every sentence adds unique information, with no wasted words.

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 tool has 3 parameters, no output schema, and moderate complexity, the description covers the data model and each action's purpose. However, it lacks details on return values (e.g., what list returns, format of read output) and error conditions. For a tool with no output schema, describing the return structure would improve completeness.

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 all parameters described. The description adds significant value beyond the schema: it clarifies that 'name' is the expression name used for read/export, 'path' is a .vnexp file path for import/export, and elaborates on each action's effect (e.g., 'export' writes a standalone .vnexp file, 'import' reads and adds/replaces). This extra context aids correct parameter usage.

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 defines the tool as dealing with 'Expression Mapper entries' and explains the core concept (input blendshape value windows that force outputs). It lists and describes each action (list, read, export, import) with specific behavior. While it does not explicitly differentiate from siblings, the unique resource and actions make the purpose distinct.

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 usage context for each action: list/read are 'always readable' and read from settings.json, export writes a standalone .vnexp file, import requires VNyan closed and is guarded like vnyan_settings_set. However, it does not specify when to prefer this tool over alternatives (e.g., vnyan_settings_get/set) or when not to use it, limiting guidance.

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

vnyan_gestureVNyan hand gesturesA

Lists configured hand gestures (settings.json 'Gestures' - recorded per-finger curl thresholds for each hand). Source: disk, read-only: gestures are recognized from hand tracking (GestureNode/FilterGestureNode read them) but nothing in VNyan's node system or plugin API can set/fire one programmatically.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses the tool's behavior: it is read-only, reads from disk, and cannot set/fire gestures. This covers the key behavioral traits an AI agent needs to know.

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, front-loading the core purpose and then adding behavioral context. Every sentence earns its place with no redundancy.

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, the description explains what the list contains (gestures with per-finger curl thresholds), which is sufficiently complete for a read-only listing tool. It could be slightly more detailed about the output format, but it is adequate.

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 tool has zero parameters, so parameter semantics are irrelevant. The description adds no parameter information, but baseline for 0 params is 4.

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 'Lists' and the resource 'configured hand gestures', specifying the data they contain (per-finger curl thresholds). This distinguishes it from sibling tools like vnyan_settings_get or vnyan_expression, which deal with different data.

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 that this tool is for reading only ('read-only') and that gestures cannot be set programmatically, but it does not explicitly state when to use this tool over alternatives or provide exclusion criteria. Usage context is implied but not explicit.

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

vnyan_graph_listList VNyan node graphsA

Lists the node-graph tabs (redeems.json, redeems1.json, ...) with their name, active flag, and node count. Source: disk, always readable.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, but description discloses source (disk) and behavior (always readable). It does not mention rate limits or auth, but for a read-only list, 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?

Single sentence, front-loaded with action, no wasted words. Perfectly concise.

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?

With no output schema, the description could elaborate on return format, but it covers purpose and source adequately for a simple list 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?

No parameters (0 params), so baseline 4. Description adds no parameter info, which is acceptable given no parameters to document.

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 'Lists' and resource 'node-graph tabs', specifying the file pattern and returned fields (name, active flag, node count). This distinguishes it from sibling tools like vnyan_graph_read.

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?

States 'Source: disk, always readable', implying no special permissions needed. While it doesn't explicitly compare to siblings, it provides sufficient context for a simple list operation.

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

vnyan_graph_readRead a VNyan node graphA

Parses one graph slot and resolves every connection to (node type, socket role, index) pairs, decodes MessageBoxNode documentation text, and flags AES-encrypted local-file-path values instead of dumping their ciphertext. Also returns a 'warnings' array auditing the graph for mistakes VNyan accepts silently: a blendshape written twice on one execution path, a parameter read before the node that writes it (so it reads the previous tick), a float wired into BlendshapeNode's int value socket, and MathExpNode on a fast timer. Source: disk, always readable.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotYes0 = redeems.json, 1 = redeems1.json, 2 = redeems2.json, ...

TDQS

A4.1/5.0
Behavior5/5

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 explicitly reveals that encrypted local-file paths are flagged rather than dumped as ciphertext, details the specific audit checks in the warnings array (e.g., blendshape written twice, parameter read-before-write), and states the data source ('disk, always readable'). This goes beyond a mere 'reads a graph' with actionable specifics.

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 composed of three dense sentences, each adding distinct value: main transformation, audit warnings, and source reliability. It is front-loaded with the core action before detailing ancillary behaviors. While somewhat lengthy, every clause contributes substantive information; no filler or redundancy is present, though it could be slightly tightened.

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 complexity of a graph parsing and auditing tool with no output schema, the description covers the essential return aspects: connection pairs, decoded documentation text, encrypted path flags, and the warnings array with specific audit checks. It does not fully describe the exact output structure (e.g., JSON field names) but provides enough for an agent to understand the tool's role and expected output nature. The source reliability and audit checks add context for safe usage.

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%, with the 'slot' parameter already documented as mapping to specific files (0 = redeems.json, etc.). The description does not add additional semantics about the parameter beyond what the schema provides, so the baseline of 3 is appropriate. No supplementary details 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 states a highly specific verb ('parses,' 'resolves,' 'decodes,' 'flags') and a clear resource ('one graph slot'). It details the exact output transformations (connection resolutions, MessageBoxNode text decoding, encrypted-path handling) and distinct audit warnings, making its purpose unmistakable and differentiating it from siblings like vnyan_graph_write (writing) and vnyan_graph_list (listing slots).

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 when to use it — for reading and auditing a graph slot — but does not explicitly mention alternatives or provide exclusion conditions (e.g., 'use vnyan_graph_list to see available slots'). The 'always readable' note hints at reliability, but no direct comparison to sibling tools like vnyan_graph_write or vnyan_node_schema is given. This is adequate but not explicit.

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

vnyan_graph_writeAuthor a VNyan node graphA

Builds a node graph from a friendly spec (nodes with caller-chosen ids + literal values, exec/value connections referencing those ids). By default (no 'slot') it EXPORTS the graph as a plain JSON file - import it into VNyan live via its own 'Load Graph' menu (replaces the currently active tab, VNyan stays running, no restart). PREFER THAT even when VNyan is closed: the 'slot' path (redeemsN.json + its asredeemsN.json mirror) REQUIRES VNyan closed and is unreliable, because VNyan persists its own in-memory copy of a tab over the file - a verified slot write has been observed silently replaced by an older graph, surviving only in the asredeemsN.json mirror. If you use 'slot', re-verify after VNyan restarts. Returns a 'warnings' array of static-analysis findings when it spots one of the mistakes VNyan itself accepts silently (a blendshape written twice on one execution path, a parameter read before the node that writes it, a float wired into BlendshapeNode's int value socket, or MathExpNode on a fast timer) - the graph is still written, so read them. Most action nodes have zero execOut sockets (check vnyan_node_schema) - they are terminal, not links in a serial chain. To run several actions off one event/trigger, fan its single execOut out to each action's execIn directly, rather than chaining action-to-action. FAN-OUT EXECUTES IN CONNECTION ORDER within a single tick (multicast delegate), so terminal nodes CAN be sequenced by wiring order - a chain of ParamOpNodes each reading the previous one's parameter resolves in one tick, with no OrderedNode and no lag. You therefore do NOT need MathExpNode to avoid ordering problems, and reaching for it on a timer is a frame-rate disaster - see vnyan_guide topic:'graph-performance'. BlendshapeNode specifics: its wired value socket is cast to int (put a DecimalToNumberNode in front of any decimal source, or the write throws and vanishes), 'bsName' splits on ';' so one node can drive several shapes from one evaluation, and bsValue '0' REMOVES the override rather than writing zero - so never zero a shape and then write it in the same tick. Branching nodes (OrderedNode, every Filter*Node, CompareTextNode, RandomNode, ...) declare their exec outputs as an array sized by the Unity prefab, so vnyan_node_schema reports a floor rather than an exact count - wiring past that floor is allowed for those types, and the sockets are created as needed. Node-value file-path fields (sound/avatar files) can't be set as literals here since VNyan encrypts them - wire a SetTextParamNode/TextReplaceNode into that value socket instead, the same pattern VNyan's own Crowd Control example graph uses. VALUE SOCKETS ARE STRONGLY TYPED AT RUNTIME despite values[] always being strings in the saved JSON - wiring a raw int/text output straight into a float/bool input throws inside VNyan and silently aborts the whole call (see valueConnections.toIndex below). If writing directly to a slot, VNyan only EXECUTES slots covered by settings.json 'NodeGraphCount' - a graph placed beyond that count loads with no error but never runs; use vnyan_settings_get area:'misc' to check it first. If using the default export+Load-Graph workflow instead, note VNyan's live Load Graph updates the running graph immediately but only writes it to redeemsN.json on VNyan's own quit - vnyan_graph_read can lag behind what's actually loaded until then. Full cookbook: vnyan_guide topic:'node-authoring'.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNoAdvanced/fallback: write directly into this slot instead of exporting a file. REQUIRES VNyan closed.
nodesYesEvery node in the graph
graphNameYesDisplay name for the graph tab
connectionsNoExecution-flow wiring. Most action nodes have ZERO execOut sockets (check vnyan_node_schema) - they are terminal, not links in a chain. To run several actions off one event, add one connection per action from that same event node, rather than chaining action-to-action.
exportFileNameNoFile name for the export (default: graphName + '.json'), written under the configured export directory
valueConnectionsNoData-flow wiring between value sockets - see valueConnections.toIndex for the critical type-safety rule.

TDQS

A4.9/5.0
Behavior5/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 discloses many behavioral traits: slot writes can be silently overwritten, warnings array for static-analysis findings, type-safety that throws and aborts silently, NodeGraphCount execution limitation, and load-graph lag behind vnyan_graph_read. This is exceptional transparency.

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 very long but well-structured: it starts with the primary purpose and mode, then progressively covers warnings, action-node wiring, blendshape specifics, branching, file-path fields, type safety, and slot-count caveats. While it could be trimmed, each section adds unique value for this complex tool, so it earns its place.

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?

Given the tool's complexity (graph authoring with multiple connection types, runtime type-safety, VNyan quirks) and the absence of annotations or output schema, the description is remarkably complete. It covers edge cases, error conditions, related tools (vnyan_node_schema, vnyan_guide), and even the return of a warnings array. Nothing essential is missing.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning beyond the schema: it explains slot as advanced/fallback with a closed-VNyan requirement, exportFileName default behavior, and the critical valueConnections.toIndex type-safety rule and routing through converters. It enriches parameters with essential context for correct invocation.

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 a specific verb ('Builds a node graph') and resource ('from a friendly spec'), and clearly differentiates from siblings: it contrasts with vnyan_graph_read (reading) and mentions vnyan_node_schema for node types. An agent can tell this is the authoring/writing tool among the vnyan_* family.

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

Usage Guidelines5/5

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

Extensive when/when-not guidance: explicitly prefers the export path over slot ('PREFER THAT even when VNyan is closed'), warns about slot unreliability, explains when to use fan-out vs chaining, and routes to vnyan_guide for more. It covers exclusions and alternatives thoroughly.

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

vnyan_guideVNyan MCP reference guideA

Long-form reference documentation for this MCP - node-authoring rules and the runtime type-safety gotcha, the full bone-name list, a live settings.json key index, pendulum physics semantics, the restart policy, and known limits. Omit 'topic' to list what's available. The same content is also published as MCP resources under vnyan://guide/.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoWhich guide topic to read - omit to list all topics

TDQS

A4.2/5.0
Behavior4/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. While it does not explicitly state that the tool is read-only or free of side effects, the phrasing 'reference documentation' clearly indicates an informational, non-mutating operation. It also discloses the behavioral trait of being mirrored as MCP resources, which is useful context. For a simple lookup tool, this is adequate transparency without being 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?

The description is two sentences, front-loaded with the core purpose, then quickly covers usage (omit topic to list) and an alternative access path. Every word earns its place; there is no filler or repetition. The structure is efficient and immediately comprehensible.

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 tool with one optional parameter and no output schema, the description covers what content is available, how to get a topic list, and that the same data is also published as resources. It does not specify the exact output format (e.g., plain text vs. markdown), but given the simple nature of a reference lookup, this is a minor omission. Overall, the agent has enough to use the tool correctly.

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 fully documents the 'topic' parameter with an enum and a description. The tool description adds value by elaborating on what each topic actually contains (e.g., 'the runtime type-safety gotcha', 'the full bone-name list'), giving the agent a richer sense of what it will get. It also reinforces the omission behavior. This goes beyond the schema's minimal naming and justifies a score above the baseline.

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 identifies the tool as providing long-form reference documentation for the MCP and enumerates the exact content areas (node-authoring rules, bone-name list, settings.json key index, etc.). This is a specific, unambiguous purpose that easily differentiates it from the sibling action tools, which perform operations rather than deliver reference material.

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 when to use the tool (when reference documentation is needed) and explains how to operate it (omit 'topic' to list everything, use a topic to fetch specific content). However, it does not explicitly discuss when to choose this tool over alternatives; it only notes that the same content is also available as MCP resources, without guidance on which access method to prefer. This leaves some ambiguity for the agent.

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

vnyan_lightFire a bridged lightA

Drives ambient light intensity via the installed bridge graph's TriggerNode - live-parametrized. 'sunLight' is fire-only: every value-socket wired into SunLightNode crashes VNyan's trigger processing (root cause not identified, looks like a VNyan-side bug specific to this node class), so firing it just turns the sun light on at fixed defaults - 'intensity'/'toggle' are ignored for it. REQUIRES vnyan_bridge_graph action 'install' to have been run once. Source: plugin trigger.call (live). No getter exists at any tier - the MCP tracks the value it just sent, it does not read back the actual applied state.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesBridge action key, e.g. 'ambientLight' or 'sunLight'
toggleNoIgnored for sunLight - see tool description
intensityNoDefault 0. Ignored for sunLight - see tool description

TDQS

A4.9/5.0
Behavior5/5

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

Discloses the sunLight bug causing crashes, that the tool is one-way fire-only, and that MCP tracks sent value not actual state. Comprehensive given no annotations.

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?

Efficiently packed with all necessary details, no redundancy, each sentence adds value, well-structured with purpose, special cases, requirements, and limitations.

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?

Covers prerequisites, edge cases (sunLight bug), limitations (no getter), and source. With no output schema or annotations, this description is fully adequate for an agent to use the tool correctly.

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%, but description adds crucial context: toggle and intensity are ignored for sunLight, and explains the fire-only nature of sunLight beyond enum values.

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 drives ambient light intensity via bridge graph's TriggerNode, lists specific keys (bloom, vignette, ambientLight, sunLight), and distinguishes from sibling tools like vnyan_bridge_graph which installs the graph.

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

Usage Guidelines5/5

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

Explicitly notes when not to use certain parameters (sunLight ignores intensity/toggle), requires prior install of vnyan_bridge_graph, and explains that no getter exists, so agent knows not to expect readback.

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

vnyan_node_schemaVNyan node type schemaA

Looks up a node type's socket layout (exec-in/out and value-in/out counts, field names in socket order, and the values[] keys VNyan writes by default) - or lists all known node types plus schema provenance when 'type' is omitted. Source: bundled reference data (offline, no VNyan connection needed). How much to trust each field: socket counts and valueInFields/valueOutFields are read from real declared C# fields and are reliable. dynamicSockets lists socket kinds whose real count comes from the Unity prefab or is built at runtime (array-typed socket fields, and every 'Flex' node) - for those the count shown is a FLOOR, not a ceiling, and vnyan_graph_write will let you wire past it; confirm the true count with vnyan_graph_read on a graph that already uses the node. valuesUncertain: true means the values[] key names came from a source heuristic rather than an observed VNyan-written graph - verify them before relying on them. valuesCountMismatch is a stronger warning: that entry's field count disagrees with VNyan's own help file, so its keys are probably WRONG - confirm with vnyan_graph_read against a graph already using the node before authoring with it. possiblyIncomplete: true means values[] is shorter than the valueIn count, usually because a value socket was wired in the sampled graph (VNyan drops a wired socket's key from values[]).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoe.g. 'CallTriggerNode' - omit to list all ~300 known types

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries full responsibility. It goes far beyond the minimum by disclosing the provenance and reliability of every field: socket counts are 'reliable' from C# fields, dynamicSockets are 'a FLOOR, not a ceiling', valuesUncertain and valuesCountMismatch are heuristics vs. observed data, and possiblyIncomplete explains why values[] may be shorter. This is exceptional transparency for an offline reference 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 long but every sentence earns its place, explaining reliability and verification steps that are crucial for correct usage. It is front-loaded with the primary purpose and then layers trust levels. It could be trimmed slightly, but the density is justified by the complexity of the data quality warnings, so a 4 is appropriate.

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 single-parameter tool with no output schema, the description covers all needed information: what it does, how to invoke it optionally, what each returned field means, how reliable each is, and how to verify uncertain data with another tool. It even explains edge cases like array sockets and Flex nodes. Nothing an agent needs to call this correctly and interpret results is missing.

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 documents the single parameter with an example and the omit-to-list-all behavior, giving 100% coverage. The description adds value by elaborating on the omission case and providing the '~300 known types' context, which goes beyond the bare schema. It doesn't duplicate the schema text, so this is a 4 rather than a baseline 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 opens with a clear verb and resource: 'Looks up a node type's socket layout' and details exactly what data it retrieves. It also distinguishes the behavior when the 'type' parameter is omitted (lists all types), which separates it from sibling tools like vnyan_graph_read or vnyan_graph_write that manipulate graphs rather than inspect schemas.

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 gives clear context for when to use the tool and how to interpret results, including explicit guidance to 'confirm the true count with vnyan_graph_read' and to verify suspicious values via vnyan_graph_read. It also explains when the tool does NOT need a VNyan connection. However, it does not explicitly name alternatives or state 'use this instead of X', so it falls short of an explicit when-not-to-use declaration.

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

vnyan_osc_paramSet VNyan parameter via OSCA

Sends a UDP OSC message to 127.0.0.1:28569 to directly set a VNyan parameter (/VNyan/Param/Float or /VNyan/Param/String depending on the value type). Source: native port, no plugin required. Fire-and-forget, no graph node needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVNyan parameter name to set
valueYesThe value to set - a number sends /VNyan/Param/Float, a string sends /VNyan/Param/String. The address is chosen by this value's JS type, not by anything else in the call.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description properly discloses network behavior (UDP, localhost:28569), address selection logic based on value type, and the fire-and-forget nature. It lacks details on error handling or rate limits, but these are minor for such a tool.

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, front-loaded with the core action, no extraneous information. Every word adds value.

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?

Given the tool's simplicity (no output schema, two parameters), the description covers all essential aspects: what it does, how it communicates, and the behavior for different value types.

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%, providing baseline 3. Description adds value by explaining how the OSC address is chosen based on the value's JS type ('/VNyan/Param/Float' or '/VNyan/Param/String'), which is not apparent from the schema alone.

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 sends a UDP OSC message to set a VNyan parameter, specifying the protocol, target, and mechanism. This distinguishes it from sibling tools that use graph nodes or plugins.

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?

Implied usage: 'fire-and-forget, no graph node needed' and 'source: native port, no plugin required' indicate when to use. However, it does not explicitly list alternatives or when not to use this tool, leaving some ambiguity among siblings like vnyan_param.

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

vnyan_paramVNyan parametersA

Get or set VNyan's numeric/text parameters and expand [bracketed] parameter references in a string. These are the same parameters SetParamNode/FilterParamNode read and write in node graphs. Source: plugin (live, read+write).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoParameter name (required for get/set actions)
textNoText containing [bracketed] parameter refs, for fillString
valueNoValue to set
whichNoWhich built-in, for 'internal'
actionYesWhich parameter operation to perform

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It states read+write capability and live source, but does not detail side effects, rate limits, or error conditions. More context on data freshness or mutation scope would improve 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?

Two sentences efficiently convey purpose, scope, and source without fluff. Front-loaded with the core action, making it easy for an agent to parse quickly.

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 5 params, no output schema, and no annotations, the description covers the basic function and source but omits return value format, error handling, and example usage. Adequate but not comprehensive.

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 schema already documents all parameters. The description adds context about parameter origin (node graphs) but does not enhance parameter meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: get/set numeric/text parameters and expand bracketed references. It also specifies the source (plugin, live, read+write) and connects to node graph concepts, distinguishing it from siblings like vnyan_avatar or vnyan_trigger.

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 by referencing node graph parameters, but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No mention of prerequisites or limitations.

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

vnyan_pendulumVNyan pendulum chainsA

'list' (disk, always readable) reads the pendulum chains configured in VNyan's UI (settings.json 'Chains') and reports every output target written more than once in 'sharedOutputTargets'. 'create'/'delete'/'setPosition'/'setRotation'/'chains' (plugin, live) manage a SEPARATE set of chains created at runtime via this API, addressed by the numeric handle 'create' returns - they are not the same chains as 'list' and don't persist across a VNyan restart. CRITICAL CONSTRAINT: only ONE pendulum may write a given output target directly. VNyan assigns rather than accumulates on all three output paths, so a second writer overwrites the first every frame and the motion cancels out - a routing problem no damping/elasticity tuning will fix. The granularity differs per kind: blendshapes key on NAME (and a name counts as written whether it appears as an output's 'blendshape' or its 'negative'); GameObjects key on (name, transform axis), so the same object on DIFFERENT axes does NOT clash; parameters key on name, so two outputs must never share a 'param'. To layer several pendulums on one target: clear the direct output field on each, give each output its own unique 'param', sum those in a node graph, and apply the total with a single node - ObjectRotNode for transforms (set all three axes together, it zeroes omitted ones), or for a SIGNED blendshape pair a FilterParamNode sign split into two BlendshapeNodes, since one BlendshapeNode cannot drive two different shapes. Read vnyan_guide topic:'pendulum-composition' for the verified recipe and the full field-by-field data model BEFORE changing a chain's outputs. See vnyan_guide topic:'pendulum-tuning' for the spring params.

ParametersJSON Schema
NameRequiredDescriptionDefault
inertNoHow rigidly the chain FOLLOWS the avatar's own movement, 0-1 (hard-clamped). Default 0. Reads backwards from the name, so mind the direction: DynamicBone integrates 'position += velocity*(1-damping) + gravity + objectMove*inert', i.e. the object's motion is ADDED to each particle in proportion to inert. 1 = the chain travels with the avatar, so moving or turning it induces NO swing; 0 = the chain ignores the avatar, so avatar motion produces MAXIMUM swing. Raise it when head movement shakes a chain that should only react to its own input value. For 'create', at runtime creation time only.
valueNoDrive value for setPosition/setRotation - setPosition makes the pendulum swing back and forth as this value changes over repeated calls; setRotation swings it to this angle and holds it there.
actionYesWhich pendulum operation to perform
handleNoHandle from a prior 'create' (required for all but 'create')
dampingNoHow fast motion decays, 0-1 (hard-clamped by VNyan). Default 0.1. Higher = settles sooner. For 'create', at runtime creation time only.
boneCountNoFor 'create'. Typical chains use 2-4 bones. Default 4
stiffnessNoResistance to being rotated away from the rest orientation, 0-1 (hard-clamped). Default 0.1. For 'create', at runtime creation time only.
elasticityNoRestoring force pulling each bone back to its rest position, 0-1 (hard-clamped). Default 0.1. LOWER = floppier / more swing-bounce; higher = snaps back fast - it's a return-strength, not a bounce-amount, so low values look bouncier. Applies uniformly across the whole chain (VNyan does not use per-bone distribution curves), though motion naturally accumulates toward the chain tip. For 'create', at runtime creation time only.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral disclosure burden. It states that runtime chains do not persist across restarts, that VNyan assigns rather than accumulates on output targets (so overwriting cancels motion), and that granularity differs by key type (name vs. axis vs. param). It also warns to read the guide before changing outputs, revealing potential side effects and constraints.

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 long but information-dense. It front-loads the critical constraint early and structures the content logically from overview to constraints to layering instructions. While it could be tightened, the length is justified by the tool's complexity and the need to prevent misuse.

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 8 parameters, no output schema, and complex interplay, the description covers the essential operational aspects: the two sets of chains, the overwriting constraint, granularity differences, and layering strategy. It explicitly points to vnyan_guide for the full data model, which is good practice. However, it does not detail error conditions or the exact return format, so it is not fully 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%, and each parameter already has a rich description (e.g., 'inert' explains direction and effect). The description text adds little beyond the schema for individual parameters—it repeats the 'value' behavior and provides contextual constraints (like the overwriting rule) that apply globally. It does not introduce new parameter-level semantics, so a 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 identifies the tool's purpose: reading configured pendulum chains via 'list' and managing a separate set of runtime chains via 'create', 'delete', 'setPosition', 'setRotation', and 'chains'. It explicitly contrasts the two sets, eliminating ambiguity about what the tool operates on and is distinct from any sibling tool.

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

Usage Guidelines5/5

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

Usage guidance is explicit: it distinguishes between the always-readable 'list' and the live runtime commands, and it warns that only one pendulum may write a given output target, with an explanation of the consequences. It also provides concrete layering instructions and directs the agent to vnyan_guide topics for the full recipe, leaving no doubt about when to use this tool and how to avoid pitfalls.

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

vnyan_plugin_listVNyan installed pluginsA

Lists DLLs in Items\Assemblies and reads their IVNyanPluginManifest metadata where present. Source: plugin, read-only. Read-only inventory - installing a plugin DLL stays a user action.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

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

Although no annotations are provided, the description clearly indicates the tool is read-only ('Read-only inventory') and explains that installing a plugin DLL remains a user action, implying it does not modify the system. This is sufficient behavioral disclosure for a simple list operation. It does not discuss edge cases like no assemblies found, but that is not critical.

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, each providing essential information: the action (lists DLLs) and the read-only nature. There is no redundancy or extraneous text. It is appropriately sized for a parameterless tool.

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 absence of an output schema, the description partially explains the return value (lists DLLs and metadata), but does not specify the format or structure of the output. It is adequate for a simple inventory tool but could be more complete by mentioning that it returns an array of plugin objects or a list of names. Considering the low complexity, it meets a minimal baseline.

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 no parameters, and schema description coverage is 100%. The description does not add any parameter semantics because there are none. The baseline score of 3 is appropriate; there is no missing information.

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 it lists DLLs in the Assemblies directory and reads metadata from IVNyanPluginManifest if present. The verb 'lists' and resource 'DLLs' are specific, and it distinguishes from sibling tools that deal with other VNyan components (e.g., graphs, effects) by explicitly calling it a plugin inventory. However, it does not explicitly contrast with similar listing tools like vnyan_graph_list.

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. It implies it is for viewing installed plugins, but does not mention when not to use it or suggest other tools for related tasks like searching or filtering. There are no usage conditions or prerequisites stated.

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

vnyan_propVNyan propsA

List configured props (disk, always readable), or set/toggle an existing prop's visibility by name (plugin, live - the same as the Toggle Prop node / a prop's Twitch redeem).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoProp name (required for set/toggle)
actionYesWhich prop operation to perform
activeNoFor 'set': true to show, false to hide (default true)

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 must carry behavioral transparency. It mentions 'always readable' for list and 'plugin, live' for set/toggle, hinting at persistence, but does not clarify side effects, permissions, or error conditions. 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?

Two sentences concisely cover the tool's purpose and modes. Every sentence adds value, and the description is front-loaded with the main action. No unnecessary 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 simple parameter set and absence of output schema, the description adequately covers the tool's functionality. It explains the two operation modes and parameter requirements. Could mention return format for list, but still complete for most use cases.

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 baseline is 3. The description adds context that set/toggle require an existing prop and that active defaults to true, complementing the schema. However, it does not significantly enhance beyond the schema's own descriptions.

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 configured props or sets/toggles visibility by name, with specific distinctions between modes. It references the Toggle Prop node and Twitch redeem, differentiating from sibling tools which cover other VNyan features.

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 indicates when to use each action (list vs. set/toggle) but lacks explicit guidance on when not to use alternatives or prerequisites. Context from sibling tools helps, but more direct usage advice would improve the score.

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

vnyan_settings_getRead VNyan settings.jsonA

Reads settings.json (tracking/output/graphics/audio/connections/misc). Source: disk, always readable regardless of whether VNyan is running. Secrets (OBS/Chaturbate/VNyanNet passwords) are redacted. Props/colliders/pendulums/stretch bones/gestures/expressions have their own dedicated tools and are not included here.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaYesWhich settings area to read

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully bears the burden. It discloses: reads from disk, always readable, secrets redacted, and excluded categories. No contradictions or missing behavioral traits.

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 concise sentences. The first sentence states the action and scope, the second adds key behavioral details (source, availability, redaction, exclusions). No redundant information.

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 read tool with one param and no output schema, the description covers source, availability, redaction, and exclusions. It lacks explicit description of the output format, but the purpose is clear.

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 an enum and description for 'area'. The description adds value by listing the enum values in context and explaining what is not included (other categories), which supplements 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 explicitly states 'Reads settings.json' and lists the specific areas covered (tracking/output/graphics/audio/connections/misc). It also distinguishes from sibling tools by listing what is excluded (props, colliders, etc.) and noting their dedicated tools.

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 context about the data source (disk) and availability (always readable regardless of VNyan running). It implicitly guides usage by excluding other areas, but does not explicitly state when to use this tool versus alternatives beyond referencing other tools.

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

vnyan_settings_setWrite VNyan settings.jsonA

Patches specific keys in settings.json. Source: disk. REQUIRES VNyan to be closed - it triple-writes settings.json/.dat/_as.json on every save and would silently overwrite a live edit. Backs up settings.json to the backup\ folder before writing. Refuses unknown keys and keys that have a dedicated tool (props/colliders/pendulum/stretchbone/gesture/expression). settings.json is a single FLAT namespace of ~279 keys (no nesting) - call vnyan_settings_get first to see current values and exact key names for an area, or vnyan_guide topic:'settings-keys' for the full key-prefix index.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYesMap of EXISTING settings.json key -> new value. Keys must already exist in settings.json (unknown keys are rejected) and must not be one of the dedicated-tool keys (Props, Chains, StretchBones, Gestures, Expressions, or the collider size/offset keys).

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavior: requires closed VNyan due to triple-write, backs up file, refuses unknown and dedicated-tool keys, and notes flat namespace. Does not detail return value or error handling, but that is acceptable given no output 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 is a well-structured paragraph with front-loaded action, followed by warnings, prerequisites, and usage tips. Every sentence adds value without redundancy.

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 simple parameter structure and no output schema, the description provides sufficient context for an agent to use correctly: what it does, prerequisites, safety measures, and how to find keys. Minor omission: doesn't explicitly state that the file is modified on disk, but 'source: disk' implies that.

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 covers all parameter semantics with 100% coverage. Description adds context about the key namespace (flat, ~279 keys) and provides guidance on how to discover valid keys, which goes 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?

The description uses a specific verb 'patches' and resource 'settings.json', and distinguishes from sibling tools by noting that certain keys have dedicated tools (props, colliders, etc.). Also clearly differentiates from vnyan_settings_get which is for reading.

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

Usage Guidelines5/5

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

Explicitly states the prerequisite that VNyan must be closed, warns about silent overwrite, and recommends calling vnyan_settings_get first to see current values or vnyan_guide for key index. Also tells which keys to avoid (dedicated-tool keys) and directs to those tools instead.

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

vnyan_spoutVNyan Spout2 camerasA

List Spout2 output cameras, or add a new one. Source: plugin (live, read+write). There is no safe runtime way to remove a Spout2 camera - do that from VNyan's own Spout2 Cameras panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCamera/Spout output name (required for addCamera)
posXNoCamera position X, world units. Ignored if linkToMainCamera. Default 0
posYNoCamera position Y, world units. Ignored if linkToMainCamera. Default 0
posZNoCamera position Z, world units. Ignored if linkToMainCamera. Default 0
rotXNoCamera rotation X, Euler degrees. Ignored if linkToMainCamera. Default 0
rotYNoCamera rotation Y, Euler degrees. Ignored if linkToMainCamera. Default 0
rotZNoCamera rotation Z, Euler degrees. Ignored if linkToMainCamera. Default 0
flag1No4th positional bool arg to VNyan's AddCamera - meaning not identified (obfuscated signature). Default false.
flag2No5th positional bool arg to AddCamera - meaning not identified. Default false.
flag3No6th positional bool arg to AddCamera - meaning not identified. Default false.
flag4No7th positional bool arg to AddCamera - meaning not identified. Default false.
widthNoRender width in pixels. Default 1920
actionYesWhich Spout2 operation to perform
heightNoRender height in pixels. Default 1080
focalLengthNoCamera focal length (FOV). Ignored if linkToMainCamera. Default 35
linkToMainCameraNoIf true, this camera follows the main VNyan camera's position/rotation/FOV every frame (posX/Y/Z, rotX/Y/Z, focalLength below are then ignored). Default true.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations exist, so description carries full burden. It discloses that the tool accesses a plugin, is live and read+write, and that removal is not safe. However, does not mention return values or idempotency of addCamera.

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 concise sentences. First sentence covers purpose, second adds critical usage warning. No fluff, 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?

Description covers purpose and a key warning, but lacks return value information (e.g., what list returns, success for add). With no output schema, this gap reduces completeness. Parameter details are well-covered in schema.

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 baseline is 3. Description adds minimal value beyond schema, mostly repeating names. The only extra insight is that flag1-4 have unknown meanings. Could clarify ignored params when linkToMainCamera is true, but schema handles 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 tool lists or adds Spout2 cameras, with a specific verb and resource. It distinguishes from sibling tools by explicitly mentioning Spout2 cameras, which none of the other tools cover.

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?

Provides explicit warning about lack of safe removal and directs users to VNyan's own panel for that action. Also mentions source and read/write nature. Lacks explicit when-to-use vs. alternatives beyond the removal guidance.

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

vnyan_statusVNyan bridge statusA

Checks whether the VNyanMcp plugin bridge is reachable and reports per-system health (props/colliders/spout2/stretchbones), the full list of registered bridge RPC methods, which VNyan profile directory the disk-backed tools are reading (and how it was found - env var, the running plugin, or the conventional path), and the VNyan/Unity version the bundled node schema was generated from. No directory is hardcoded - this is the one place to confirm what this server actually resolved on your machine. Source: plugin + disk.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 fully discloses what it reports (health, RPC methods, directory, version) and sources, adding relevant behavioral details without contradictions.

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?

Packed with information but front-loaded and well-structured; slightly long but every sentence adds value.

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?

Given zero parameters and no output schema, the description fully covers the tool's behavior and return values, making it complete for an information-only status check.

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?

No parameters exist, so baseline 4 applies; the description adds context about the output, which compensates for absence of schema details.

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 it checks VNyanMcp bridge reachability and reports health, which distinguishes it from sibling tools that perform actions like setting parameters or triggering gestures.

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?

It explicitly notes this is 'the one place to confirm what this server actually resolved on your machine,' giving clear context for diagnostic use, though it doesn't list alternatives for similar checks.

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

vnyan_stretchboneVNyan stretch bonesA

'list' (disk, always readable) reads the persisted stretch bones (settings.json 'StretchBones'). 'add' (plugin, live, write-only) adds one at runtime - there is no live read-back for these, only the persisted list. All clamp/scale/move/offset params are multipliers or local-space offsets on the stretch bone's transform, not absolute world positions. Any field you omit uses VNyanStretchBone's own default, listed on each param below.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoRequired for 'add'
actionYes'list' reads the persisted set (disk); 'add' creates one at runtime (plugin)
maxClampXNoMaximum scale clamp, X axis. Default 1
maxClampYNoMaximum scale clamp, Y axis. Default 2
maxClampZNoMaximum scale clamp, Z axis. Default 1
minClampXNoMinimum scale clamp, X axis. Default 0.5
minClampYNoMinimum scale clamp, Y axis. Default 0.97
minClampZNoMinimum scale clamp, Z axis. Default 0.5
anchorNameNoBone/object the stretch bone is anchored to. Default ""
targetNameNoBone/object this stretch bone follows. Default ""
moveAmountXNoHow much stretch distance affects X position. Default 0.19
moveAmountYNoHow much stretch distance affects Y position. Default 0.03
moveAmountZNoHow much stretch distance affects Z position. Default 0.16
moveOffsetXNoMove offset X, local units. Default -1
moveOffsetYNoMove offset Y, local units. Default -1
moveOffsetZNoMove offset Z, local units. Default -1
scaleAmountXNoHow much stretch distance affects X scale. Default 0.5
scaleAmountYNoHow much stretch distance affects Y scale. Default 1
scaleAmountZNoHow much stretch distance affects Z scale. Default 1
targetOffsetXNoTarget offset X, local units. Default 0
targetOffsetYNoTarget offset Y, local units. Default 0
targetOffsetZNoTarget offset Z, local units. Default 0
blendshapeAxisNoWhich axis of motion drives the blendshape (0=X, 1=Y, 2=Z). Default 0
blendshapeNameNoOptional blendshape to drive from this stretch bone's motion instead of/alongside the transform. Default "" (unused)
offsetRotationXNoRotation offset X, degrees. Default 0
offsetRotationYNoRotation offset Y, degrees. Default 0
offsetRotationZNoRotation offset Z, degrees. Default 0
stretchBoneNameNoThe actual bone being stretched. Default ""
blendshapeInvertNoInvert the blendshape-driving axis. Default false
blendshapeMultiplierNoMultiplier applied to the blendshape-driving value. Default 1

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It explains that 'list' is always readable and 'add' is write-only. It clarifies that all numeric parameters are multipliers or local-space offsets, not absolute world positions. It also notes that omitted fields use defaults (listed in schema). However, it does not mention behavior on duplicate names or error handling, which would add further transparency.

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 relatively concise given the 30 parameters, using one sentence per operation and one for general parameter behavior. It front-loads the action choices. However, it repeats some information that is already in the schema (default values), which could be trimmed. Still, it remains efficient and to the point.

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 30 parameters and no output schema, the description covers the parameter semantics and action differentiation well, but it lacks information about return values (e.g., what 'list' returns) and error conditions. It does not describe the result of a successful 'add' or potential failures, leaving some gaps for an agent to fully use the 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 100% schema coverage, the baseline is 3. The description adds value by explaining that all clamp/scale/move/offset params are relative (multipliers/local offsets) and that omitted fields use the defaults listed in the schema. This provides context beyond the raw parameter descriptions in the input 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 that the tool manages stretch bones with two distinct actions: 'list' (reads from disk) and 'add' (creates at runtime). It differentiates between these operations and implicitly distinguishes from sibling tools by focusing specifically on stretch bones, a concept not covered by other tools in the list (e.g., vnyan_bone, vnyan_avatar).

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

Usage Guidelines5/5

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

The description explicitly explains when to use each action: 'list' for the persisted set (disk, always readable) and 'add' for runtime creation (no live read-back). It also warns that there is no live read-back for 'add', guiding the agent to use 'list' for persisted state. This provides clear context and avoids misuse.

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

vnyan_triggerVNyan triggersA

Call, queue, or reset VNyan's named Triggers (global across all node graphs - a TriggerNode with this name fires), and read recently-observed trigger calls. Source: plugin (live, read+write). 'recent' only sees calls made since the plugin loaded.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoTrigger name (required for call/enqueue)
limitNoMax entries for 'recent' (default 50)
queueNoQueue name (required for enqueue/resetQueue)
text1NoText param 1 - a free string, use this for decimals/precise values
text2NoText param 2 - a free string
text3NoText param 3 - a free string
actionYesWhich trigger operation to perform
value1NoNumeric param 1, passed to the TriggerNode as a whole INTEGER (truncates fractions - e.g. 2.5 arrives as 2). For a precise decimal, use text1-3 instead and convert on the receiving end with a TextToDecimalNode (see vnyan_guide topic:'node-authoring').
value2NoNumeric param 2 - same int-truncation caveat as value1
value3NoNumeric param 3 - same int-truncation caveat as value1
waitTimeAfterMsNoFor 'enqueue': milliseconds to wait after this item runs before the queue dequeues the next one.

TDQS

A3.9/5.0
Behavior4/5

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

Despite no annotations, the description discloses key behaviors: integer truncation for numeric parameters, recommendation to use text for decimals, explicit explanation of 'enqueue' behavior with waitTimeAfterMs, and the limited scope of 'recent'. Does not mention error handling or side effects, but covers main behavioral traits well.

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?

Description is brief but packs essential information. Three sentences cover purpose, source liveness, and scoping. Could be slightly restructured with bullet points, but current format is efficient and easy to parse.

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 11 parameters and no output schema, the description explains key usage details like integer truncation and enqueue semantics. Lacks return value explanation and error cases, but overall adequate for a well-schematized 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?

Schema has 100% coverage with detailed descriptions. The description adds extra meaning: explains integer truncation caveat, recommends text params for precision, and gives usage guidance for 'enqueue' wait time. This goes beyond what the schema alone provides.

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 multiple actions (call, queue, reset, read) on the resource 'VNyan's named Triggers', and adds crucial context that triggers are global across all node graphs. This distinguishes it from sibling tools like vnyan_param or vnyan_api_fire.

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. The description mentions that triggers are global and 'recent' is only since plugin load, but does not compare with other tools like vnyan_param (for parameters) or vnyan_api_fire (for direct API calls).

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

vnyan_uiVNyan UIA

Read the active color theme, or open a native load/save file dialog to resolve a real local file path (blocks until the user responds - use a generous timeout expectation). Source: plugin (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich UI operation to perform
headerNoDialog title text shown to the user, for openLoadFileDialog/openSaveFileDialog
extensionsNoFile extensions without the dot, e.g. ['png','jpg']

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 of behavioral disclosure. It notes the blocking nature and timeout expectation for file dialogs, which is critical. It does not mention potential failure modes or return behavior, but it covers the most important aspect for an interactive UI tool.

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 concise sentences: the first lists the operations, the second provides essential behavioral context and source. Every word serves a purpose with no redundancy.

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, the description could be more specific about return values (e.g., what the theme operation returns). However, for a tool with only three enum actions, it provides enough context to use it effectively, and the blocking behavior is clearly communicated.

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?

All three parameters are fully described in the schema (100% coverage). The description adds context about blocking and file path resolution but does not significantly enhance the parameter meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states two distinct operations: reading the active color theme and opening file dialogs to resolve file paths. It uses specific verbs ('read', 'open') and resource nouns ('color theme', 'file dialog'), and the sibling tools are all unrelated, so it is well-differentiated.

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 warns that the file dialog actions block until the user responds, advising a generous timeout. This is a key usage guideline. While it does not explicitly state when not to use it, the action enum makes the choice clear, and there are no overlapping siblings that require exclusion criteria.

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

vnyan_vnyannetVNyanNet (multiplayer)A

Read connected players and their slot transform, send an RPC to the lobby, and read recently observed RPCs/connection events. Source: plugin (live, read+write). Returns empty results, not an error, when VNyanNet isn't configured (VNyanNetServerUrl unset).

ParametersJSON Schema
NameRequiredDescriptionDefault
wNoRotation quaternion W component - only used by slotRotationSet, default 1 (identity)
xNoPosition/rotation/scale X component, for the slotXxxSet actions
yNoPosition/rotation/scale Y component, for the slotXxxSet actions
zNoPosition/rotation/scale Z component, for the slotXxxSet actions
nameNoRPC name, for sendRPC
slotNoVNyanNet player slot index - required for every slotXxxGet/Set action
val1NosendRPC string param 1
val2NosendRPC string param 2
val3NosendRPC string param 3
val4NosendRPC float param 1
val5NosendRPC float param 2
val6NosendRPC float param 3
limitNoMax entries for 'recent' (default 50)
actionYesWhich VNyanNet operation to perform
bounceNosendRPC: echo the RPC back to the sender too. Default false
playerNameNoVNyanNet player name, for getSlot/setSlot

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description adds value by stating the tool is live, supports read+write, and returns empty results (not errors) when VNyanNet is unconfigured. However, it does not disclose potential side effects of RPC or slot modifications.

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, front-loading the core capabilities and adding a critical behavioral detail. Every sentence is informative, with 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?

The tool has 16 parameters and 11 actions, but the description only provides a broad overview. Details about each action (e.g., getSlot vs setSlot) are absent, and the output behavior is not described. The schema covers parameters, but usage completeness is limited.

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 no per-parameter information; it only gives a high-level context. The schema already sufficiently documents each parameter's 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 explicitly states the tool reads connected players, slot transforms, sends RPCs, and reads recent events. It also mentions the source and error behavior. This clearly distinguishes it from sibling tools focused on other VNyan features.

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 use for VNyanNet multiplayer operations but provides no explicit when-to-use or when-not-to-use guidance compared to alternatives. The mention of empty results when unconfigured is helpful but not sufficient for strong differentiation.

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

vnyan_ws_sendSend VNyan WebSocket commandA

Sends a plain-text ' ' frame to ws://127.0.0.1:8000/vnyan to trigger a matching WebSocket Command node. Source: native port, no plugin required. Fire-and-forget, no JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesMatched against a WebSocket Command node's Command Text
messageNoRest of the payload after the command

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the plain-text format, fire-and-forget behavior, and that it requires no plugin and connects to a native port. However, it does not mention error handling or what happens if the command is not matched.

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 concise sentences with no wasted words. It front-loads the action and key details, making it efficient for an AI agent to parse.

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?

The description provides sufficient context for a simple fire-and-forget tool with 2 parameters and no output schema. It covers the protocol, behavior, and source. Minor missing details like case sensitivity are not critical.

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% and both parameters have schema descriptions. The description adds value by explaining the plain-text frame format and how the command parameter is matched against a WebSocket Command node, which goes 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?

The description clearly states it sends a plain-text frame to a specific WebSocket endpoint to trigger a matching node. The verb 'Send' and resource 'VNyan WebSocket command' are explicit, and the format details distinguish it from sibling tools like vnyan_api_fire.

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 mentions 'Fire-and-forget, no JSON' which implies use for simple commands without expecting a response, but it does not explicitly state when to use this tool versus alternatives like vnyan_api_fire for JSON-based commands. No exclusion criteria are provided.

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.

  1. 3 tool updatesv0.4.0
    • Changedvnyan_blendshape1 field changed
      • changedInput schema / properties / value / description
        Previous value: -"0-100 (VNyan's Blendshape-node convention, not 0-1). Setting 0 removes the override entirely. Required for set actions."New value: +"RAW value, on the same scale 'get'/'list' report and pendulum outputs write - roughly 0-1 for full deflection, and NOT clamped (set 250 and it stores 250). This is deliberately NOT the 0-100 convention BlendshapeNode uses in a node graph: only BlendshapeNode divides by 100, so an int 37 there lands here as 0.37. Passing 50 expecting half deflection would give you 50x. Setting 0 removes the override entirely. Required for set actions."
    • Changedvnyan_guide1 field changed
      • changedInput schema / properties / topic / enum
        Previous value: -[
        -  "node-authoring",
        -  "bone-names",
        -  "settings-keys",
        -  "pendulum-tuning",
        -  "restart-policy",
        -  "known-limits"
        -]New value: +[
        +  "node-authoring",
        +  "graph-performance",
        +  "bone-names",
        +  "settings-keys",
        +  "pendulum-tuning",
        +  "pendulum-composition",
        +  "restart-policy",
        +  "known-limits"
        +]
    • Changedvnyan_pendulum1 field changed
      • changedInput schema / properties / inert / description
        Previous value: -"How much of the avatar's own movement is transferred into the chain, 0-1 (hard-clamped). Default 0. For 'create', at runtime creation time only."New value: +"How rigidly the chain FOLLOWS the avatar's own movement, 0-1 (hard-clamped). Default 0. Reads backwards from the name, so mind the direction: DynamicBone integrates 'position += velocity*(1-damping) + gravity + objectMove*inert', i.e. the object's motion is ADDED to each particle in proportion to inert. 1 = the chain travels with the avatar, so moving or turning it induces NO swing; 0 = the chain ignores the avatar, so avatar motion produces MAXIMUM swing. Raise it when head movement shakes a chain that should only react to its own input value. For 'create', at runtime creation time only."
  2. 30 tool updatesv0.1.0
    • First observedvnyan_api_fire
    • First observedvnyan_avatar
    • First observedvnyan_blendshape
    • First observedvnyan_bone
    • First observedvnyan_bridge_graph
    • First observedvnyan_collider
    • First observedvnyan_dict
    • First observedvnyan_effect
    • First observedvnyan_expression
    • First observedvnyan_gesture
    • First observedvnyan_graph_list
    • First observedvnyan_graph_read
    • First observedvnyan_graph_write
    • First observedvnyan_guide
    • First observedvnyan_light
    • First observedvnyan_node_schema
    • First observedvnyan_osc_param
    • First observedvnyan_param
    • First observedvnyan_pendulum
    • First observedvnyan_plugin_list
    • First observedvnyan_prop
    • First observedvnyan_settings_get
    • First observedvnyan_settings_set
    • First observedvnyan_spout
    • First observedvnyan_status
    • First observedvnyan_stretchbone
    • First observedvnyan_trigger
    • First observedvnyan_ui
    • First observedvnyan_vnyannet
    • First observedvnyan_ws_send

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct aspect of VNyan (e.g., parameters, triggers, bones, graphs). Despite some tools having multiple actions (vnyan_pendulum, vnyan_collider), descriptions clearly delineate their purposes, preventing confusion.

Naming Consistency3/5

All tools prefix with vnyan_, but naming patterns vary: some are simple nouns (vnyan_avatar, vnyan_status), others use noun_verb (vnyan_settings_get, vnyan_graph_write), and some combine nouns (vnyan_node_schema, vnyan_bridge_graph). This inconsistency can make it harder to predict tool names.

Tool Count4/5

With 30 tools, the server covers a broad range of VNyan functionality, from basic parameters to advanced graph manipulation and bridge setup. While some tools could be merged (e.g., separate REST, WebSocket, OSC tools), the count is justified by the platform's complexity.

Completeness4/5

The tool set covers nearly all major VNyan features, including avatar state, parameters, triggers, blendshapes, bones, physics (pendulum/collider/stretchbone), props, settings, expressions, gestures, graphs, and external integrations. Minor gaps like audio control or tracking details are absent, but the core surface is solid.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

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/seth-rah/vnyan-mcp'

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