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: Supported local production computations only. External agent execution and money movement are unavailable. Acceptance inputs remain labeled synthetic. 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.

Input Schema

TableJSON 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?

Adds substantial behavior beyond the annotations: paid x402 terms, 10 free signed-wallet calls per rolling 30 days, no granted authority, never supplies server credentials, and that acceptance inputs stay labeled synthetic. Annotations already cover the destructive/openWorld/idempotency profile, so this is genuinely additive context.

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

Conciseness2/5

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

The description is a dense wall of semicolon-joined clauses that front-loads billing rather than the action, forcing the agent to dig through payment, boundary, and credential text before reaching what the tool actually does. Sentences are run-on and repeat boilerplate ('grants no authority', 'never supplies server credentials').

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?

Annotations cover the safety profile and a contract URL is given for exact schemas, and the description does hint at returned comparisons. But with no output schema and zero parameter documentation for a complex nested case structure, an agent still lacks what it needs to construct `cases` or interpret results.

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% across all 5 required parameters, so the description must compensate, but it never explains `cases` (six oneOf shapes), `repeats`, `idempotency_key`, the `usage` enum values, or the fixed `mode` const. Only the passing phrase 'labeled synthetic' faintly hints at 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 and resource ('Execute supported bounded Wever computations') plus a distinguishing scope (measure runs, compare actual outputs against caller-specified expectations). However, 'bounded Wever computations' is opaque jargon and the description does little to separate this playground/harness tool from the ~19 similarly named 'rail' siblings.

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?

Gives real usage context: price (0.10 USDC per call on Base), a free tier, and explicit operating boundaries (no external agent execution, no money movement, credentials/mandates required), plus a pointer to /api/operations-contract. But it never says when to pick this tool over a sibling rail tool, so routing is left to inference.

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.