io.github.tunahanaliozturk/partner-center-mcp
NPM · PARTNER-CENTER-MCP · SCANNED AUG 3
Unofficial Partner Center REST API knowledge & codegen assistant (scenarios, auth, errors).
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security86
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to tunahanaliozturk/partner-center-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability88
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 8914 tokens (~51/item across 172 items; 26 tools + 146 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · partner-center-mcp
claude mcp add tunahanaliozturk-partner-center-mcp -- npx -y partner-center-mcp
codex mcp add tunahanaliozturk-partner-center-mcp -- npx -y partner-center-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tunahanaliozturk-partner-center-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"partner-center-mcp"
],
"enabled": true
}
}
} openclaw mcp add tunahanaliozturk-partner-center-mcp --command npx --arg -y --arg partner-center-mcp
mcp_servers:
tunahanaliozturk-partner-center-mcp:
command: "npx"
args: ["-y", "partner-center-mcp"] {
"mcpServers": {
"tunahanaliozturk-partner-center-mcp": {
"command": "npx",
"args": [
"-y",
"partner-center-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +55
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Provenance: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- The attested source repository moved: tunahanaliozturk/partner-center-mcp security
- MCP protocol: unverified → pass ▲ functional
- Maintenance: unverified → pass ▲ functional
- Stability: unverified → 0.20 ▲ functional
- Dependency health: unverified → partial ▲ functional
- License: unverified → pass ▲ functional
- Schema quality: unverified → excellent ▲ functional
- Licence: MIT functional
- 1 Aug 26 +21
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Schema quality: 21 → 51 ▼ functional
- Schema quality: fair → unverified ▼ functional
- Tool coverage: 0% → 100% ▲ functional
- Schema quality: unverified → 100 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Tool coverage: 100 functional
- Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
- Package version: 0.12.0 → 0.13.0 functional
- 31 Jul 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −61
- Provenance: pass → unverified ▼ security
- Install scripts: pass → unverified ▼ security
- Known CVEs: partial → unverified ▼ security
- The attested source repository moved: tunahanaliozturk/partner-center-mcp security
- Maintenance: pass → unverified ▼ functional
- Dependency health: partial → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- License: pass → unverified ▼ functional
- Licence: MIT functional
- Package version: 0.11.0 → 0.12.0 functional
- 28 Jul 26 +37
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Provenance: unverified → pass ▲ security
- The attested source repository moved: tunahanaliozturk/partner-center-mcp security
- Maintenance: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Schema quality: unverified → fair ▲ functional
- License: unverified → pass ▲ functional
- Licence: MIT functional
- 27 Jul 26 30
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/[email protected]
Provenance verified
Ecosystem: npm · Outcome: verified
Reason: verified
- Source repo:
- tunahanaliozturk/partner-center-mcp
- Certificate issuer:
- https://token.actions.githubusercontent.com
- Certificate SAN:
- https://github.com/tunahanaliozturk/partner-center-mcp/.github/workflows/publish.yml@refs/tags/v0.13.0
- Rekor log index:
- 2309498789
- Predicate type:
- https://slsa.dev/provenance/v1
- Subject digest:
- sha512:6341bd20fd3915b55dc2e371933b4a77a3958bf6cadd543e98d1a2cac6977d2a6e6680a3a8b517ba58487094d339eb9b69fde3ce6495c62e2cc650397
- Discovery method:
- attestation_endpoint
Dependencies 94 packages
94 packages in the resolved dependency tree · 94 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
pc_auth_guidance Get authentication guidance ~240
Return how to authenticate against Partner Center for a given token flavour and national cloud: the token resource and authority to use, the ordered steps of the flow, Secure Application Model and MFA requirements, and what is deprecated. Use this when deciding or setting up how to get a token. To check whether existing code already uses a retired pattern, use pc_check_auth instead; to decode a 401/403 you already hit, use pc_decode_error. Read-only, offline, deterministic. Returns guidance only — it issues no tokens, contacts no identity provider, and handles no secrets.
| Name | Type | Req | Description |
|---|---|---|---|
| authType | string | yes | Which token flavour to describe. "app+user" is the Secure Application Model refresh-token flow required by most Partner Center operations; "app-only" is application permissions, which only a subset o… |
| cloud | string | — | Sovereign cloud whose endpoints and authority to return. Defaults to "commercial". Choose "china-21vianet" or "us-gov" only for tenants in those clouds — their authorities and feature availability di… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
| suggestions | array | — | Valid values to retry with, returned alongside `error` when the requested identifier was not found. |
No examples provided.
pc_build_request Build a ready-to-send request ~343
Assemble one Partner Center REST request as structured data: the resolved URL with your params substituted into the path placeholders, concrete headers (Bearer plus a freshly generated MS-RequestId on writes), and a request-body skeleton derived from the operation's documented fields. Use this when you want an object to send from your own client. For a language-specific code snippet use pc_generate_call instead, and to lint a request you already wrote use pc_validate_request. Read-only and offline: the request is constructed and handed back, never sent, and the Authorization header is a `<access-token>` placeholder — no credentials are read or required. Not idempotent in one respect: a random MS-RequestId is minted on each call for write operations, so reuse the returned value across retries rather than calling again. Unsupplied placeholders are reported in `missingParams` rather than failing, and an unknown id returns ok:false with `suggestions`.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Exact scenario id in kebab-case, e.g. "create-cart". Case-sensitive; discover ids with pc_list_scenarios or any pc_plan_* tool. |
| params | object | — | Values for the {placeholder} segments in the operation's path, as a flat string-to-string map — e.g. { "customer-id": "c7f6e4b1-...", "subscription-id": "..." }. Keys are matched loosely, so "custome… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
| suggestions | array | — | Valid values to retry with, returned alongside `error` when the requested identifier was not found. |
No examples provided.
pc_check_auth Lint auth code for retired patterns ~234
Scan a Partner Center auth or client code snippet for retired and deprecated patterns — the graph.windows.net token audience, ADAL, the archived .NET SDK, and the AzureAD/MSOnline PowerShell modules — and return the severity, explanation, fix, and doc link for each hit. Use this to triage existing code before or after a 401. For guidance on what to build instead, use pc_auth_guidance; to translate archived SDK calls into REST, use pc_migrate_from_sdk. Read-only, offline, deterministic pattern matching: the snippet is not executed, nothing is sent anywhere, and no code is modified. A clean snippet returns findings: [] with clean: true. Detection is regex-based, so a clean result is not a guarantee of correctness.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The code to lint, pasted as-is. Any language — C#, TypeScript, PowerShell, or a raw token request URL. A partial snippet is fine: only the auth-related lines matter, and matching is case-insensitive.… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_decode_error Decode a raw error response ~227
Take a raw Partner Center error response and decode it: extract the error code, HTTP status, and MS-CorrelationId, then return the documented causes, remediation, likely scenarios, and the exact wording to quote in a support request. This is the right first tool when something failed and you have the response in hand. Use pc_lookup_error instead when you have already isolated a clean code, and pc_diagnose when you only have a prose description with no response body. Read-only, offline, deterministic parsing — the input is never sent anywhere and no request is replayed. Always returns ok:true: an unrecognised code still yields the parsed fields, status-based candidates, and a `note` on what to try next.
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | yes | The error response pasted verbatim — a JSON body such as {"code":"900400","description":"..."}, or unstructured log text containing the failure. Include the response headers if you have them so the M… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_diagnose Diagnose a symptom ~208
Match a Partner Center problem described in plain language against the documented errors and return the likely candidates plus an ordered fix path. Use this when you have no error body and no code — just a description of what is going wrong. If you have the raw response use pc_decode_error, and if you have a clean code use pc_lookup_error; both are far more precise than this. Read-only, offline, deterministic keyword matching, so the candidate list is a heuristic shortlist and can be empty or noisy. Always returns ok:true; `nextSteps` is a fixed checklist and is returned even when nothing matched.
| Name | Type | Req | Description |
|---|---|---|---|
| symptom | string | yes | What is going wrong, in plain language — e.g. "checkout returns 400 for NCE carts in Germany" or "token works for Graph but Partner Center says unauthorized". Matching is keyword-based and case-insen… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_explain_lifecycle Explain the subscription lifecycle ~194
Return the subscription lifecycle state machine: which operations (increase-seats, decrease-seats, upgrade, cancel, renew-change, suspend, reactivate, migrate, transfer) are legal from which state, the field to read off the live subscription before attempting each one, the scenario that performs it, and the error codes a failed precondition returns. Use this to answer "what can I do to this subscription right now" before reaching for an endpoint. For the endpoint itself use pc_get_scenario, for an ordered call sequence use pc_plan_subscription_change, and to decode a rejection use pc_lookup_error. Read-only, offline, deterministic. Omit `operation` for the whole machine.
| Name | Type | Req | Description |
|---|---|---|---|
| operation | string | — | Narrow the answer to one operation: increase-seats, decrease-seats, upgrade, cancel, renew-change, suspend, reactivate, migrate, or transfer. Omit to get every operation. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_generate_call Generate REST call code ~301
Emit ready-to-adapt code for one Partner Center scenario in the language you ask for, plus the Secure Application Model token exchange, 429 retry, 202 polling, and pagination boilerplate. Use this when you want code. For a structured method/url/headers/body object to send yourself, use pc_build_request; for the underlying facts and gotchas, use pc_get_scenario. Only current REST is emitted — never the archived .NET SDK. Read-only, offline, deterministic: the code is returned as text and is never executed, and the placeholder credentials it contains are read from environment variables at your end. An unknown id returns ok:false with `suggestions` listing every valid id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Exact scenario id in kebab-case, e.g. "create-cart". Case-sensitive; discover ids with pc_list_scenarios or any pc_plan_* tool. |
| includeHelpers | boolean | — | Whether to append the reusable boilerplate — token exchange, 429/Retry-After handling, 202 polling, pagination — as a separate `helpers` field. Defaults to true. Set false when you already have that… |
| language | string | yes | Target language for the snippet. Required — there is no default. "curl", "csharp", and "typescript" come from curated per-scenario examples; "powershell" is generated from the endpoint definition and… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
| suggestions | array | — | Valid values to retry with, returned alongside `error` when the requested identifier was not found. |
No examples provided.
pc_get_enums Look up enum values ~203
Return the accepted values for a Partner Center enum, each with a note on what it means — billingCycle, termDuration, targetView, segment, transitionType, subscriptionStatus, qualification, agreementType, billingType, provisioningStatus and more. Use this before sending a request body so you send a value the API will accept, rather than guessing a plausible-looking string. For the fields of a whole resource use pc_get_resource; for a pre-filled body skeleton use pc_build_request. Read-only, offline, deterministic. Omitting `name` returns the index of every enum instead of one enum's values. An unknown name returns ok:false with `suggestions` listing all valid enum names.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | — | Enum to expand, e.g. "billingCycle" or "subscriptionStatus". Matched case-insensitively. Omit it to list every available enum with its description and value count, then call again with the one you wa… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | — | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
| suggestions | array | — | Valid values to retry with, returned alongside `error` when the requested identifier was not found. |
No examples provided.
pc_get_reference Get API-wide reference facts ~186
Return the cross-cutting facts that apply to every Partner Center call rather than to one operation: base URLs, required headers, API versioning, the sandbox account, rate limits, and national cloud differences. Use this for questions about the API as a whole. For a specific endpoint use pc_get_scenario, and for authentication specifics use pc_auth_guidance. Read-only, offline, deterministic. `topic` is required and the payload shape differs per topic.
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | yes | Which reference topic to return. "base-urls": host per API surface. "headers": the headers every request should carry and why. "versioning": how API versions are selected. "sandbox": integration sand… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | — | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_get_resource Look up a resource's fields ~190
Return the field dictionary for a Partner Center resource — Customer, Subscription, Order, Invoice, CartLineItem and others — listing each field's name, type, and usage note. Use this to understand a payload you received or to work out what a request body needs. For the accepted values of an individual field use pc_get_enums, and for a ready-to-fill body skeleton for a specific operation use pc_build_request. Read-only, offline, deterministic. Omitting `name` returns the index of every resource instead of one resource's fields. An unknown name returns ok:false with `suggestions` listing all valid resource names.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | — | Resource to expand, e.g. "Subscription" or "CartLineItem". Matched case-insensitively. Omit it to list every documented resource with its description and field count, then call again with the one you… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | — | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
| suggestions | array | — | Valid values to retry with, returned alongside `error` when the requested identifier was not found. |
No examples provided.
pc_get_scenario Get one scenario in full ~267
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.
| Name | Type | Req | Description |
|---|---|---|---|
| enrich | boolean | — | 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-deterministi… |
| id | string | yes | 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 `suggestion… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
| suggestions | array | — | Valid values to retry with, returned alongside `error` when the requested identifier was not found. |
No examples provided.
pc_list_scenarios List available scenarios ~182
List every Partner Center REST operation this server knows about, as a compact index of id, title, area, method, resolved url, and auth type. Start here to discover what is available and to find the scenario id that the other tools take; then call pc_get_scenario for the full record or pc_generate_call for code. This is a catalogue of documented operations, not a query against a live tenant — it returns no customer data. Read-only, offline, deterministic. Filtering by an area with no entries returns an empty list rather than an error.
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | — | Restrict the list to one functional area. One of: customers, subscriptions, orders, licenses, invoicing, profiles, auth, catalog, utilities, audit, support, security, analytics, devices, referrals. O… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_lookup_error Look up an error code ~264
Look up a Partner Center error by its numeric code or HTTP status and return what it means, its known causes, the remediation, the doc link, and the scenarios where it usually appears. Use this when you already have a clean code. If you have a raw error response, pc_decode_error is better — it extracts the code and correlation id for you first. For a symptom described in prose with no code at all, use pc_diagnose. Read-only, offline, deterministic. Exactly one of `code` or `httpStatus` must be supplied; supplying neither returns ok:false. An unknown code returns ok:false with `suggestions` listing every code in the pack.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | — | Partner Center error code as a string, e.g. "900400" or "20002". Matched exactly, so strip surrounding text first. Takes precedence when both this and `httpStatus` are given. Supply this or `httpStat… |
| httpStatus | integer | — | HTTP status code to list errors for, e.g. 400 or 403. Use this when you have no Partner Center code — it returns every documented error with that status, so expect several. Ignored when `code` is sup… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | — | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
| suggestions | array | — | Valid values to retry with, returned alongside `error` when the requested identifier was not found. |
No examples provided.
pc_migrate_from_sdk Map archived SDK calls to REST ~203
Find the archived Partner Center .NET SDK calls in a snippet and map each one to the current REST scenario that replaces it, with migration notes. Use this to port code off the SDK, which was archived in June 2023. Run pc_check_auth alongside it to catch retired auth in the same snippet, then pass each returned scenario id to pc_generate_call to emit the replacement code. Read-only, offline, deterministic pattern matching: the snippet is not executed and nothing is rewritten in place — you get the mapping, not modified code. Always returns ok:true; when nothing matched, `matches` is empty and `unmatched` is true.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | C# code that calls the archived SDK, pasted as-is — e.g. a block using IAggregatePartner or PartnerService.Instance. A fragment is enough; matching is on the SDK call chain and is case-insensitive. M… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_csp_onboarding Plan CSP customer onboarding ~279
Return the ordered CSP customer onboarding workflow: send the reseller relationship invitation, confirm the customer accepted it, record the Microsoft Customer Agreement, then read their subscriptions. Use this to link an existing tenant to your CSP account before you can transact for them. For admin access on top of the relationship use pc_plan_gdap_onboarding; to move an already-linked customer between partners use pc_plan_transfer. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_gdap_onboarding Plan GDAP onboarding ~279
Return the ordered GDAP onboarding workflow — create the relationship, lock it for customer approval, poll until active, then bind access assignments. Use this when you need granular delegated admin rights over a customer tenant. Note these steps are Microsoft Graph calls, not Partner Center ones; for the commercial relationship (invitation + agreement) use pc_plan_csp_onboarding, which is the usual prerequisite. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_order_lifecycle Plan an order from cart to provisioned subscriptions ~278
Return the ordered workflow that takes a purchase from cart to confirmed, provisioned subscriptions: build the cart, check out, poll the order's provisioning status, resolve the subscriptions it created, and confirm each one provisioned. Use this when a purchase has to be verified rather than assumed. For choosing WHAT to buy use pc_plan_purchase; for changing a subscription afterwards use pc_plan_subscription_change. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_purchase Plan an NCE purchase ~322
Return the ordered end-to-end New Commerce purchase workflow — find the product, get a fresh SKU availability, build the cart, check out, resolve the provisioned subscriptions — with the exact operation, resolved URL, and key gotchas for each step. Use this to buy new subscriptions for a customer. To move existing subscriptions between partners use pc_plan_transfer, and to link the customer to your account first use pc_plan_csp_onboarding. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | — | Optional two-letter ISO 3166-1 country code for the customer's market, e.g. "TR", "DE", "US". Substituted for the {country} placeholder in the catalog steps, since product availability and pricing ar… |
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). Substituted for the {customer-id} placeholder in every step's path and url so the plan comes back ready… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_reconciliation Plan invoice reconciliation ~272
Return the ordered invoice reconciliation workflow for a billing period: locate the invoice, read its totals, pull billed and unbilled line items, download the statement. Use this for billing and revenue reconciliation. Note the v1 line-item endpoints are being retired in favour of async Graph v2 exports — call pc_whats_new for the cutoff dates before building on them. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_subscription_change Plan a subscription lifecycle change ~373
Return the ordered call sequence for one subscription lifecycle change: increase-seats, decrease-seats, upgrade, cancel, renew-change, suspend, reactivate, migrate or transfer. Each plan reads the subscription first, states the precondition that decides whether the change is legal, performs it, and confirms it. Use pc_explain_lifecycle to find out WHICH operation is available; use this to find out HOW to run it. For a new purchase use pc_plan_purchase, and for the order side use pc_plan_order_lifecycle. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| operation | string | yes | Which lifecycle change to plan. One of: increase-seats, decrease-seats, upgrade, cancel, renew-change, suspend, reactivate, migrate, transfer. Required — there is no default. Use pc_explain_lifecycle… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_transfer Plan an NCE transfer ~264
Return the ordered New Commerce transfer (billing-ownership change) workflow: create the transfer, poll it, verify the moved subscriptions. Use this when a customer is moving to a new partner of record. For a first-time customer link-up use pc_plan_csp_onboarding instead, and for buying new subscriptions use pc_plan_purchase. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_user_offboarding Plan user offboarding ~264
Return the ordered workflow for removing a user from a customer tenant in the safe order: read their licenses, reclaim the seats, strip directory roles, then delete the account. Use this to decommission a person without stranding licenses. The inverse is pc_plan_user_onboarding; cancelling the subscriptions themselves is a different concern. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_plan_user_onboarding Plan user onboarding ~263
Return the ordered workflow for onboarding a user inside a customer tenant: pick available SKUs, create the account, assign licenses, grant directory roles, verify. Use this for people-level provisioning. It is unrelated to buying subscriptions — for that use pc_plan_purchase — and the reverse direction is pc_plan_user_offboarding. Planning only: nothing is executed, no Partner Center credentials are used, and no network call is made — it is a lookup over the bundled scenario pack. Returns { goal, steps[] with order/scenarioId/method/path/url/authType/why/keyGotchas/docUrl, notes[] }. Pass any step's scenarioId to pc_generate_call for runnable code, or pc_get_scenario for its full record.
| Name | Type | Req | Description |
|---|---|---|---|
| customerId | string | — | Optional Partner Center customer tenant id (GUID, e.g. "c7f6e4b1-3a2d-4c5e-9f80-1b2c3d4e5f60"). When supplied it is substituted for the {customer-id} placeholder in every step's path and url, so the… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_search_docs Search live Partner Center docs ~221
Search the live Microsoft Learn Partner Center developer documentation and return matching excerpts. Use this as the fallback when the curated pack has no answer: try pc_list_scenarios / pc_get_scenario / pc_lookup_error first, since those are verified and offline. Reaches the public internet, so results are not deterministic and the call can be slow or come back empty with a `note` when the fetch fails. Read-only and safe to retry; no Partner Center credentials are involved. Returns { excerpts[] with title/url/text, note }.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | What to look up, in plain language or as keywords — e.g. "cart line item promotion eligibility" or "MS-CorrelationId header". "Partner Center" is prepended automatically, so do not repeat it. An erro… |
| topK | integer | — | Maximum number of excerpts to return, 1-10. Omit to get everything the fetcher found (usually a handful). Lower it to keep the response small. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_validate_request Lint a REST request ~421
Check a Partner Center REST request you have already written against the documented operations and report what is wrong: unrecognised or mismatched method and path, missing Authorization or MS-RequestId, a retired token audience, app-only used where it is not supported, and sovereign-cloud host mismatches. Use this to catch mistakes before sending, or to explain a call that is failing. To build a correct request from scratch instead, use pc_build_request; to decode a response you already received, use pc_decode_error. Read-only, offline, deterministic: the request is analysed statically and never sent, so pass placeholder tokens rather than real ones. Findings are limited to what the bundled pack covers, so an empty list means no known problem — not a guarantee the call will succeed.
| Name | Type | Req | Description |
|---|---|---|---|
| authType | string | — | The token flavour you intend to use. Supply it to be told when the endpoint does not accept app-only. Omit to skip that check. |
| cloud | string | — | Sovereign cloud the request targets. Defaults to "commercial". Supply a non-commercial value to get the correct base URL and login authority reported as an info finding. |
| headers | object | — | Request headers as a flat string-to-string map, e.g. { "Authorization": "Bearer <token>", "MS-RequestId": "..." }. Names are compared case-insensitively. Omit to skip the header checks entirely — whi… |
| method | string | yes | HTTP verb of the request you are checking. Required — a verb that does not match the endpoint is one of the things this reports. |
| url | string | yes | The request URL. A full URL or a bare path both work; the scheme and host are stripped before matching. Concrete ids in place of {placeholder} segments are expected and matched positionally, e.g. "ht… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.
pc_whats_new List deprecations and deadlines ~195
List the Partner Center API deprecations and retirement deadlines — MFA enforcement, the graph.windows.net retirement, DAP to GDAP, v1 to v2 reconciliation, and the SDK/ADAL/AzureAD retirements — each with its date, impact, and the action to take, newest deadline first. Use this before committing to an endpoint or auth mechanism, and to explain why something that used to work has stopped. To check whether specific code is affected, run pc_check_auth on it. Read-only, offline, deterministic — sourced from the bundled pack, so it is only as current as the pack's last refresh rather than a live feed.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | — | Filter by lifecycle stage. "upcoming": announced, deadline not reached. "in-progress": rolling out now. "enforced": deadline passed and being applied. "retired": fully removed. Omit to get every item. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | The result payload. Present only when `ok` is true. |
| error | string | — | Human-readable reason the call failed. Present only when `ok` is false. |
| ok | boolean | yes | True when the call succeeded and `data` is populated; false when `error` explains why not. |
No examples provided.