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

# Troubleshooting

> What the Stover MCP server's errors mean and how to resolve them

## The client will not connect

### 401 Unauthorized

The server answers with a `WWW-Authenticate` header naming where to find its
authorization metadata:

```
WWW-Authenticate: Bearer error="invalid_token",
  resource_metadata="https://api.stover.app/.well-known/oauth-protected-resource"
```

A client that implements MCP authorization follows that automatically and starts the
OAuth flow. If yours does not, connect with an API key instead — see [Setup](/mcp/setup).

If you are already sending a key, check that it is a `stover_pk_*` value, that it has
not been revoked, and that it has not expired. `stover_list_api_keys` in the dashboard
shows the state of each one.

### 405 Method Not Allowed

The endpoint accepts `POST` only. This usually means the client is configured for SSE
rather than streamable HTTP, or the URL was opened in a browser.

### The connector connects but lists no tools

Check the URL is exactly `https://api.stover.app/v1/mcp`, with no trailing slash and no
`/sse` suffix.

## Rate limits

### 429 Too Many Requests

60 tool calls per minute, per account. The response carries the limit headers, including
when the window resets. Batch work into fewer calls with larger `limit` values rather
than paging one record at a time.

## Tool errors

Tools report failures as text with `isError` set, rather than throwing. The messages are
deliberately specific about what you can act on and deliberately silent about anything
internal.

| Message                                           | Meaning                                                                                                          |
| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `No deal found with id ...`                       | Nothing matched that id on this account. Check the id, and that it belongs to the right platform for post tools. |
| `A referenced record does not exist...`           | A related id — `contact_id`, `deal_id`, `company_id`, `optin_page_id` — points at nothing.                       |
| `A value has the wrong format...`                 | Ids must be UUIDs and dates ISO 8601.                                                                            |
| `A value is longer than the field allows.`        | Shorten the offending field.                                                                                     |
| `Provide at least one field to update on the ...` | An update was called with only an id, which would change nothing.                                                |
| `Deal limit reached for ... plan (N of N)`        | The plan's deal allowance is used up. Upgrade, or delete a deal.                                                 |
| `Webhook limit reached for your plan (N max)`     | As above, for outgoing webhooks.                                                                                 |
| `Stover could not complete ...`                   | A server-side fault. It has been logged with the detail; retrying the same call is unlikely to help.             |

## Posts

### `... posts have no hashtags field`

Only LinkedIn, Instagram and X store hashtags in their own column. On Threads, TikTok
and YouTube, include hashtags in the post body instead.

### `media_type is required for ...`

Instagram and Threads require one. Instagram accepts `feed_post`, `reel` or `carousel`;
Threads accepts `text`, `image`, `video` or `carousel`. Read
`stover://reference/platforms` for the current list.

### An id works on one platform but not another

Posts live in a separate table per platform, so an id is only meaningful together with
the platform it came from. Pass the same `platform` you listed the post with.

## Pagination

List tools default to 20 records and accept up to 100. Every list response includes
`total`, the count before paging, so you can tell whether there is more to fetch.

List responses omit long text: proposal bodies come from `stover_get_proposal`, meeting
transcripts from `stover_get_meeting`, and creator post bodies are not returned in bulk.

## Still stuck

Email [support@stover.app](mailto:support@stover.app) with the tool name, the arguments
you sent, and the message you got back.
