Marvin MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MARVIN_API_KEY | Yes | Your Marvin API key | |
| MARVIN_API_URL | No | The Marvin API URL. Use another environment, e.g. stg or a local API (http://localhost:<port>) | https://app-api.marvin-labs.com |
| MARVIN_WAIT_SECONDS | No | How long one tool call waits for an answer | 50 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Marvin is Marvin Labs' equity research analyst. Use ask_marvin for questions about companies, their filings, financials and markets. Answers can take several minutes: when ask_marvin returns status queued or in_progress, call get_response with the response_id until it is completed. To follow up in the same conversation, pass the conversation_id from the previous answer.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ask_marvinA | Ask Marvin a question; returns its answer, or a response_id to poll. |
| get_responseC | Wait a little longer for an answer that ask_marvin left running. |
| cancel_responseB | Stop an answer that is still running. |
| list_conversationsB | Your Marvin conversations, most recently updated first, including ones from the app. |
| get_conversationC | A conversation's questions and answers, oldest first. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool targets a distinct action: ask_marvin initiates a question, get_response polls an async answer, cancel_response stops a running answer, list_conversations enumerates conversations, and get_conversation retrieves a specific conversation's history. There is no overlap in purpose, and the async lifecycle is cleanly split between ask and poll.
All names use snake_case and follow a verb_noun pattern (get_response, cancel_response, list_conversations, get_conversation). ask_marvin is a minor deviation because it names the assistant rather than a resource type, but it remains clear and consistent overall.
Five tools neatly cover the core operations—asking, polling, cancelling, listing, and retrieving—without redundancy. This is well within the typical 3-15 range for a focused assistant server.
The set provides complete coverage of the primary response and conversation lifecycle. Minor gaps like deleting or renaming conversations exist, but agents can work around them for most workflows.