80trust / 100

Manawa Terminal

by manawa.app in Markets & finance

MCP serverPassing, checked 7 h ago

Live market data, financial analysis, and portfolio research tools across 10,000+ tickers.

https://mcp.manawa.app/mcp

Last 30 days

All checks passedSome failedAll failedNot checked

Status and outage history · Atom feed

Uptime
100%
Response time
232 ms typical, 298 ms slowest 5%
Last check
7 h ago
Next check
any minute now

How to call it

Add it to any MCP client that supports remote servers.

{
  "mcpServers": {
    "manawa-terminal": {
      "type": "http",
      "url": "https://mcp.manawa.app/mcp"
    }
  }
}

39 tools

  • finance_search

    Search financial data and return an answer with an inline widget. Covers stocks, macro, forex, crypto, commodities, earnings, technicals, and related market questions. Pass the user's question in `query` without rephrasing. To screen a named watchlist or portfol

  • list_watchlists

    List the authenticated user's watchlists and their symbols. Args: offset: Skip this many lists (default 0) limit: Page size (default 50, max 100)

  • create_watchlist

    Create a watchlist with the given name and ticker symbols. Args: name: Watchlist name symbols: List of stock symbols (e.g. ["AAPL", "MSFT"])

  • update_watchlist

    Update a watchlist's name and/or symbols. Args: watchlist_id: The watchlist UUID name: New name (optional) symbols: Updated list of symbols (optional)

  • list_screeners

    List the authenticated user's saved screeners (filter queries + schedule). Args: offset: Skip this many screeners (default 0) limit: Page size (default 50, max 100)

  • create_screener

    Save a screener filter query for scheduled enter/exit (joiner/leaver) notifies. Same rows as Terminal Save on /screener. Pass last_symbols (current matches) or call run_screener after create to seed the baseline; later runs notify names that enter or leave when Setti

  • update_screener

    Update a saved screener's name, query, schedule, or baseline symbols. Args: screener_id: The screener UUID from list_screeners name: New name (optional) query: Updated filter blob (optional) schedule: "off", "daily", or "weekly" (optional; wee

  • delete_screener

    Delete a saved screener by ID. Args: screener_id: The screener UUID from list_screeners

  • run_screener

    Re-run a saved screener; persist last_symbols; return entered/exited. First seed does not notify. Later runs notify joiners and leavers when Settings Screener in & out is on. Same path as Terminal Run now. Args: screener_id: The screener UUID from list_scree

  • list_portfolios

    List the authenticated user's portfolios. Args: offset: Skip this many portfolios (default 0) limit: Page size (default 50, max 100)

  • create_portfolio

    Create a portfolio with a name and base currency. Args: name: Portfolio name currency: Base currency (default USD)

  • add_transaction

    Add a buy, sell, deposit, or withdrawal transaction to a portfolio. Args: portfolio_id: The portfolio UUID symbol: Stock symbol (e.g. "AAPL"). For deposit/withdrawal use "$CASH" (aliases "CASH" / blank are normalized to "$CASH"). side: "bu

  • get_positions

    Get current holdings with quantity, cost basis, market value, and unrealized P&L. Args: portfolio_id: The portfolio UUID

  • get_portfolio_statistics

    Get portfolio performance statistics (returns, allocation, risk). Args: portfolio_id: The portfolio UUID

  • list_alerts

    List price, event, and clock alerts for the authenticated user. Args: offset: Skip this many alerts (default 0) limit: Page size (default 50, max 100)

  • create_alert

    Create a price alert, an event alert, or a clock. Calling this stores the alert. A clock may omit the ticker. Args: symbol: Stock symbol (e.g. "AAPL"). Required for price and event alerts. Optional for a clock. alert_type: "target_price", "movement_pct",

  • get_notifications

    Get alert notifications. Unread only, unless history is set. Args: offset: Skip this many rows (default 0) limit: Page size (default 50, max 100). Unread upstream cap is 50. history: When true, return fired alerts including ones already read, newest f

  • delete_alert

    Delete an alert by ID. Args: alert_id: The alert UUID

  • list_library_folders

    List folders in the authenticated user's research library. Args: offset: Skip this many folders (default 0) limit: Page size (default 50, max 100)

  • create_library_folder

    Create a library folder, optionally nested under a parent. Args: name: Folder name parent_id: Parent folder UUID (optional — omit for a root folder)

  • rename_library_folder

    Rename a library folder. Args: folder_id: The folder UUID name: New folder name

  • move_library_folder

    Move a library folder under a different parent (or to root). Args: folder_id: The folder UUID to move parent_id: New parent folder UUID (omit / null for library root)

  • delete_library_folder

    Delete a library folder and everything inside it. Args: folder_id: The folder UUID

  • list_library_items

    List documents in a library folder, or at the root if no folder is given. Args: folder_id: Folder UUID to list (optional — omit for root-level items) offset: Skip this many items (default 0) limit: Page size (default 50, max 100)

  • get_library_item

    Get a library document's metadata and content. Content is markdown, raw HTML (content_type text/html), or a signed URL for PDFs. Args: item_id: The item UUID

  • create_library_item

    Create a markdown or HTML document in the research library. Args: title: Document title content: Markdown body, or raw HTML when content_type is text/html folder_id: Folder UUID (optional — omit for library root) content_type: text/markdown (d

  • update_library_item

    Update a library document's title and/or content (content edits create a new version). Content is markdown, or raw HTML when the document is already text/html. The document type does not change. Args: item_id: The item UUID title: New title (optional

  • move_library_item

    Move a library document into a different folder (or to root). Args: item_id: The item UUID to move folder_id: Destination folder UUID (omit / null for library root)

  • delete_library_item

    Delete a library document and all of its stored versions. Args: item_id: The item UUID

  • list_library_item_versions

    List version history for a library document (newest first). Args: item_id: The item UUID

  • search_library

    Full-text search across the authenticated user's library documents. Args: query: Search terms limit: Max results (default 20, capped at 50)

  • list_journal

    List generated daily research journal entries (most recent first). Entries appear only after the automatic end-of-day journal generation run. Drafts from submit_journal_draft are not listed until that run completes. Args: offset: Skip this many entries (defa

  • get_journal_entry

    Get a full generated journal entry by ID from list_journal. Draft ids from submit_journal_draft are not readable until end-of-day generation; use list_journal after the daily run for valid entry ids (integer or legacy UUID). Args: entry_id: Journal entry

  • submit_journal_draft

    Submit a journal draft for a day. Same-day resubmissions are retained as separate drafts. The draft is accepted immediately but the readable daily journal entry is generated automatically at end of day; it then appears in list_journal. The returned draft id is not a

  • run_deepdive

    Queue a full DeepDive suite for a stock using a monthly custom-run grant. Prepaid search credits cannot pay for this. Free plans have 0 runs; Basic has 10/month; Pro has 50/month. Re-running a ticker already unlocked this month does not consume another grant. The cal

  • report_bug

    Log a bug in the same inbox as the terminal bug button (5 per user per day). Use only when the user asks, or when you have confirmed a real data/UI error. Do not file speculative bugs. Pass ticker/section so admins get a terminal URL; page_url is optional if it is al

  • marketing_inbox

    Admin only. Latest teasers plus already-generated images. Use ticker for all current items on a symbol, type for one content_type across symbols, or since for the worker poll. Then call marketing_graphics(content_id) for live formats. Reuse items[].images[] when

  • marketing_graphics

    Admin only. Live formats for one inbox item, or the catalog. For a bot, pass content_id from marketing_inbox. Empty options means skip the item. Already-rendered images are included so you can reuse a cache hit. Args: content_id: gc:{id} or rd:{uuid} — live

  • marketing_render

    Admin only. Render one live format and wait until image.url exists. Blocks until GCS has the PNG (or a cache hit). Do not poll. Draft formats return option_not_live. Args: content_id: gc:{id} or rd:{uuid} option_id: live option from marketing_graphic

Security scan

  • Unusually long description in tool:finance_search
    finance_search Search financial data and return an answer with an inline widget.…

Recent checks

WhenResultHTTPTime
7 h agoPassed200298 ms
16 h agoPassed200184 ms
26 h agoPassed200232 ms
35 h agoPassed200702 ms
44 h agoPassed200170 ms
2 days agoPassed200166 ms
3 days agoPassed200242 ms
3 days agoPassed200241 ms