{"openapi":"3.1.0","info":{"title":"Pulumi Policy (BYOK) API","version":"0.1.0","description":"Pulumi Policy (BYOK) lets an AI assistant read your own Pulumi Policy data through the Pulumi Policy API with a key you supply (Pulumi access token (pul-...)). Read-only: 9 tools (list_policy_groups, get_policy_group, get_policy_group_metadata, list_policy_packs, get_policy_pack_version, get_stack_policy_groups, get_stack_policy_packs, get_policy_results_summary, get_policy_issue). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-pulumi-policy.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-pulumi-policy/docs"},"termsOfService":"https://connectorbay.com/byok-pulumi-policy/terms"},"servers":[{"url":"https://byok-pulumi-policy.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-pulumi-policy/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_policy_groups":{"post":{"operationId":"list_policy_groups","summary":"List the policy groups of an organization with name, mode (audit or preventative), whether it is the org default and how","description":"List the policy groups of an organization with name, mode (audit or preventative), whether it is the org default and how many stacks, accounts and policy packs it has. Use for \"Which Pulumi policy groups does acme have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"}},"required":["org_name"],"title":"list_policy_groupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_policy_group":{"post":{"operationId":"get_policy_group","summary":"Get one policy group: mode, member stacks and Insights accounts, and the applied policy pack versions with their configu","description":"Get one policy group: mode, member stacks and Insights accounts, and the applied policy pack versions with their configuration. Use for \"Which policy packs does the production policy group enforce\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"},"policy_group":{"description":"Policy group name, as shown by list_policy_groups.","maxLength":100,"title":"Policy Group","type":"string"}},"required":["org_name","policy_group"],"title":"get_policy_groupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_policy_group_metadata":{"post":{"operationId":"get_policy_group_metadata","summary":"Get organization-wide policy coverage numbers: stacks and resources protected by preventative and audit groups versus to","description":"Get organization-wide policy coverage numbers: stacks and resources protected by preventative and audit groups versus totals. Use for \"How many of our Pulumi stacks are covered by policy groups\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"}},"required":["org_name"],"title":"get_policy_group_metadataArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_policy_packs":{"post":{"operationId":"list_policy_packs","summary":"List the policy packs published to an organization with name, display name, version numbers and version tags. Optionally","description":"List the policy packs published to an organization with name, display name, version numbers and version tags. Optionally filter by pack name. Use for \"Which policy packs has acme published to Pulumi Cloud\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"},"policypack":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the pack with this name.","title":"Policypack"}},"required":["org_name"],"title":"list_policy_packsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_policy_pack_version":{"post":{"operationId":"get_policy_pack_version","summary":"Get one policy pack version and the policies inside it: name, description, enforcement level (advisory, mandatory, remed","description":"Get one policy pack version and the policies inside it: name, description, enforcement level (advisory, mandatory, remediate, disabled), message, severity, tags and remediation steps. Use for \"What policies are in version 3 of the aws-guard policy pack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"},"policy_pack_name":{"description":"Policy pack name, as shown by list_policy_packs.","maxLength":100,"title":"Policy Pack Name","type":"string"},"version":{"description":"Numeric policy pack version, as shown by list_policy_packs.","maxLength":10,"title":"Version","type":"string"}},"required":["org_name","policy_pack_name","version"],"title":"get_policy_pack_versionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_stack_policy_groups":{"post":{"operationId":"get_stack_policy_groups","summary":"List the policy groups that include one stack, with mode and how many policy packs each enables. Use for \"Which policy g","description":"List the policy groups that include one stack, with mode and how many policy packs each enables. Use for \"Which policy groups apply to the acme/web-app/prod stack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"},"project_name":{"description":"Pulumi project name, for example 'web-app'.","maxLength":100,"title":"Project Name","type":"string"},"stack_name":{"description":"Pulumi stack name, for example 'prod'.","maxLength":100,"title":"Stack Name","type":"string"}},"required":["org_name","project_name","stack_name"],"title":"get_stack_policy_groupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_stack_policy_packs":{"post":{"operationId":"get_stack_policy_packs","summary":"List the policy pack versions enforced on one stack through its policy groups. Filter by audit or preventative mode. Use","description":"List the policy pack versions enforced on one stack through its policy groups. Filter by audit or preventative mode. Use for \"Which policy packs are enforced on acme/web-app/prod\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"},"project_name":{"description":"Pulumi project name, for example 'web-app'.","maxLength":100,"title":"Project Name","type":"string"},"stack_name":{"description":"Pulumi stack name, for example 'prod'.","maxLength":100,"title":"Stack Name","type":"string"},"mode":{"anyOf":[{"enum":["audit","preventative"],"type":"string"},{"type":"null"}],"default":null,"description":"Only groups of this enforcement mode.","title":"Mode"}},"required":["org_name","project_name","stack_name"],"title":"get_stack_policy_packsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_policy_results_summary":{"post":{"operationId":"get_policy_results_summary","summary":"Get organization policy compliance totals: policies, policies with issues, resources covered and resources with issues. ","description":"Get organization policy compliance totals: policies, policies with issues, resources covered and resources with issues. Use for \"How compliant are our Pulumi resources with policy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"}},"required":["org_name"],"title":"get_policy_results_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_policy_issue":{"post":{"operationId":"get_policy_issue","summary":"Get one policy issue: the policy pack and policy that flagged it, the resource, level, severity, priority and triage sta","description":"Get one policy issue: the policy pack and policy that flagged it, the resource, level, severity, priority and triage status. Use for \"What is policy issue abc123 in the acme organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_name":{"description":"Pulumi organization name, for example 'acme'.","maxLength":100,"title":"Org Name","type":"string"},"issue_id":{"description":"Policy issue identifier.","maxLength":100,"title":"Issue Id","type":"string"}},"required":["org_name","issue_id"],"title":"get_policy_issueArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}