Skip to main content
Glama

Validate Kinematic Dynamic Limits

robotics_validate_kinematic_dynamic_limits_v1
Idempotent

Problem: Accept or reject a bounded trajectory against caller kinematic limits. Input: JSON with trajectory, maximum speed, maximum acceleration. Result: typed verdict, measured metrics, candidate only when verified. Limits: Software/model evidence only; 65536 request bytes; 5 s execution.

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": {
      "schema_version": "<schema_version>",
      "request": "<request>",
      "idempotency_key": "<idempotency_key>",
      "max_total_price": "<max_total_price>"
    },
    "name": "robotics_validate_kinematic_dynamic_limits_v1"
  }
}

Input Schema

NameRequiredDescriptionDefault
requestYes
schema_versionYes
idempotency_keyYes
max_total_priceYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "capability_id": {
      -        "maxLength": 128,
      -        "minLength": 1,
      -        "pattern": "^[a-z0-9][a-z0-9._-]*$",
      -        "type": "string"
      -      },
      -      "capability_version": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "catalog_digest": {
      -        "pattern": "^[a-f0-9]{64}$",
      -        "type": "string"
      -      },
      -      "catalog_revision": {
      -        "maxLength": 128,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "commercial_state": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "duplicate": {
      -        "type": "boolean"
      -      },
      -      "job_id": {
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "payment_rail": {
      -        "const": "x402",
      -        "type": "string"
      -      },
      -      "price": {
      -        "pattern": "^(?:0|[1-9]\\d{0,13})(?:\\.\\d{1,6})?$",
      -        "type": "string"
      -      },
      -      "product": {
      -        "enum": [
      -          "wave",
      -          "quantum",
      -          "robotics"
      -        ],
      -        "type": "string"
      -      },
      -      "quote_id": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "request_hash": {
      -        "pattern": "^[a-f0-9]{64}$",
      -        "type": "string"
      -      },
      -      "request_schema_version": {
      -        "maxLength": 128,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "reservation_id": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "retrieval_token": {
      -        "pattern": "^rqm_retrieval_.*",
      -        "type": "string"
      -      },
      -      "retrieval_token_expires_in": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      },
      -      "retrieval_url": {
      -        "format": "uri",
      -        "type": "string"
      -      },
      -      "schema_version": {
      -        "const": "rqm.jobs.buyer-job-run.v1",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "queued",
      -          "running",
      -          "completed",
      -          "failed",
      -          "cancelled",
      -          "recovery"
      -        ],
      -        "type": "string"
      -      },
      -      "tariff_version": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "x402_settlement_id": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "x402_transaction_id": {
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "schema_version",
      -      "product",
      -      "capability_id",
      -      "capability_version",
      -      "request_schema_version",
      -      "catalog_revision",
      -      "catalog_digest",
      -      "request_hash",
      -      "job_id",
      -      "status",
      -      "quote_id",
      -      "reservation_id",
      -      "commercial_state",
      -      "payment_rail",
      -      "price",
      -      "tariff_version",
      -      "x402_settlement_id",
      -      "x402_transaction_id",
      -      "retrieval_token",
      -      "retrieval_token_expires_in",
      -      "duplicate"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "code": {
      -        "enum": [
      -          "AUTHENTICATION_REQUIRED",
      -          "MACHINE_AUTHENTICATION_FAILED",
      -          "MACHINE_AUTHORIZATION_FAILED",
      -          "ACCOUNT_CORE_UNAVAILABLE",
      -          "FEATURE_DISABLED",
      -          "QUOTE_NOT_ENTITLED",
      -          "QUOTE_IDEMPOTENCY_CONFLICT",
      -          "QUOTE_NOT_AVAILABLE",
      -          "QUOTE_REQUEST_INVALID",
      -          "QUOTE_MISMATCH",
      -          "PRICE_LIMIT_EXCEEDED",
      -          "RUNTIME_LIMIT_EXCEEDED",
      -          "ARTIFACT_PREFERENCE_UNAVAILABLE",
      -          "INSUFFICIENT_BALANCE",
      -          "RESERVATION_FAILED",
      -          "PRODUCT_REJECTED",
      -          "PRODUCT_UNAVAILABLE",
      -          "JOB_NOT_FOUND",
      -          "JOB_NOT_READY",
      -          "JOB_ACCESS_DENIED",
      -          "SETTLEMENT_FAILED",
      -          "FUNDING_UNAVAILABLE",
      -          "FUNDING_FAILED"
      -        ],
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "retryable": {
      -        "type": "boolean"
      -      },
      -      "schema_version": {
      -        "const": "rqm.jobs.error.v1",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "schema_version",
      -      "code",
      -      "message",
      -      "retryable"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "capability_id": {
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "pattern": "^[a-z0-9][a-z0-9._-]*$",
      +        "type": "string"
      +      },
      +      "capability_version": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "catalog_digest": {
      +        "pattern": "^[a-f0-9]{64}$",
      +        "type": "string"
      +      },
      +      "catalog_revision": {
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "commercial_state": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "duplicate": {
      +        "type": "boolean"
      +      },
      +      "job_id": {
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "payment_rail": {
      +        "const": "x402",
      +        "type": "string"
      +      },
      +      "price": {
      +        "pattern": "^(?:0|[1-9]\\d{0,13})(?:\\.\\d{1,6})?$",
      +        "type": "string"
      +      },
      +      "product": {
      +        "enum": [
      +          "wave",
      +          "quantum",
      +          "robotics"
      +        ],
      +        "type": "string"
      +      },
      +      "quote_id": {
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      "request_hash": {
      +        "pattern": "^[a-f0-9]{64}$",
      +        "type": "string"
      +      },
      +      "request_schema_version": {
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "reservation_id": {
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      "retrieval_token": {
      +        "format": "starts_with",
      +        "pattern": "^rqm_retrieval_.*",
      +        "type": "string"
      +      },
      +      "retrieval_token_expires_in": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      },
      +      "retrieval_url": {
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "schema_version": {
      +        "const": "rqm.jobs.buyer-job-run.v1",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "queued",
      +          "running",
      +          "completed",
      +          "failed",
      +          "cancelled",
      +          "recovery"
      +        ],
      +        "type": "string"
      +      },
      +      "tariff_version": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "x402_settlement_id": {
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      "x402_transaction_id": {
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "schema_version",
      +      "product",
      +      "capability_id",
      +      "capability_version",
      +      "request_schema_version",
      +      "catalog_revision",
      +      "catalog_digest",
      +      "request_hash",
      +      "job_id",
      +      "status",
      +      "quote_id",
      +      "reservation_id",
      +      "commercial_state",
      +      "payment_rail",
      +      "price",
      +      "tariff_version",
      +      "x402_settlement_id",
      +      "x402_transaction_id",
      +      "retrieval_token",
      +      "retrieval_token_expires_in",
      +      "duplicate"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "enum": [
      +          "AUTHENTICATION_REQUIRED",
      +          "MACHINE_AUTHENTICATION_FAILED",
      +          "MACHINE_AUTHORIZATION_FAILED",
      +          "ACCOUNT_CORE_UNAVAILABLE",
      +          "FEATURE_DISABLED",
      +          "QUOTE_NOT_ENTITLED",
      +          "QUOTE_IDEMPOTENCY_CONFLICT",
      +          "QUOTE_NOT_AVAILABLE",
      +          "QUOTE_REQUEST_INVALID",
      +          "QUOTE_MISMATCH",
      +          "PRICE_LIMIT_EXCEEDED",
      +          "RUNTIME_LIMIT_EXCEEDED",
      +          "ARTIFACT_PREFERENCE_UNAVAILABLE",
      +          "INSUFFICIENT_BALANCE",
      +          "RESERVATION_FAILED",
      +          "PRODUCT_REJECTED",
      +          "PRODUCT_UNAVAILABLE",
      +          "JOB_NOT_FOUND",
      +          "JOB_NOT_READY",
      +          "JOB_ACCESS_DENIED",
      +          "SETTLEMENT_FAILED",
      +          "FUNDING_UNAVAILABLE",
      +          "FUNDING_FAILED"
      +        ],
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "retryable": {
      +        "type": "boolean"
      +      },
      +      "schema_version": {
      +        "const": "rqm.jobs.error.v1",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "schema_version",
      +      "code",
      +      "message",
      +      "retryable"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations, the description discloses concrete operating constraints: 65536 request-byte cap, 5 s execution window, and that evidence is 'software/model only'. It also signals the tool returns a verdict plus measured metrics rather than silently mutating state, which is useful context given readOnlyHint=false.

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 Problem/Input/Result/Limits layout is front-loaded and every clause carries information; nothing is padded. Some terseness (fragments like 'typed verdict, measured metrics') slightly reduces readability but not efficiency.

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?

An output schema exists, so return-value explanation is not required, and the description covers evidence type and resource limits well. It is still incomplete for a tool whose required inputs include an idempotency key and a fixed price field that the agent must understand to call it correctly.

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 0% and the request body is a free-form object, so the description's 'JSON with trajectory, maximum speed, maximum acceleration' genuinely compensates for the opaque payload. It does not, however, explain the required schema_version, idempotency_key, or the max_total_price const (0.010000), which are non-obvious billing/protocol parameters.

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 first sentence names a specific verb (accept or reject) and a specific resource (bounded trajectory vs. caller kinematic limits), which separates it from siblings like validate_trajectory_timing or validate_closed_loop_stability. It stops short of explicitly naming which sibling to pick, but the scope is unambiguous.

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 'Problem:' framing implies when the tool applies (checking a trajectory against speed/acceleration limits) and 'candidate only when verified' hints at the outcome contract. However there is no explicit when-not guidance and no routing to alternative validation tools in the large robotics sibling set, leaving the agent to infer the choice.

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.

Resources