Adviserry
Adviserry reads the newsletters and YouTube channels you follow and drafts the moves worth making this week.
Servidor MCP hospedado
npx add-mcp 'https://adviserry.com/api/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
MCP Server Documentation
Connect Adviserry to Claude Desktop, Claude Code, Cursor, Gemini CLI, or OpenClaw and your assistant can search your newsletters and YouTube transcripts directly. Setup: copy your MCP token, paste one config block into your client, and restart it.
New to this? Start with the MCP server overview.
Which MCP clients does Adviserry support?
Claude Desktop, Claude Code, Cursor, Gemini CLI, and OpenClaw, all over the same HTTP endpoint with a bearer token. ChatGPT is not supported yet: its custom connectors require OAuth 2.1 with dynamic client registration, which Adviserry does not implement today. The tabs below have a copy-ready config for each supported client.
How do I connect Adviserry to Claude Desktop?
To connect your AI client to Adviserry, you need your MCP token:
- Log in to Adviserry
- Go to Settings and find the MCP Server Access section
- Copy your personal MCP token
Your token authenticates requests via the Authorization: Bearer <token> header. Keep it secure.
Using a different client? Pick its tab below, the steps are the same: paste the config, save, and restart.
Claude Desktop Configuration
Add this to your claude_desktop_config.json
{
"mcpServers": {
"adviserry": {
"url": "https://adviserry.com/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_TOKEN"
}
}
}
}
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Restart Claude Desktop after saving changes.
Connected? See the MCP server overview for what to ask it first.
Do I need to set this up again on my phone?
Yes. Connectors are not shared between Claude on desktop and Claude on mobile, so adding Adviserry in one does not add it to the other. If you use both, add it in both, with the same endpoint and the same token.
There is one difference in the form. The mobile app asks for a user as well as an auth token, and will not save the connector until both are filled in. Use your Adviserry user ID, which sits under Your User ID in the Settings MCP section, next to the token.
The user ID is not a second credential. Requests are authenticated by the Bearer token alone, and the server never reads the user field, so it does not need protecting the way your token does.
What tools does the server expose?
The Adviserry MCP server exposes 13 tools. Your AI client will discover these automatically once connected.
search_newsletters
Search through the user's newsletter knowledge base for relevant content. Use this to find information, quotes, or insights from newsletters the user has subscribed to.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | The search query to find relevant newsletter content |
panel_name | string | No | Optional: Filter by a specific panel name (e.g., 'Marketing', 'Tech') |
limit | string | No | Maximum number of results to return (default: 5, max: 10) |
list_panels
List all the user's topic panels and the newsletters in each panel.
No parameters required.
get_recent_issues
Get the most recent newsletter issues from a specific panel or all panels.
| Parameter | Type | Required | Description |
|---|---|---|---|
panel_name | string | No | Optional: Filter by a specific panel name |
days | string | No | Number of days to look back (default: 7, max: 30) |
limit | string | No | Maximum number of issues to return (default: 10, max: 20) |
get_newsletter_summary
Get a summary of a specific newsletter issue by its ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
issue_id | string | Yes | The ID of the newsletter issue to summarize |
get_topics
Get the key topics covered across the user's newsletters, optionally filtered by panel or time range.
| Parameter | Type | Required | Description |
|---|---|---|---|
panel_name | string | No | Optional: Filter by a specific panel name |
days | string | No | Number of days to analyze (default: 30, max: 90) |
search_context
Search through the user's uploaded documents and URLs for relevant content. Use this to find information from PDFs, Word docs, spreadsheets, presentations, or web pages the user has added as context.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | The search query to find relevant uploaded content |
panel_name | string | No | Optional: Filter by a specific panel name. Global uploads are always included. |
limit | string | No | Maximum number of results to return (default: 5, max: 10) |
get_insights
Get proactive insights generated by the user's topic panels. Insights are AI-generated connections between content from different sources, trends, and action items relevant to what the user is working on.
| Parameter | Type | Required | Description |
|---|---|---|---|
panel_name | string | No | Optional: Filter by a specific panel name |
status | string unread | read | saved | all | No | Filter by status: 'unread', 'read', 'saved', or 'all' (default: 'all') |
limit | string | No | Maximum number of insights to return (default: 10, max: 20) |
search_actions
Search the user's drafted actions: the concrete, copy-paste-ready things Adviserry's weekly Action Synthesis proposed they DO, drafted from what their sources published and what they said they are working on. This is different from search_newsletters (raw source content) and get_insights (observations): an action carries a finished deliverable, not a summary. Use it whenever the user asks what they should be doing, refers to something Adviserry suggested, or wants to find a past suggestion by topic ("that action about pricing", "what did it tell me to do about hiring?"). Returns the full draft, so you can hand it straight to them.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | What to look for, in plain language. Searched against each action's title, its 'why now' rationale, and the full draft. |
panel_name | string | No | Optional: restrict to one panel (see list_panels). Omit to search every panel. |
domain | string project | investment | personal | learning | No | Optional: restrict to one life area. |
effort | string quick | medium | deep | No | Optional: restrict by size. 'quick' is minutes, 'medium' is an hour or so, 'deep' is a real block of work. |
status | string open | unread | read | saved | dismissed | all | No | Which actions to include: 'open' (default, everything not dismissed), 'unread', 'read', 'saved' (the user marked it shipped), 'dismissed', or 'all'. |
days | string | No | Optional: only actions drafted in the last N days (max 365). Omit to search the whole history. |
limit | string | No | Maximum number of actions to return (default: 5, max: 10) |
get_actions
List the user's most recent drafted actions, newest synthesis batch first and highest-priority first within a batch. Use this for "what should I be working on?", "what did Adviserry suggest this week?", or to review a briefing without a specific topic in mind. Returns each action's full draft. To find an older action by topic, use search_actions instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
panel_name | string | No | Optional: restrict to one panel (see list_panels) |
status | string open | unread | read | saved | dismissed | all | No | Which actions to include: 'open' (default, everything not dismissed), 'unread', 'read', 'saved', 'dismissed', or 'all'. |
domain | string project | investment | personal | learning | No | Optional: restrict to one life area. |
effort | string quick | medium | deep | No | Optional: restrict by size. |
days | string | No | Optional: only actions from the last N days (max 365). Omit for the most recent regardless of age. |
limit | string | No | Maximum number of actions to return (default: 10, max: 20) |
get_action
Get one action in full: the complete draft, why it was suggested now, every source it was built from with author and date, and the piece of the user's own context it was matched against. Use this after search_actions or get_actions when the user wants to act on a specific suggestion, or wants to know where it came from before trusting it.
| Parameter | Type | Required | Description |
|---|---|---|---|
action_id | string | Yes | The action's id, as returned by search_actions or get_actions. |
update_action_status
Mark one of the user's own actions as done, read, dismissed, or back to unread, so the dashboard and future syntheses reflect what actually happened. Only do this when the user has said what they did with the action. Use 'saved' when they have shipped or completed it (that is what the dashboard calls Shipped, and it teaches future syntheses to draft more like it), 'dismissed' when they are not going to do it, 'read' to acknowledge without committing. Every value is reversible.
| Parameter | Type | Required | Description |
|---|---|---|---|
action_id | string | Yes | The action's id, as returned by search_actions or get_actions. |
status | string saved | dismissed | read | unread | Yes | 'saved' = shipped/done, 'dismissed' = not doing it, 'read' = seen, 'unread' = put it back. |
get_user_context
Get the user's advisor profile: their role, what they're currently working on, challenges they're facing, goals, and freeform notes. This context is used by panels to generate personalized insights and actions. Call this before and after update_context to confirm changes.
No parameters required.
update_context
Update the user's 'what I'm working on' context profile (the same profile get_user_context returns). Only use this when the user explicitly asks to update their Adviserry context. Call get_user_context first to see the current value, and again afterwards to confirm the change. For current_projects and challenges, separate multiple entries with newlines or semicolons. For goals_detail, write one goal per line as 'Goal name: what winning looks like'. The update counts as a fresh human review of the profile. IMPORTANT — this profile usually spans MORE THAN ONE project. The user may run several products and point different panels at each, so the context you can see from wherever you are running is probably only part of it. Because of that: 1. Prefer mode 'append'. Only use 'replace_field' when the user has actually asked to clean the field out. 2. Any update that would remove something returns a PREVIEW and saves nothing. Read the preview to the user, go through the removal list with them item by item, and only then call again with the returned 'confirm' token. Never invent a token, and never confirm on the user's behalf without showing them what disappears. 3. If the user's request is really about one project, pass 'panels' with that project's panel names. Entries tagged to other panels are then protected from removal automatically.
| Parameter | Type | Required | Description |
|---|---|---|---|
mode | string append | replace_field | Yes | 'append' adds to the field, keeping what is already there (preferred, and never destructive). 'replace_field' overwrites the field, which will drop anything not in your text — it triggers a confirmation preview first. |
field | string role | current_projects | challenges | goals_detail | freeform | Yes | Which part of the profile to update: role (one sentence on who the person is; replace_field only), current_projects (projects and initiatives), challenges (current struggles), goals_detail (what winning looks like), or freeform (anything else, in the user's own words). Interests are deliberately not writable here — the user manages those on the Context tab. |
text | string | Yes | The content to write. Maximum 2000 characters per update (role: 500). |
panels | string | No | Optional, current_projects and challenges only: comma-separated panel names to tag these entries to (see list_panels). Tagged entries only inform actions for those panels; untagged entries can inform any panel. Passing this also protects entries belonging to other panels from being removed. Unknown names fail the update. |
confirm | string | No | The token returned by a previous preview of this exact update. Required to apply anything that removes existing context. Send the same field, mode and text you previewed — changing the text invalidates the token and produces a new preview. |
on_removal | string archive | delete | No | What happens to removed items once confirmed. 'archive' (default) keeps them restorable on the Context tab. 'delete' is permanent — only use it when the user explicitly says to delete. |
What can I ask once it's connected?
Once connected, you can ask your AI client questions like:
- "Search my panels for recent advice on fundraising"
- "What are the latest newsletters about AI from my Tech panel?"
- "Summarize this week's issues from all my panels"
- "What topics have my newsletters been covering lately?"
- "Search my uploaded documents for competitive analysis"
- "Show me unread insights from my Marketing panel"
- "List all my panels and their sources"
What are Adviserry's MCP rate limits?
| Detail | Value |
|---|---|
| Requests per hour | 500, per user |
| Reset interval | Rolling 60-minute window |
| Over-limit response | HTTP 200 containing a JSON-RPC error (code -32000), not a distinct HTTP status |
Why does my client say the server is unreachable?
Four things to check, in order
- Verify your MCP token is correct (copy it fresh from Settings)
- Make sure the endpoint URL is
https://adviserry.com/api/mcpwith nowww.prefix. The www host returns a 308 redirect that most MCP clients will not follow, which surfaces as a connection timeout. - Ensure the Authorization header is formatted as
Bearer YOUR_TOKEN - Restart your AI client after making config changes
Why are my search results empty?
- Verify you have newsletters or YouTube channels added to your panels
- Check that your Gmail account is connected and synced
- Try broadening your search query
Troubleshooting FAQ
The connection issues above cover a first-time setup. These cover what comes up once you have been running for a while: tokens, errors your client surfaces verbatim, and the rate limit.
I regenerated my token but my client still fails. What's wrong?
Regenerating a token invalidates the old one immediately, so a client still holding the previous value starts failing right away. Open its config (claude_desktop_config.json, ~/.claude.json, or your client's MCP settings), replace the old value in the Authorization header with the fresh token from Settings, MCP Server Access, save, and fully restart the client rather than just reloading it.
Why does my client say "Unknown tool"?
It means the tool name your client sent does not exist for your account. Most often your client cached an older tool list from before we shipped a change, and restarting it forces a fresh lookup that clears the error. It is also the exact response two operator-only analytics tools give on purpose, since customer accounts cannot reach them either way.
I hit the MCP rate limit. What happens and how long until I can try again?
Every account gets 500 tool calls per rolling hour, tracked per user rather than per client. Going over it does not produce an HTTP error status: you get a normal response with a JSON-RPC error, code -32000, describing the limit inside it, so check the response body if your client only surfaces status codes. The window rolls continuously, so capacity frees up as your oldest calls in that hour age out.
Do I need to restart my client after editing the config?
Yes. MCP clients read their config file once at launch and hold the server and tool list for that session, so editing claude_desktop_config.json, ~/.claude.json, or a client's MCP settings panel while it is running has no effect until you fully quit and reopen it. A window reload is not the same as a restart for most clients.
How do I avoid JSON errors editing the config file on Windows?
Adviserry's own config block has no local file paths, just a URL and a bearer token, so there is nothing of ours to escape. But if claude_desktop_config.json already lists other servers with Windows file paths, remember every backslash inside a JSON string must be doubled or the whole file fails to parse, taking every server in it down, Adviserry included. Validate the file before restarting.
What exact format does the Authorization header need?
Exactly Authorization: Bearer YOUR_TOKEN, with the literal word Bearer, a capital B, and a single space before the token. No quotes around the value and no other scheme. If your client's config uses a headers object rather than a raw string, the key is still Authorization and the value is the full "Bearer token" string, not the token alone.
How do I revoke my MCP token?
There is no separate revoke action. Regenerating your token from Settings, MCP Server Access immediately invalidates the old one, which is a revoke in every practical sense: any client still sending it fails on its very next request. Generate the new token there, update every client config that used the old one, and restart each client to pick up the change.
How do I keep my MCP token secure?
- Never commit your MCP token to version control or share it publicly
- Regenerate your token immediately if you suspect it has been compromised (Settings → MCP Server Access → Regenerate Token)
- Always use header-based authentication to prevent token exposure in URLs, logs, or browser history
- Keep your AI client updated for the latest security patches
Need help? Contact support