Troubleshooting
Agent returns empty response
- Inspect the agent flow and tools first:
- list_resources { resourceType: "tool", aiAgentId }
- duplicate
toolId values can cause failed tool execution and empty responses
- Check LLM exists: list_resources { resourceType: "llm_model", projectId }
If none: run setup_llm
- Check agent description is not empty: get_resource { resourceType: "agent", id }
- Check endpoint is connected: get_resource { resourceType: "endpoint", id }
Verify flowId is set and URLToken exists
- Endpoint JUST created (seconds ago)? Endpoint config propagates briefly, and a
session whose FIRST message hit the stale config stays cached as broken — wait a
few seconds and retry with a NEW sessionId, not the same one.
- LLM Prompt flows: the assigned LLM must have a connection (
connectionId set on
the llm_model). A connectionless LLM fails silently — the node's default error
handling is "continue" with an empty message, which looks like an empty response.
talk_to_agent fails (any HTTP error or timeout)
talk_to_agent sends through Cognigy Endpoint Test Mode (/test/<token>) so test
messages are not counted as billable. It never re-sends a failed message on the regular
(billable) endpoint by itself; a failure comes back as error with testMode,
endpointUrl and status-aware _hints.
Step 1, always: find out whether the message was processed. An HTTP error
does not prove it was not. A REST endpoint's Execution Finished transformer runs
after the flow and can return any status (a 404 included), and a gateway timeout
can hide a completed execution. Waiting or reusing the sessionId does not
prevent a duplicate. Check:
get_resource { resourceType: "conversation", id: "<sessionId>" } for the
transcript (needs the endpoint to collect conversations), or
- continue the same
sessionId with a neutral follow-up ("what did you
just do?"), or verify the side effects of the agent's tools.
Re-send the message only if it was not processed.
Step 2: read the status, but do not over-interpret it. Cognigy does not
document how the 600-test-messages-per-hour cap is signalled, and the trial
platform answers an empty 400 for an unknown token on both the test and the
regular path, so a status alone never identifies a test-mode problem.
- 404 has three possible meanings: the
/test/ route does not exist
(platform older than Cognigy 4.27), the URL token is unknown (the regular URL
would 404 too), or a transformer returned 404 after the flow ran. Confirm
route absence independently before considering billable mode: the Cognigy
release is older than 4.27 (Admin Center or release notes), and
get_resource { resourceType: "endpoint", id, raw: true } shows the token
matches and no Execution Finished transformer is enabled.
- 400 — unknown URL token, invalid payload, or a transformer-set status.
Verify the endpoint (
channel: rest, URLToken present) and the payload.
- 401 / 403 — authorization, IP/WAF block or an endpoint restriction, which
would hit the regular URL as well. Fix what
detail names; do not read it as
"quota exhausted".
- 429 — throttling, either general rate limiting or the documented 600-per-hour
test budget. Pause; do not switch to
testMode: false to get around it.
- 5xx / timeout / DNS — the request may have reached the flow before
failing. Not evidence that test mode is unsupported.
Step 3: testMode: false is a billable production message. Use it only
when the user explicitly wants one, or when all of the following hold: the
original message is confirmed unprocessed, the platform is confirmed to lack
test mode, and the user has accepted the billing.
create_ai_agent failed
- The tool auto-rolls back created resources on failure. Safe to retry.
- "Could not find entry node": transient issue, retry immediately
- Endpoint step error: check project exists and is accessible
"Resource not found" errors
- All IDs are 24-char hex strings (e.g., 507f1f77bcf86cd799439011)
- UUIDs (36-char with dashes) are referenceIds — most tools need _id, not referenceId
- Use list_resources to find valid IDs
401 / 403 errors, or "who changed this?"
- get_resource { resourceType: "user", id: "me" } returns the account the API key
belongs to, plus its
roles. Check roles before blaming the API for a 403.
createdBy / lastChangedBy on any resource are opaque user ids. Never assume
one is the current user — compare it to the id from user/me. List
responses omit them; read them with get_resource { ..., raw: true }.
Finding the most recently touched resource
- Sort server-side instead of paging through everything and comparing by hand:
list_resources { resourceType: "project", sort: "lastChanged:desc", limit: 5 }
sort takes field:direction and works on any field the resource returns.
Every tool call fails with the same error, but the tool list works
Suspect the network path, not the platform — listing tools makes no HTTP request,
so a working list plus a uniformly failing call means requests are not reaching
Cognigy.
- On a corporate network, set
HTTPS_PROXY (and NO_PROXY for hosts to reach
directly) in the MCP server env block. GUI clients start the engine with a
minimal environment and usually do not inherit shell proxy variables.
- If the proxy inspects TLS, also set
NODE_EXTRA_CA_CERTS to the corporate root
CA file, then restart the client — Node reads it only at startup. Do not set
NODE_TLS_REJECT_UNAUTHORIZED=0.
- An error quoting an HTML body, or naming a proxy, points at the proxy rather
than Cognigy; the quoted text is the proxy's own message.
- "Cannot use the configured proxy ..." means the proxy setting itself is
malformed or unsupported (SOCKS proxies are not supported). Requests fail
instead of connecting directly, so the API key never leaves the sanctioned
path; exclude the host with
NO_PROXY if a direct connection is intended.
- "Timed out ... connecting through the proxy" means the proxy accepted the
connection but never completed the tunnel. Check the proxy address, or raise
COGNIGY_PROXY_CONNECT_TIMEOUT_MS (default 30000) if it is merely slow.
LOG_LEVEL=debug logs the proxy actually in use at startup.
setup_llm fails
- See the llm-providers skill for valid provider and model strings
- Verify the credentials (apiKey, or AWS access keys / role ARN for awsBedrock) have access to the specified model
delete_resource fails
- Verify the resource ID is a 24-char hex string (not a referenceId UUID)
- Use list_resources to confirm the resource exists before deleting
- Flows, projects and agents are never hard-deleted — delete_resource renames them with a DELETE_ prefix (markedForDeletion: true) so they can be deleted manually in the Cognigy UI. Agent/flow deletion deactivates referencing endpoints (reversible); a renamed project's contents stay live.
1---2name: troubleshooting3description: Use when a Cognigy agent returns empty responses, a tool call or create_ai_agent fails, a resource is not found, setup_llm fails, or you need to diagnose a Cognigy MCP problem.4---56# Troubleshooting78## Agent returns empty response9101. Inspect the agent flow and tools first:11 - list_resources { resourceType: "tool", aiAgentId }12 - duplicate `toolId` values can cause failed tool execution and empty responses132. Check LLM exists: list_resources { resourceType: "llm_model", projectId }14 If none: run setup_llm153. Check agent description is not empty: get_resource { resourceType: "agent", id }164. Check endpoint is connected: get_resource { resourceType: "endpoint", id }17 Verify flowId is set and URLToken exists185. Endpoint JUST created (seconds ago)? Endpoint config propagates briefly, and a19 session whose FIRST message hit the stale config stays cached as broken — wait a20 few seconds and retry with a NEW sessionId, not the same one.216. LLM Prompt flows: the assigned LLM must have a connection (`connectionId` set on22 the llm_model). A connectionless LLM fails silently — the node's default error23 handling is "continue" with an empty message, which looks like an empty response.2425## talk_to_agent fails (any HTTP error or timeout)2627talk_to_agent sends through Cognigy Endpoint Test Mode (`/test/<token>`) so test28messages are not counted as billable. It **never** re-sends a failed message on the regular29(billable) endpoint by itself; a failure comes back as `error` with `testMode`,30`endpointUrl` and status-aware `_hints`.3132**Step 1, always: find out whether the message was processed.** An HTTP error33does not prove it was not. A REST endpoint's Execution Finished transformer runs34after the flow and can return any status (a 404 included), and a gateway timeout35can hide a completed execution. Waiting or reusing the `sessionId` does not36prevent a duplicate. Check:3738- `get_resource { resourceType: "conversation", id: "<sessionId>" }` for the39 transcript (needs the endpoint to collect conversations), or40- continue the **same** `sessionId` with a neutral follow-up ("what did you41 just do?"), or verify the side effects of the agent's tools.4243Re-send the message only if it was **not** processed.4445**Step 2: read the status, but do not over-interpret it.** Cognigy does not46document how the 600-test-messages-per-hour cap is signalled, and the trial47platform answers an empty 400 for an unknown token on both the test and the48regular path, so a status alone never identifies a test-mode problem.4950- **404** has three possible meanings: the `/test/` route does not exist51 (platform older than Cognigy 4.27), the URL token is unknown (the regular URL52 would 404 too), or a transformer returned 404 after the flow ran. Confirm53 route absence independently before considering billable mode: the Cognigy54 release is older than 4.27 (Admin Center or release notes), **and**55 `get_resource { resourceType: "endpoint", id, raw: true }` shows the token56 matches and no Execution Finished transformer is enabled.57- **400** — unknown URL token, invalid payload, or a transformer-set status.58 Verify the endpoint (`channel: rest`, `URLToken` present) and the payload.59- **401 / 403** — authorization, IP/WAF block or an endpoint restriction, which60 would hit the regular URL as well. Fix what `detail` names; do not read it as61 "quota exhausted".62- **429** — throttling, either general rate limiting or the documented 600-per-hour63 test budget. Pause; do not switch to `testMode: false` to get around it.64- **5xx / timeout / DNS** — the request may have reached the flow before65 failing. Not evidence that test mode is unsupported.6667**Step 3: `testMode: false` is a billable production message.** Use it only68when the user explicitly wants one, or when all of the following hold: the69original message is confirmed unprocessed, the platform is confirmed to lack70test mode, and the user has accepted the billing.7172## create_ai_agent failed7374- The tool auto-rolls back created resources on failure. Safe to retry.75- "Could not find entry node": transient issue, retry immediately76- Endpoint step error: check project exists and is accessible7778## "Resource not found" errors7980- All IDs are 24-char hex strings (e.g., 507f1f77bcf86cd799439011)81- UUIDs (36-char with dashes) are referenceIds — most tools need \_id, not referenceId82- Use list_resources to find valid IDs8384## 401 / 403 errors, or "who changed this?"8586- get_resource { resourceType: "user", id: "me" } returns the account the API key87 belongs to, plus its `roles`. Check `roles` before blaming the API for a 403.88- `createdBy` / `lastChangedBy` on any resource are opaque user ids. Never assume89 one is the current user — compare it to the `id` from `user`/`me`. List90 responses omit them; read them with get_resource { ..., raw: true }.9192## Finding the most recently touched resource9394- Sort server-side instead of paging through everything and comparing by hand:95 list_resources { resourceType: "project", sort: "lastChanged:desc", limit: 5 }96- `sort` takes `field:direction` and works on any field the resource returns.9798## Every tool call fails with the same error, but the tool list works99100Suspect the network path, not the platform — listing tools makes no HTTP request,101so a working list plus a uniformly failing call means requests are not reaching102Cognigy.103104- On a corporate network, set `HTTPS_PROXY` (and `NO_PROXY` for hosts to reach105 directly) in the MCP server `env` block. GUI clients start the engine with a106 minimal environment and usually do not inherit shell proxy variables.107- If the proxy inspects TLS, also set `NODE_EXTRA_CA_CERTS` to the corporate root108 CA file, then restart the client — Node reads it only at startup. Do not set109 `NODE_TLS_REJECT_UNAUTHORIZED=0`.110- An error quoting an HTML body, or naming a proxy, points at the proxy rather111 than Cognigy; the quoted text is the proxy's own message.112- "Cannot use the configured proxy ..." means the proxy setting itself is113 malformed or unsupported (SOCKS proxies are not supported). Requests fail114 instead of connecting directly, so the API key never leaves the sanctioned115 path; exclude the host with `NO_PROXY` if a direct connection is intended.116- "Timed out ... connecting through the proxy" means the proxy accepted the117 connection but never completed the tunnel. Check the proxy address, or raise118 `COGNIGY_PROXY_CONNECT_TIMEOUT_MS` (default 30000) if it is merely slow.119- `LOG_LEVEL=debug` logs the proxy actually in use at startup.120121## setup_llm fails122123- See the llm-providers skill for valid provider and model strings124- Verify the credentials (apiKey, or AWS access keys / role ARN for awsBedrock) have access to the specified model125126## delete_resource fails127128- Verify the resource ID is a 24-char hex string (not a referenceId UUID)129- Use list_resources to confirm the resource exists before deleting130- Flows, projects and agents are never hard-deleted — delete_resource renames them with a DELETE_ prefix (markedForDeletion: true) so they can be deleted manually in the Cognigy UI. Agent/flow deletion deactivates referencing endpoints (reversible); a renamed project's contents stay live.