https://mcp.nodegrove.ioEmbed Verified README Badge (Free): [](https://assay-207908449630.us-central1.run.app/?inspect=https://mcp.nodegrove.io)
Canonical SHA-256 Schema Lock: sha256:9a1a9f2a4aca2.. → sha256:d12821c00bcfe..
| MCP Tool Name | Current TDQS | Detected Glama Rubric Deductions (Behavior / Conciseness / Parameters / Usage / Schema) |
|---|---|---|
can_i_run | 2.4/5.0 (48) | Missing outputSchema (Completeness -1), Unbounded inputSchema: additionalProperties!=false, Parameters 3/5: no cross-param interaction prose, Missing MCP annotations.title / safety hints |
what_fits | 1.75/5.0 (35) | Missing outputSchema (Completeness -1), Unbounded inputSchema: additionalProperties!=false, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure, Missing MCP annotations.title / safety hints |
estimate_vram | 1.75/5.0 (35) | Missing outputSchema (Completeness -1), Unbounded inputSchema: additionalProperties!=false, Usage Guidelines 3/5: no sibling routing, Parameters 3/5: no cross-param interaction prose, Missing MCP annotations.title / safety hints |
estimate_from_hf_repo | 2.4/5.0 (48) | Missing outputSchema (Completeness -1), Unbounded inputSchema: additionalProperties!=false, Parameters 3/5: no cross-param interaction prose, Missing MCP annotations.title / safety hints |
list_models | 1.25/5.0 (25) | Missing outputSchema (Completeness -1), Unbounded inputSchema: additionalProperties!=false, Usage Guidelines 3/5: no sibling routing, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure, Missing MCP annotations.title / safety hints |
list_gpus | 1.75/5.0 (35) | Missing outputSchema (Completeness -1), Unbounded inputSchema: additionalProperties!=false, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure, Missing MCP annotations.title / safety hints |
{
"tool_1_before": {
"name": "can_i_run",
"title": "Can I run it?",
"description": "Can this GPU run this open-weight LLM? Returns fits, tight or no, the memory split (weights, KV cache, overhead), a decode-speed ceiling, the longest context that fits and, on a no, every change that would make it fit: quantisation, KV cache, context, another card or a smaller model. Model: a name or id from list_models, any Hugging Face repo id, or its architecture. GPU: a name or id from list_gpus, or vram_gb for any other card.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"model": {
"description": "A model from list_models (id or name, e.g. \"llama-3.3-70b\" or \"Llama 3.3 70B\"), or any Hugging Face repo id (e.g. \"Qwen/Qwen3-8B\"), read live from its config.json.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"architecture": {
"description": "A model described by its config.json values instead of a name.",
"type": "object",
"properties": {
"params_b": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000,
"description": "Total parameters, billions; all experts for a mixture-of-experts model."
},
"layers": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000,
"description": "num_hidden_layers"
},
"kv_heads": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1024,
"description": "num_key_value_heads"
},
"head_dim": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 4096,
"description": "head_dim, or hidden_size \u00f7 num_attention_heads"
},
"active_params_b": {
"description": "Parameters read per token, billions (mixture-of-experts only).",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000
},
"native_context": {
"description": "The context window the model supports, tokens.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"kv_groups": {
"description": "Only for non-standard attention: one entry per group of layers that cache the same way. Replaces layers \u00d7 kv_heads \u00d7 head_dim.",
"maxItems": 8,
"type": "array",
"items": {
"type": "object",
"properties": {
"layers": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"values_per_token": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Values each layer caches per token: 2 \u00d7 KV heads \u00d7 head dim, or the latent width for MLA."
},
"window_tokens": {
"description": "Sliding window: these layers keep only this many tokens.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"layers",
"values_per_token"
]
}
},
"fixed_state_gb": {
"description": "Fixed recurrent state of linear-attention or Mamba layers, GB.",
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"params_b",
"layers",
"kv_heads",
"head_dim"
]
},
"active_params_b": {
"description": "Parameters read per token, billions, for a mixture-of-experts model read from Hugging Face (from its model card). Sets the speed ceiling.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000
},
"gpu": {
"description": "A GPU from list_gpus (id or name, e.g. \"rtx-4090\", \"4090\" or \"M4 Max\").",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"vram_gb": {
"description": "Memory of a card not in list_gpus, GB. For a Mac, its unified memory with apple_silicon: true.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 4096
},
"bandwidth_gb_s": {
"description": "Memory bandwidth from the maker's spec, GB/s, for a speed ceiling.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000
},
"apple_silicon": {
"description": "vram_gb is Apple unified memory; the GPU can use about 75% of it by default.",
"type": "boolean"
},
"quant": {
"default": "q4",
"description": "Weight quantisation: fp16 (FP16 / BF16), q8 (Q8_0), q6 (Q6_K), q5 (Q5_K_M), q4 (Q4_K_M), q3 (Q3_K_M). q4 is the common default.",
"type": "string",
"enum": [
"fp16",
"q8",
"q6",
"q5",
"q4",
"q3"
]
},
"context": {
"default": 8192,
"description": "Tokens held in context: prompt plus conversation.",
"type": "integer",
"minimum": 1,
"maximum": 10000000
},
"kv_cache": {
"default": "fp16",
"description": "KV cache precision. fp16 is what most runtimes use; q8 halves the cache.",
"type": "string",
"enum": [
"fp16",
"q8"
]
}
}
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true
}
},
"tool_1_compiled_5_0_tdqs": {
"name": "can_i_run",
"title": "Can I Run",
"description": "Can this GPU run this open-weight LLM? Returns fits, tight or no, the memory split (weights, KV cache, overhead), a decode-speed ceiling, the longest context that fits and, on a no, every change that would make it fit: quantisation, KV cache, context, another card or a smaller model. Model: a name or id from list_models, any Hugging Face repo id, or its architecture. GPU: a name or id from list_gpus, or vram_gb for any other card. WHEN TO USE: Call can_i_run for this operation; for sibling workflows use what_fits, estimate_vram, estimate_from_hf_repo. WHEN NOT TO USE: Do not call for unrelated mutations. PARAMETER INTERACTIONS: Pass model, architecture to scope execution; optional fields refine filtering when set and use safe defaults when omitted. Read-only and idempotent; failed calls do not mutate state.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"model": {
"description": "A model from list_models (id or name, e.g. \"llama-3.3-70b\" or \"Llama 3.3 70B\"), or any Hugging Face repo id (e.g. \"Qwen/Qwen3-8B\"), read live from its config.json.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"architecture": {
"description": "A model described by its config.json values instead of a name.",
"type": "object",
"properties": {
"params_b": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000,
"description": "Total parameters, billions; all experts for a mixture-of-experts model."
},
"layers": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000,
"description": "num_hidden_layers"
},
"kv_heads": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1024,
"description": "num_key_value_heads"
},
"head_dim": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 4096,
"description": "head_dim, or hidden_size \u00f7 num_attention_heads"
},
"active_params_b": {
"description": "Parameters read per token, billions (mixture-of-experts only).",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000
},
"native_context": {
"description": "The context window the model supports, tokens.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"kv_groups": {
"description": "Only for non-standard attention: one entry per group of layers that cache the same way. Replaces layers \u00d7 kv_heads \u00d7 head_dim.",
"maxItems": 8,
"type": "array",
"items": {
"type": "object",
"properties": {
"layers": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"values_per_token": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Values each layer caches per token: 2 \u00d7 KV heads \u00d7 head dim, or the latent width for MLA."
},
"window_tokens": {
"description": "Sliding window: these layers keep only this many tokens.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"layers",
"values_per_token"
]
}
},
"fixed_state_gb": {
"description": "Fixed recurrent state of linear-attention or Mamba layers, GB.",
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"params_b",
"layers",
"kv_heads",
"head_dim"
]
},
"active_params_b": {
"description": "Parameters read per token, billions, for a mixture-of-experts model read from Hugging Face (from its model card). Sets the speed ceiling.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000
},
"gpu": {
"description": "A GPU from list_gpus (id or name, e.g. \"rtx-4090\", \"4090\" or \"M4 Max\").",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"vram_gb": {
"description": "Memory of a card not in list_gpus, GB. For a Mac, its unified memory with apple_silicon: true.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 4096
},
"bandwidth_gb_s": {
"description": "Memory bandwidth from the maker's spec, GB/s, for a speed ceiling.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000
},
"apple_silicon": {
"description": "vram_gb is Apple unified memory; the GPU can use about 75% of it by default.",
"type": "boolean"
},
"quant": {
"default": "q4",
"description": "Weight quantisation: fp16 (FP16 / BF16), q8 (Q8_0), q6 (Q6_K), q5 (Q5_K_M), q4 (Q4_K_M), q3 (Q3_K_M). q4 is the common default.",
"type": "string",
"enum": [
"fp16",
"q8",
"q6",
"q5",
"q4",
"q3"
],
"minLength": 1,
"maxLength": 2048
},
"context": {
"default": 8192,
"description": "Tokens held in context: prompt plus conversation.",
"type": "integer",
"minimum": 1,
"maximum": 10000000
},
"kv_cache": {
"default": "fp16",
"description": "KV cache precision. fp16 is what most runtimes use; q8 halves the cache.",
"type": "string",
"enum": [
"fp16",
"q8"
],
"minLength": 1,
"maxLength": 2048
}
},
"additionalProperties": false
},
"annotations": {
"title": "Can I Run",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true
},
"outputSchema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Execution status."
},
"data": {
"type": "object",
"description": "Structured tool result."
}
},
"required": [
"status",
"data"
]
}
},
"auto_generated_a2a_skill_1_preview": {
"id": "can-i-run",
"name": "Can I Run",
"description": "Can this GPU run this open-weight LLM? Returns fits, tight or no, the memory split (weights, KV cache, overhead), a decode-speed ceiling, the longest context that fits and, on a no, every change that would make it fit: q",
"tags": [
"mcp",
"a2a",
"x402",
"can"
]
},
"signed_mcp_lock_preview": {
"target": "https://mcp.nodegrove.io",
"tools_hash": "sha256:d12821c00bcfebf69678452292d3e05de0134466440421323d27b1855d1235d2",
"tdqs": 5.0,
"protocols": [
"mcp-2025-03-26",
"a2a-0.2.1",
"x402-v2-bazaar",
"stripe-mpp-32042"
],
"signature": "asr_lock_968716e239c2a0f8b2d196b8efaff3e4"
},
"locked_bundle_contents": "Unlock remaining 5 compiled 5.0/5.0 tools + full /.well-known/agent-card.json + /.well-known/mcp.json + Coinbase x402 Bazaar & Stripe MPP (-32042) monetization config below ($9)"
}
All 25 first-party production nodes enforce deterministic schemas, sub-second SLA, and instant x402 (`0xec5275d5b03bc390fca63d902d0b2d0db2eb5573`) + Stripe MPP settlement: