Skip to main content
Glama

Rail Playground

wever_rail-playground
Destructive

Paid URL: 0.10 USDC per call on Base; 10 signed-wallet free calls shared over rolling 30 days. Read the backend 402 body for x402 terms. Execute supported bounded Wever computations, measure their runs and compare actual outputs and caller-specified expectations. Operating boundary: Choose a supported Wever computation, supply input and expected results, then compare the actual output and timing. Sample acceptance inputs stay labeled as tests. POST /api/rail-playground. Existing product credentials, signed mandates, and single-use action grants remain required where applicable. This adapter grants no authority and never supplies server credentials. Wallet-authenticated bounded operations service with durable records. See /api/operations-contract for exact schemas, verified scope and unavailable capabilities.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "idempotency_key": "<idempotency_key>",
      "usage": "<usage>",
      "mode": "<mode>",
      "repeats": "<repeats>",
      "cases": "<cases>"
    },
    "name": "wever_rail-playground"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeYes
casesYes
usageYes
repeatsYes
idempotency_keyYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changed
    • changedInput schema / additionalProperties
      Previous value: -trueNew value: +false
    • removedInput schema / description
      Removed value: -"The existing product POST body. Supply its documented mode, arguments, and required signed authority or grant. The product validates its full contract."
    • removedInput schema / maxProperties
      Removed value: -64
    • removedInput schema / minProperties
      Removed value: -1
    • addedInput schema / properties / cases
      Added value: +{
      +  "items": {
      +    "oneOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assertions": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "equals": {
      +                  "anyOf": [
      +                    {
      +                      "maxLength": 1024,
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "number"
      +                    },
      +                    {
      +                      "type": "boolean"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "pointer": {
      +                  "maxLength": 256,
      +                  "pattern": "^(?:/(?:[^~/]|~[01])*)*(?![\\s\\S])",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "pointer",
      +                "equals"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 16,
      +            "minItems": 0,
      +            "type": "array"
      +          },
      +          "case_id": {
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}(?![\\s\\S])",
      +            "type": "string"
      +          },
      +          "expected_sha256": {
      +            "anyOf": [
      +              {
      +                "pattern": "^[a-f0-9]{64}(?![\\s\\S])",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "input": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "available_evidence": {
      +                "items": {
      +                  "description": "ASCII only, at most 96 bytes before trimming; cannot be blank. Normalized duplicates are rejected.",
      +                  "maxLength": 96,
      +                  "minLength": 1,
      +                  "pattern": "^[A-Za-z0-9_.:/ -]+(?![\\s\\S])",
      +                  "type": "string"
      +                },
      +                "maxItems": 16,
      +                "minItems": 0,
      +                "type": "array"
      +              },
      +              "expected_evidence": {
      +                "items": {
      +                  "description": "ASCII only, at most 96 bytes before trimming; cannot be blank. Normalized duplicates are rejected.",
      +                  "maxLength": 96,
      +                  "minLength": 1,
      +                  "pattern": "^[A-Za-z0-9_.:/ -]+(?![\\s\\S])",
      +                  "type": "string"
      +                },
      +                "maxItems": 16,
      +                "minItems": 1,
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "available_evidence",
      +              "expected_evidence"
      +            ],
      +            "type": "object"
      +          },
      +          "service_key": {
      +            "const": "diligenceops-paid-run"
      +          }
      +        },
      +        "required": [
      +          "case_id",
      +          "service_key",
      +          "input",
      +          "expected_sha256",
      +          "assertions"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assertions": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "equals": {
      +                  "anyOf": [
      +                    {
      +                      "maxLength": 1024,
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "number"
      +                    },
      +                    {
      +                      "type": "boolean"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "pointer": {
      +                  "maxLength": 256,
      +                  "pattern": "^(?:/(?:[^~/]|~[01])*)*(?![\\s\\S])",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "pointer",
      +                "equals"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 16,
      +            "minItems": 0,
      +            "type": "array"
      +          },
      +          "case_id": {
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}(?![\\s\\S])",
      +            "type": "string"
      +          },
      +          "expected_sha256": {
      +            "anyOf": [
      +              {
      +                "pattern": "^[a-f0-9]{64}(?![\\s\\S])",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "input": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "tools": {
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annotations": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "destructiveHint": {
      +                          "type": "boolean"
      +                        },
      +                        "openWorldHint": {
      +                          "type": "boolean"
      +                        },
      +                        "readOnlyHint": {
      +                          "type": "boolean"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "description": {
      +                      "description": "At most 256 UTF-8 bytes, well-formed text; no unsupported control characters.",
      +                      "maxLength": 256,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "name": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9_.:-]+(?![\\s\\S])",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "name"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 16,
      +                "minItems": 1,
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "tools"
      +            ],
      +            "type": "object"
      +          },
      +          "service_key": {
      +            "const": "mcp-diligence-rail"
      +          }
      +        },
      +        "required": [
      +          "case_id",
      +          "service_key",
      +          "input",
      +          "expected_sha256",
      +          "assertions"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assertions": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "equals": {
      +                  "anyOf": [
      +                    {
      +                      "maxLength": 1024,
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "number"
      +                    },
      +                    {
      +                      "type": "boolean"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "pointer": {
      +                  "maxLength": 256,
      +                  "pattern": "^(?:/(?:[^~/]|~[01])*)*(?![\\s\\S])",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "pointer",
      +                "equals"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 16,
      +            "minItems": 0,
      +            "type": "array"
      +          },
      +          "case_id": {
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}(?![\\s\\S])",
      +            "type": "string"
      +          },
      +          "expected_sha256": {
      +            "anyOf": [
      +              {
      +                "pattern": "^[a-f0-9]{64}(?![\\s\\S])",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "input": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "as_of": {
      +                "description": "A valid UTC calendar timestamp with whole seconds, supplied by the caller.",
      +                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z(?![\\s\\S])",
      +                "type": "string"
      +              },
      +              "queues": {
      +                "description": "Unique queue names. Empty queues must have a null or zero oldest age.",
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "count": {
      +                      "maximum": 2147483647,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "oldest_age_seconds": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 2147483647,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "queue": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,63}(?![\\s\\S])",
      +                      "type": "string"
      +                    },
      +                    "state": {
      +                      "enum": [
      +                        "active",
      +                        "retained"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "queue",
      +                    "state",
      +                    "count",
      +                    "oldest_age_seconds"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 16,
      +                "type": "array"
      +              },
      +              "services": {
      +                "description": "Unique service_id values.",
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "service_id": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,63}(?![\\s\\S])",
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "enum": [
      +                        "ready",
      +                        "unavailable",
      +                        "degraded"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "service_id",
      +                    "status"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 8,
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "as_of",
      +              "services",
      +              "queues"
      +            ],
      +            "type": "object"
      +          },
      +          "service_key": {
      +            "const": "agent-daily-operator-brief"
      +          }
      +        },
      +        "required": [
      +          "case_id",
      +          "service_key",
      +          "input",
      +          "expected_sha256",
      +          "assertions"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assertions": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "equals": {
      +                  "anyOf": [
      +                    {
      +                      "maxLength": 1024,
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "number"
      +                    },
      +                    {
      +                      "type": "boolean"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "pointer": {
      +                  "maxLength": 256,
      +                  "pattern": "^(?:/(?:[^~/]|~[01])*)*(?![\\s\\S])",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "pointer",
      +                "equals"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 16,
      +            "minItems": 0,
      +            "type": "array"
      +          },
      +          "case_id": {
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}(?![\\s\\S])",
      +            "type": "string"
      +          },
      +          "expected_sha256": {
      +            "anyOf": [
      +              {
      +                "pattern": "^[a-f0-9]{64}(?![\\s\\S])",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "input": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "available_evidence": {
      +                "items": {
      +                  "description": "ASCII only, at most 96 bytes before trimming; cannot be blank. Normalized duplicates are rejected.",
      +                  "maxLength": 96,
      +                  "minLength": 1,
      +                  "pattern": "^[A-Za-z0-9_.:/ -]+(?![\\s\\S])",
      +                  "type": "string"
      +                },
      +                "maxItems": 16,
      +                "minItems": 0,
      +                "type": "array"
      +              },
      +              "expected_evidence": {
      +                "items": {
      +                  "description": "ASCII only, at most 96 bytes before trimming; cannot be blank. Normalized duplicates are rejected.",
      +                  "maxLength": 96,
      +                  "minLength": 1,
      +                  "pattern": "^[A-Za-z0-9_.:/ -]+(?![\\s\\S])",
      +                  "type": "string"
      +                },
      +                "maxItems": 16,
      +                "minItems": 1,
      +                "type": "array"
      +              },
      +              "recipient_id": {
      +                "maxLength": 28,
      +                "minLength": 28,
      +                "pattern": "^mbx_[a-f0-9]{24}(?![\\s\\S])",
      +                "type": "string"
      +              },
      +              "service_id": {
      +                "const": "com.weverlabs/diligenceops-inventory"
      +              }
      +            },
      +            "required": [
      +              "service_id",
      +              "recipient_id",
      +              "available_evidence",
      +              "expected_evidence"
      +            ],
      +            "type": "object"
      +          },
      +          "service_key": {
      +            "const": "agent-work-order-rail"
      +          }
      +        },
      +        "required": [
      +          "case_id",
      +          "service_key",
      +          "input",
      +          "expected_sha256",
      +          "assertions"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "maxItems": 6,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}(?![\\s\\S])",
      +  "type": "string"
      +}
    • addedInput schema / properties / mode / const
      Added value: +"run"
    • removedInput schema / properties / mode / maxLength
      Removed value: -128
    • removedInput schema / properties / mode / minLength
      Removed value: -1
    • removedInput schema / properties / mode / type
      Removed value: -"string"
    • addedInput schema / properties / repeats
      Added value: +{
      +  "maximum": 3,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / usage
      Added value: +{
      +  "enum": [
      +    "synthetic",
      +    "operational"
      +  ]
      +}
    • addedInput schema / required
      Added value: +[
      +  "idempotency_key",
      +  "usage",
      +  "mode",
      +  "repeats",
      +  "cases"
      +]
  2. First observed

TDQS

B3.2/5.0
Behavior4/5

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

Beyond the annotations, it discloses the paid terms (0.10 USDC per call on Base, 10 free calls per rolling 30 days), points to the 402 body for x402 terms, states credentials/mandates/grants are still required, and clarifies the adapter grants no authority and never supplies server credentials. That is real behavioral context an agent cannot get from the hints. It stops short of describing what the run response or durable record contains.

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

Conciseness3/5

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

Cost and free-call terms are usefully front-loaded, but the prose is dense and jargon-heavy, mixing pricing, operating boundary, auth disclaimers, and a documentation pointer in one block. Phrases like 'Wallet-authenticated bounded operations service with durable records' and the '/api/operations-contract' referral add bulk without actionable detail.

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?

For a tool with a deeply nested oneOf schema across four service variants, five required params, and no output schema, the description leaves the case-shape and result-format story untold and defers to an external contract document. An agent can grasp the cost and auth model but not how to construct a valid `cases` array or interpret the comparison result.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the parameter burden and it largely does not. It never explains the usage enum (synthetic vs. operational), the meaning of repeats (1-3) or the 6-case cap, the role of idempotency_key, or that cases select among four fixed service_key variants. Only 'measure their runs' and 'sample acceptance inputs stay labeled as tests' faintly gesture at repeats and the usage enum.

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?

States a specific verb chain (execute, measure, compare) over a specific resource (Wever computations with caller-supplied expectations), and the POST /api/rail-playground endpoint anchors it. It is distinguishable from narrower siblings like wever_diligenceops-paid-run, though 'supported bounded Wever computations' stays abstract until the reader opens the schema's service_key constants.

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 'Operating boundary' sentence gives a procedural recipe (pick a computation, supply input and expectations, compare output and timing) and mentions sample inputs staying labeled as tests. However, it never says when to choose this playground over the near-identical sibling tools (wever_diligenceops-paid-run, wever_mcp-diligence-rail, wever_agent-work-order-rail), which are actually embedded as case variants here.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.