> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parlayx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> Diagnose a ParlayX MCP server that will not start, or calls that keep failing

The server checks your credentials before it opens the transport, so almost every
problem shows up as a startup line saying what is wrong. Read that line first.

## Find the log

Everything goes to stderr, because stdout carries the protocol.

| Client         | Location                                                                                        |
| -------------- | ----------------------------------------------------------------------------------------------- |
| Claude Code    | `~/Library/Caches/claude-cli-nodejs/<project>/mcp-logs-parlayx/` on macOS, one file per session |
| Claude Desktop | `~/Library/Logs/Claude/mcp-server-parlayx.log` on macOS, `%APPDATA%\Claude\logs\` on Windows    |
| Cursor         | The Output panel, MCP channel                                                                   |

The file is named after the server as you named it, so look for that if you did
not call it `parlayx`. A healthy start writes one line, then one per call:

```
parlayx-mcp info startup server=... sdk=... keyId=... podId=... actorId=... trading=off
```

## No tools appear

<AccordionGroup>
  <Accordion title="The log says a variable is missing or malformed">
    The line names the variable and its character count, never its value:

    ```
    parlayx-mcp error PARLAYX_PRIVATE_KEY_HEX must be 64 lowercase hex characters (got 6 characters). Set it in the MCP client's env block.
    ```

    Whitespace is trimmed for you, so a wrong count means a truncated or doubled
    paste.
  </Accordion>

  <Accordion title="The log says the signing key was not accepted">
    The values are well-formed but the API rejected the signature. Confirm the key id belongs to the
    seed you paired it with, and that the key has not been revoked. See
    [Authentication](/authentication).
  </Accordion>

  <Accordion title="There is no log at all">
    The client never launched the server. Check that the command is `npx` with `["-y",
          "@parlayx/mcp"]`, and that both `npx` and Node 20 or newer are on the PATH the client sees. A GUI
    client does not inherit your shell's PATH, so a Node installed through a version manager may be
    invisible to it.
  </Accordion>

  <Accordion title="The configuration looks right and nothing changed">
    Clients read their server list at launch. Restart the client.
  </Accordion>
</AccordionGroup>

## Every call comes back unauthorized

A drifted host clock looks exactly like a bad key, because the signature covers a
timestamp the API checks within 30 seconds of its own. The server tells the two
apart: on the first rejection it reads the server clock and reports the offset.

```
This host's clock is 94s ahead of the ParlayX server; signatures are valid within 30 seconds. Fix the host clock (NTP) and retry.
```

Inside the window you get the rejected-key message instead, so the message you
receive is the answer. Fix a drifted clock with network time, not a new key.

## The trading tools are missing

Both halves of the [gate](/mcp/tools#trading-tools) have to hold. Call `whoami`
to see whether your key carries `trade`; if the opt-in is set and the capability
is missing, the server says so at startup and serves the read tools alone.

Both are read before the transport opens, so a change takes effect on the next
restart, never mid-session.

## Calls fail intermittently

A `429` or any `5xx` says the condition is transient. Retry. A read is always safe
to retry; a submit is safe only when you pass the same `idempotencyKey`, because
an omitted key is minted fresh every call and a retry becomes a second order.

## Reproduce it outside your client

```sh theme={null}
PARLAYX_KEY_ID=your-key-id PARLAYX_PRIVATE_KEY_HEX=your-seed npx -y @parlayx/mcp
```

It writes the startup line and waits for JSON-RPC on stdin, which is a working
server. If that succeeds and your client still shows nothing, the problem is the
client's configuration. To list and call tools against that same configuration,
use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector):

```sh theme={null}
npx @modelcontextprotocol/inspector --cli \
  --config path/to/your/config.json --server parlayx --method tools/list
```

Point `--config` at a file with the same `mcpServers` shape as the [Claude
Desktop configuration](/mcp/quickstart), so your credentials stay in a file
rather than in your shell history.
