Skip to main content
Glama

compare_services

Read-onlyIdempotent

Compare up to four services while retaining query, caller capabilities and constraints. Supply query without sites to discover alternatives. Ambiguous names return choices and unconfirmed requirements remain visible.

Input Schema

NameRequiredDescriptionDefault
taskNo
viewNoconnect
queryNo
sitesNo
constraintsNo
caller_profileNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / caller_profile / properties / provider_access / items / properties / entitlement
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "available": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +    },
      +    "checked_at": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +    },
      +    "detail": {
      +      "maxLength": 300,
      +      "type": "string"
      +    },
      +    "evidence_ref": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +    },
      +    "expires_at": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +    },
      +    "status": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / caller_profile / properties / provider_access / items / properties / network
      Added value: +{
      +  "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime"
      +}
  2. Changed3 schema fields changed
    • removedInput schema / properties / caller_profile / description
      Removed value: -"Basic caller capabilities. Use the full catalogue for scoped provider-access proofs and resume checks."
    • addedInput schema / properties / caller_profile / properties / provider_access
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "account_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "billing": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "available": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +          },
      +          "checked_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +          },
      +          "evidence_ref": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +          },
      +          "expires_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +          },
      +          "status": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +          },
      +          "usage_included": {
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "configuration": {
      +        "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime"
      +      },
      +      "credentials": {
      +        "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime"
      +      },
      +      "environment": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "operation_ids": {
      +        "default": [],
      +        "items": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 30,
      +        "type": "array"
      +      },
      +      "path_id": {
      +        "maxLength": 150,
      +        "minLength": 3,
      +        "type": "string"
      +      },
      +      "path_revision": {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      "permissions": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "available": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +          },
      +          "checked_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +          },
      +          "evidence_ref": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +          },
      +          "expires_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +          },
      +          "scopes": {
      +            "default": [],
      +            "items": {
      +              "maxLength": 200,
      +              "type": "string"
      +            },
      +            "maxItems": 50,
      +            "type": "array"
      +          },
      +          "status": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "runtime": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "available": {
      +            "type": "boolean"
      +          },
      +          "checked_at": {
      +            "format": "date-time",
      +            "type": "string"
      +          },
      +          "evidence_ref": {
      +            "maxLength": 120,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "expires_at": {
      +            "format": "date-time",
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "unknown",
      +              "reported",
      +              "verified",
      +              "blocked"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "runtime_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "spending": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "allow_recurring": {
      +            "type": "boolean"
      +          },
      +          "available": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +          },
      +          "checked_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +          },
      +          "currency": {
      +            "maxLength": 3,
      +            "minLength": 3,
      +            "type": "string"
      +          },
      +          "evidence_ref": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +          },
      +          "expires_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +          },
      +          "limit": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "status": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "path_id",
      +      "path_revision"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / caller_profile / properties / setup_progress
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "account_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "checked_at": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "environment": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "evidence_ref": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "expires_at": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "operation_ids": {
      +        "default": [],
      +        "items": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 30,
      +        "type": "array"
      +      },
      +      "path_id": {
      +        "maxLength": 150,
      +        "minLength": 3,
      +        "type": "string"
      +      },
      +      "path_revision": {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      "runtime_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "reported",
      +          "verified",
      +          "blocked",
      +          "in_progress"
      +        ],
      +        "type": "string"
      +      },
      +      "step_id": {
      +        "maxLength": 100,
      +        "minLength": 2,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path_id",
      +      "path_revision",
      +      "step_id",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 40,
      +  "type": "array"
      +}
  3. First observed

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful output behavior context — ambiguous names return choices, unconfirmed requirements stay visible — but says nothing about result size, latency, or how the four-service cap is enforced.

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?

Three short sentences with no filler, and the core capability plus its four-service bound is front-loaded. The phrasing is dense but every clause carries information.

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 six parameters, heavy nesting, and no output schema, the description is thin. It omits parameter semantics, default behavior, and any notion of the return shape beyond ambiguity handling, leaving the agent under-informed about how to construct a valid comparison request.

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 six parameters, several deeply nested with many enums. The description only gestures at query, sites, constraints, and caller capabilities; it never explains view (full vs connect), task, or any constraint dimension such as effects, access, or qualification, so it does not compensate for the coverage gap.

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 states a specific verb and resource ("Compare up to four services") and pins the hard limit of four, which an agent cannot infer from the schema alone. It distinguishes this from single-service inspection tools like inspect_site, though it never names a sibling explicitly.

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?

"Supply query without sites to discover alternatives" gives one concrete usage pattern (discovery mode) and implies the alternative (compare a known set of sites). However, it never states when to use compare_services versus search_sites, browse_catalogue, or inspect_site, leaving the routing decision 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.

Resources