Skip to main content
Glama

Get one scenario in full

pc_get_scenario
Read-only

Retrieve the complete verified record for a Partner Center REST operation by scenario ID: method, path, auth, headers, request/response shapes, code examples, and gotchas.

Instructions

Return the complete verified record for one Partner Center REST operation: method, path, auth type, required headers, request and response shapes, per-field notes, working curl/C#/TypeScript examples, gotchas, and the doc link. Use this once you know the scenario id — get one from pc_list_scenarios, a pc_plan_* workflow, or pc_lookup_error. For runnable code in a specific language prefer pc_generate_call; for a request body skeleton prefer pc_build_request. Read-only. Offline and deterministic unless enrich is set, which adds a live Microsoft Learn fetch. An unknown id returns ok:false with suggestions listing close or valid ids.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesExact scenario id in kebab-case, e.g. "create-cart", "get-invoices", "list-customer-subscriptions". Case-sensitive; call pc_list_scenarios to discover valid ids. A near miss comes back as `suggestions` rather than a guess.
enrichNoSet true to also fetch live Microsoft Learn excerpts for this operation and attach them as `liveDocs`. Defaults to false. Turning it on adds a network round-trip and makes the result non-deterministic; leave it off unless the bundled record is not enough.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYesTrue when the call succeeded and `data` is populated; false when `error` explains why not.
dataNoThe result payload. Present only when `ok` is true.
errorNoHuman-readable reason the call failed. Present only when `ok` is false.
suggestionsNoValid values to retry with, returned alongside `error` when the requested identifier was not found.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.18.0
    • changedOutput schema / properties / data / properties / api / enum
      Previous value: -[
      -  "partner-center",
      -  "graph",
      -  "pricing-and-referrals"
      -]New value: +[
      +  "partner-center",
      +  "graph",
      +  "pricing-and-referrals",
      +  "customer-service-admin"
      +]
    • addedOutput schema / properties / data / properties / exampleResponse
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "A real response taken from the operation's own doc page, so field names and nesting can be read off rather than guessed. Absent when the page publishes no example, which is normal for operations that return no body.",
      +  "properties": {
      +    "body": {
      +      "description": "The response body exactly as Microsoft Learn publishes it."
      +    },
      +    "httpStatus": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Status the example response carried."
      +    }
      +  },
      +  "required": [
      +    "httpStatus",
      +    "body"
      +  ],
      +  "type": "object"
      +}
  2. Changed4 schema fields changedv0.13.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / enrich / description
      Added value: +"Set true to also fetch live Microsoft Learn excerpts for this operation and attach them as `liveDocs`. Defaults to false. Turning it on adds a network round-trip and makes the result non-deterministic; leave it off unless the bundled record is not enough."
    • addedInput schema / properties / id / description
      Added value: +"Exact scenario id in kebab-case, e.g. \"create-cart\", \"get-invoices\", \"list-customer-subscriptions\". Case-sensitive; call pc_list_scenarios to discover valid ids. A near miss comes back as `suggestions` rather than a guess."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {
      +      "additionalProperties": false,
      +      "description": "The result payload. Present only when `ok` is true.",
      +      "properties": {
      +        "api": {
      +          "description": "Which API surface hosts this operation. Absent means \"partner-center\". GDAP and reconciliation-v2 operations are \"graph\" and need a different token audience.",
      +          "enum": [
      +            "partner-center",
      +            "graph",
      +            "pricing-and-referrals"
      +          ],
      +          "type": "string"
      +        },
      +        "area": {
      +          "description": "Functional area of the Partner Center API this operation belongs to.",
      +          "enum": [
      +            "customers",
      +            "subscriptions",
      +            "orders",
      +            "licenses",
      +            "invoicing",
      +            "profiles",
      +            "auth",
      +            "catalog",
      +            "utilities",
      +            "audit",
      +            "support",
      +            "security",
      +            "analytics",
      +            "devices",
      +            "referrals"
      +          ],
      +          "type": "string"
      +        },
      +        "authType": {
      +          "description": "Token flavour the operation requires. \"app+user\" needs the Secure Application Model refresh-token flow.",
      +          "enum": [
      +            "app-only",
      +            "app+user"
      +          ],
      +          "type": "string"
      +        },
      +        "docUrl": {
      +          "description": "Microsoft Learn page documenting this operation.",
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "examples": {
      +          "additionalProperties": false,
      +          "description": "Ready-to-adapt request examples per language.",
      +          "properties": {
      +            "csharp": {
      +              "description": "C# HttpClient snippet.",
      +              "type": "string"
      +            },
      +            "curl": {
      +              "description": "Runnable curl invocation.",
      +              "type": "string"
      +            },
      +            "typescript": {
      +              "description": "TypeScript fetch snippet.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "curl",
      +            "csharp",
      +            "typescript"
      +          ],
      +          "type": "object"
      +        },
      +        "gotchas": {
      +          "description": "Pitfalls that commonly break this call in practice, most consequential first.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "headers": {
      +          "description": "Request headers this operation expects.",
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "name": {
      +                "description": "Header name.",
      +                "type": "string"
      +              },
      +              "note": {
      +                "description": "What to put in the header and why.",
      +                "type": "string"
      +              },
      +              "required": {
      +                "description": "Whether the call fails without it.",
      +                "type": "boolean"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "required"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "id": {
      +          "description": "Stable kebab-case identifier, e.g. \"create-cart\". Pass this to pc_get_scenario, pc_generate_call, or pc_build_request.",
      +          "type": "string"
      +        },
      +        "lastVerified": {
      +          "description": "YYYY-MM-DD on which this entry was last checked against the live documentation.",
      +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +          "type": "string"
      +        },
      +        "liveDocs": {
      +          "description": "Live documentation excerpts. Present only when `enrich` was true.",
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "text": {
      +                "description": "The excerpted passage.",
      +                "type": "string"
      +              },
      +              "title": {
      +                "description": "Title of the source documentation page.",
      +                "type": "string"
      +              },
      +              "url": {
      +                "description": "Canonical Microsoft Learn URL for the excerpt.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "title",
      +              "url",
      +              "text"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "liveNote": {
      +          "description": "Explains a degraded live fetch. Present only when `enrich` was true.",
      +          "type": "string"
      +        },
      +        "method": {
      +          "description": "HTTP verb for the call.",
      +          "enum": [
      +            "GET",
      +            "POST",
      +            "PUT",
      +            "PATCH",
      +            "DELETE",
      +            "HEAD"
      +          ],
      +          "type": "string"
      +        },
      +        "path": {
      +          "description": "API-relative path with {placeholder} segments, e.g. \"/v1/customers/{customer-id}/subscriptions\". Resolve it against the base URL for `api`.",
      +          "type": "string"
      +        },
      +        "requestFields": {
      +          "description": "Per-field documentation for the request body, when the operation takes one.",
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "name": {
      +                "description": "Field path within the request body; \"[]\" marks an array hop, e.g. \"lineItems[].catalogItemId\".",
      +                "type": "string"
      +              },
      +              "note": {
      +                "description": "Constraints, accepted values, or gotchas for this field.",
      +                "type": "string"
      +              },
      +              "required": {
      +                "description": "Whether the request is rejected without it.",
      +                "type": "boolean"
      +              },
      +              "type": {
      +                "description": "Declared type of the field.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "type",
      +              "required"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "requestShape": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "JSON body template, or null for operations that take no body."
      +        },
      +        "responseShape": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "JSON response template, or null when the operation returns no body."
      +        },
      +        "title": {
      +          "description": "Human-readable name of the operation.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "area",
      +        "title",
      +        "method",
      +        "path",
      +        "authType",
      +        "headers",
      +        "requestShape",
      +        "responseShape",
      +        "examples",
      +        "gotchas",
      +        "docUrl",
      +        "lastVerified"
      +      ],
      +      "type": "object"
      +    },
      +    "error": {
      +      "description": "Human-readable reason the call failed. Present only when `ok` is false.",
      +      "type": "string"
      +    },
      +    "ok": {
      +      "description": "True when the call succeeded and `data` is populated; false when `error` explains why not.",
      +      "type": "boolean"
      +    },
      +    "suggestions": {
      +      "description": "Valid values to retry with, returned alongside `error` when the requested identifier was not found.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  3. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=false), the description adds substantial behavior: 'Read-only. Offline and deterministic unless `enrich` is set...' and the unknown-id behavior returning ok:false with suggestions. This goes well beyond what annotations provide and does not contradict them.

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

Conciseness5/5

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

The description is a single dense paragraph with no filler words. Every sentence contributes critical information: return contents, usage timing, alternative tools, behavioral caveats, and error handling. The structure front-loads the purpose and then supplies necessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of an output schema, the description covers all necessary contextual aspects: what the tool returns, when to use it, how to get the id, alternative tools, offline/deterministic behavior, enrich side effects, and error response shape. Nothing essential is missing.

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 100% and both parameters are already described in detail in the schema. The description reinforces the id lookup and enrich effects but does not introduce new parameter semantics beyond what the schema provides, earning the baseline score for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Return the complete verified record for one Partner Center REST operation' and enumerates the exact contents (method, path, auth type, headers, request/response shapes, examples, gotchas, doc link). It clearly differentiates from siblings like pc_list_scenarios and pc_generate_call.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool ('once you know the scenario id') and names the exact sources for the id. It also gives explicit alternatives: 'For runnable code in a specific language prefer pc_generate_call; for a request body skeleton prefer pc_build_request.'

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