---
title: "Discover the live tools/list catalog of a policy-embedded inline MCP server"
method: POST
path: "/apiops/projects/{projectName}/apiProxies/{apiProxyName}/policies/{policyName}/parse-tools/"
tags: ["Policy"]
---

# Discover the live tools/list catalog of a policy-embedded inline MCP server

`POST /apiops/projects/{projectName}/apiProxies/{apiProxyName}/policies/{policyName}/parse-tools/`

## Request

- Base URL: `http://167.86.118.166:32080`
- URL: `http://167.86.118.166:32080/apiops/projects/{projectName}/apiProxies/{apiProxyName}/policies/{policyName}/parse-tools/`
- Auth: none declared
- TypeScript: <https://skmtc.dev/apinizer/apis/apinizer-management-apis/docs/apiops/projects/:projectName/apiProxies/:apiProxyName/policies/:policyName/parse-tools/post.ts> (a function with typed inputs; its response is checked against the schema)

Preview-only MCP tool discovery for an EXISTING policy's inline mcpServer (PolicyAiMcpToolCall or PolicyAiMcpToolInvoke) — no persist, discoveredTools on the policy is unchanged. The request body is OPTIONAL: omitted, the persisted inline server is probed as-is (decrypted server-side); supplied, its fields OVERRIDE the persisted ones the same ABSENT-vs-EMPTY way a policy update does (omitted secret fields are preserved from the persisted server, never sent blank/anonymous).

## Path parameters

- `projectName` string, required
- `apiProxyName` string, required
- `policyName` string, required

## Request body

- ConnectionConfigMcp
  - `id` string
  - `projectId` string
  - `name` string
  - `description` string
  - `enabled` boolean
  - `projectName` string
  - `environmentId` string
  - `circuitBreakerEnabled` boolean
  - `errorThresholdValue` integer
  - `sleepWindow` integer
  - `endpoint` string
  - `transport` 'HTTP_SSE' | 'STDIO'
  - `mcpProtocolVersion` string
  - `allowPrivateNetworkEgress` boolean
  - `authScheme` 'BEARER' | 'OAUTH2_CLIENT_CREDENTIALS' | 'MTLS' | 'NONE' | 'API_KEY' | 'BASIC' | 'OAUTH2_TOKEN_EXCHANGE'
  - `bearerToken` string
  - `credentialRef` string
  - `tokenEndpoint` string
  - `clientId` string
  - `clientSecret` string
  - `scope` string
  - `tokenExchangeAudience` string
  - `apiKeyHeaderName` string
  - `apiKey` string
  - `basicUsername` string
  - `basicPassword` string
  - `bearerTokenSet` boolean
  - `clientSecretSet` boolean
  - `apiKeySet` boolean
  - `basicPasswordSet` boolean
  - `capabilityCacheTtlSeconds` integer
  - `capabilityCacheEnabled` boolean
  - `trustToolAnnotations` boolean
  - `relayElicitation` boolean
  - `discoveredTools` McpDiscoveredTool[]
    - `name` string
    - `description` string
    - `inputSchemaJson` string
  - `toolsParsedAt` integer
  - `credentialMappingRef` string
  - `healthStatus` string
  - `lastHealthCheckAt` string, date-time
  - `healthMessage` string
  - `driftPolicy` 'WARN_ONLY' | 'FAIL_CLOSED'
  - `pinnedCatalogHash` string
  - `driftDetected` boolean
  - `driftMessage` string
  - `driftStatePushPending` boolean
  - `resolvedEndpoint` string
  - `resolvedTokenEndpoint` string
  - `resolvedClientId` string
  - `resolvedApiKeyHeaderName` string
  - `resolvedBasicUsername` string
  - `resolvedTokenExchangeAudience` string
  - `resolvedScope` string
  - `mTLSSettings` ConnectionMTLSSettings
    - `enabled` boolean
    - `skipSslVerification` boolean
    - `keyStoreId` string
    - `trustStoreId` string
    - `certificateId` string
    - `supportedProtocolList` string[]
    - `hostnameVerifierType` 'NOOP' | 'DEFAULT' | 'STRICT' | 'BROWSER_COMPAT'

## Response `200`

successful operation!

- ApiOpsResponseMcpParseTools
  - `status` 'SUCCESS' | 'FAILURE'
  - `resultMessage` string
  - `resultList` AiMcpToolRegistryDTO[]
    - `name` string
    - `description` string
    - `inputSchema` string
    - `type` string
    - `connectionId` string
    - `cachedAt` string
    - `ttlRemainingSeconds` integer
  - `resultCount` integer
  - `pinnedCatalogHash` string
  - `parsedAt` string

## Other responses

- `401`: not authorized for this operation!
- `500`: internal error!

## Changes

- **2026-10-28** `e083046b24cd`: 2 warning
  - removed the request property `resolvedBearerToken`
  - removed the request property `resolvedClientSecret`
- **2026-10-20** `d1a546deccf0`: 3 breaking
  - request property `driftPolicy` was restricted to a list of enum values
  - the `driftPolicy` request property type changed from `object` to `string`
  - the `toolsParsedAt` request property format changed from no format to `int64`
  - …this revision’s changelog is incomplete
- **2026-08-11** `9ae232e55479`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/apinizer/apis/apinizer-management-apis/changes/apiops/projects/:projectName/apiProxies/:apiProxyName/policies/:policyName/parse-tools/post.md)

---

[API](https://skmtc.dev/apinizer/apis/apinizer-management-apis.md) - [All operations](https://skmtc.dev/apinizer/apis/apinizer-management-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/apinizer/apis/apinizer-management-apis/revisions/e083046b24cd?raw)
