Skip to main content
Glama

Opsphere — DevOps & SRE Intelligence

Get QA catalog

qa_catalog_get
Read-only

Build a normalized, evidence-backed QA catalog from automatically discovered sources in the active workspace. Optional environment and scope resolve a product/site/service only from tenant metadata; no names are hardcoded.

Input Schema

NameRequiredDescriptionDefault
scopeNoOptional site, product, application, repository, or service qualifier from the user request
refreshNo
context_idNoOptional explicit Connection Hub work context (ctx_*). Omit to use the conversation's active workspace; global Hub tools ignore it.
environmentNoTarget environment, e.g. PRE or production

Output Schema

NameRequiredDescriptionDefault
okYes
dataYes
contractVersionYes
dataSchemaVersionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed33 schema fields changed
    • changedOutput schema / properties / data / additionalProperties
      Previous value: -trueNew value: +false
    • removedOutput schema / properties / data / properties / action
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / data / properties / ambiguous
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / data / properties / cached
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / data / properties / candidates
      Removed value: -{
      -  "items": {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / data / properties / catalog
      Removed value: -{
      -  "$ref": "#/properties/data/properties/candidates/items"
      -}
    • removedOutput schema / properties / data / properties / ci
      Removed value: -{
      -  "$ref": "#/properties/data/properties/candidates"
      -}
    • removedOutput schema / properties / data / properties / commit_sha
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / data / properties / environment
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / data / properties / frameworks / $ref
      Removed value: -"#/properties/data/properties/candidates"
    • addedOutput schema / properties / data / properties / frameworks / items
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "confidence": {
      +      "$ref": "#/properties/data/properties/sources/items/properties/confidence"
      +    },
      +    "configFiles": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "sourceRepositoryId": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "name"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / frameworks / type
      Added value: +"array"
    • addedOutput schema / properties / data / properties / generatedAt
      Added value: +{
      +  "format": "date-time",
      +  "type": "string"
      +}
    • removedOutput schema / properties / data / properties / generated_at
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / data / properties / matrix
      Removed value: -{
      -  "$ref": "#/properties/data/properties/candidates"
      -}
    • removedOutput schema / properties / data / properties / policy_configured
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / data / properties / preference
      Removed value: -{
      -  "$ref": "#/properties/data/properties/candidates/items"
      -}
    • removedOutput schema / properties / data / properties / scope
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / data / properties / sections
      Removed value: -{
      -  "$ref": "#/properties/data/properties/candidates/items"
      -}
    • removedOutput schema / properties / data / properties / selected_repository_ids
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / data / properties / sources / $ref
      Removed value: -"#/properties/data/properties/candidates"
    • addedOutput schema / properties / data / properties / sources / items
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "archived": {
      +      "type": "boolean"
      +    },
      +    "commitSha": {
      +      "type": "string"
      +    },
      +    "confidence": {
      +      "enum": [
      +        "high",
      +        "medium",
      +        "low"
      +      ],
      +      "type": "string"
      +    },
      +    "provider": {
      +      "type": "string"
      +    },
      +    "ref": {
      +      "type": "string"
      +    },
      +    "repository": {
      +      "type": "string"
      +    },
      +    "repositoryId": {
      +      "type": "string"
      +    },
      +    "roles": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "selectionStatus": {
      +      "enum": [
      +        "auto_selected",
      +        "user_confirmed",
      +        "candidate",
      +        "ambiguous",
      +        "rejected",
      +        "ignored",
      +        "stale"
      +      ],
      +      "type": "string"
      +    },
      +    "webUrl": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "provider",
      +    "repositoryId",
      +    "repository"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / sources / type
      Added value: +"array"
    • removedOutput schema / properties / data / properties / suites / $ref
      Removed value: -"#/properties/data/properties/candidates"
    • addedOutput schema / properties / data / properties / suites / items
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "category": {
      +      "type": "string"
      +    },
      +    "command": {
      +      "type": "string"
      +    },
      +    "confidence": {
      +      "$ref": "#/properties/data/properties/sources/items/properties/confidence"
      +    },
      +    "evidenceRefs": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "commitSha": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "type": "string"
      +          },
      +          "line": {
      +            "type": "integer"
      +          },
      +          "path": {
      +            "type": "string"
      +          },
      +          "repositoryId": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "repositoryId",
      +          "commitSha",
      +          "path",
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "inferred": {
      +      "type": "boolean"
      +    },
      +    "label": {
      +      "type": "string"
      +    },
      +    "sourceRepositoryId": {
      +      "type": "string"
      +    },
      +    "workflow": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "sourceRepositoryId",
      +    "label",
      +    "category",
      +    "inferred",
      +    "confidence",
      +    "evidenceRefs"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / suites / type
      Added value: +"array"
    • removedOutput schema / properties / data / properties / tenant_id
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / data / properties / truncated
      Added value: +{
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / data / properties / verdict
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / data / properties / workflows
      Removed value: -{
      -  "$ref": "#/properties/data/properties/candidates"
      -}
    • addedOutput schema / properties / data / required
      Added value: +[
      +  "generatedAt",
      +  "gaps",
      +  "warnings",
      +  "sources",
      +  "frameworks",
      +  "suites",
      +  "partial",
      +  "truncated"
      +]
    • addedOutput schema / properties / dataSchemaVersion
      Added value: +{
      +  "const": 2,
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "contractVersion",
      -  "ok",
      -  "data"
      -]New value: +[
      +  "contractVersion",
      +  "dataSchemaVersion",
      +  "ok",
      +  "data"
      +]
  2. First observed

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real context that scope/environment are resolved only from tenant metadata and nothing is hardcoded, but it leaves an ambiguity that matters: 'Build' implies work and possibly a scan, and the description never says whether refresh=true or the catalog build triggers expensive discovery or mutates any state.

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?

Two dense sentences with the deliverable front-loaded and no filler. The closing 'no names are hardcoded' clause is defensively phrased but does useful work by warning the agent off inventing scope names.

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 values needn't be described, and annotations cover safety. What remains missing for a four-parameter, zero-required tool is the meaning of refresh, whether calling it performs discovery, and how it sequences with qa_sources_discover and qa_release_snapshot.

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 75%, so three of four parameters are already documented, and the description mostly restates scope and environment resolution rather than adding syntax or constraints. The undocumented 'refresh' flag, the parameter most likely to change agent behavior, is explained in neither the schema nor the description.

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 concrete output artifact (a normalized, evidence-backed QA catalog) and its input basis (automatically discovered sources in the active workspace). This is a specific verb+resource, though the 'Build' framing sits oddly against the tool's 'get' name and it never explicitly distinguishes itself from siblings like qa_sources_discover or qa_release_snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no named alternatives among the four qa_* siblings. An agent must infer that this runs after qa_sources_discover and before qa_release_snapshot purely from the description's wording, which is not guidance.

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