Skip to content

Manawa Terminal

by manawa.app · remote · no sign-in to list tools · v1.0.0 · published by app.manawa

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

Deletes · 4Changes · 20

40 tools: 4 can delete or cancel things, 20 change things and 16 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http manawa-terminal https://mcp.manawa.app/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn1 info
  • The server marks "report_bug" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "log": a word for reading.

    What this check looks for
  • The description is 2,972 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...argets, consensus, quote, key_financials, earnings_documents, …)"

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

40 tools

Deletes or cancels 4Claude Code: deny
  • delete_alertDelete an alert by ID.No findings

    Why it is in this group

    • The name "delete_alert" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete an alert by ID. Args: alert_id: The alert UUID

    Annotations the server declares

    • title: Delete price alert
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_library_folderDelete a library folder and everything inside it.No findings

    Why it is in this group

    • The name "delete_library_folder" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a library folder and everything inside it. Args: folder_id: The folder UUID

    Annotations the server declares

    • title: Delete library folder
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_library_itemDelete a library document and all of its stored versions.No findings

    Why it is in this group

    • The name "delete_library_item" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a library document and all of its stored versions. Args: item_id: The item UUID

    Annotations the server declares

    • title: Delete library item
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_screenerDelete a saved screener by ID.No findings

    Why it is in this group

    • The name "delete_screener" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a saved screener by ID. Args: screener_id: The screener UUID from list_screeners

    Annotations the server declares

    • title: Delete screener
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
Changes things 20Claude Code: ask
  • add_transactionAdd a buy, sell, deposit, withdrawal, dividend, short, or cover to a portfolio.No findings

    Why it is in this group

    • The name "add_transaction" says "add": a word for a change.
    Description, as the server wrote it
    Add a buy, sell, deposit, withdrawal, dividend, short, or cover to a portfolio. A short names the stock. qty is the shares sold short. price is the sale price per share. A cover names the stock. qty is the shares bought back. price is the price per share. Neither uses $CASH. A short while long, a cover larger than the short, a sell larger than the long, and a buy while short come back as the terminal's 400. Do not rewrite that error into a success. A dividend names the stock, not $CASH. qty is the shares, price is the amount per share and must be greater than 0, and date is the pay date. Cash increases on a long and decreases on a short. The share count does not change. The open cost of a long drops by the part still held. A short's open credit shrinks. The closed slice is realized P&L. 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: "buy", "sell", "deposit", "withdrawal", "dividend", "short", or "cover" qty: Number of shares (or cash amount for deposit/withdrawal) price: Price per share, or the dividend amount per share date: Trade date, or the dividend pay date (YYYY-MM-DD)

    Annotations the server declares

    • title: Add portfolio transaction
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_alertCreate a price alert, an event alert, or a clock.No findings

    Why it is in this group

    • The name "create_alert" says "create": a word for a change.
    Description, as the server wrote it
    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", "event", or "schedule" direction: Required for price alerts — "above", "below", or "either" threshold: Required for price alerts — price level or percentage move notes: Optional description. Not the agent instruction. event_types: Required when alert_type is "event". Live-tape ids such as filing_13f, politician_senate, options_unusual, ipo_upcoming. event_filters: Optional slices. Example: {"politician_senate": {"type": ["purchase"]}}. An omitted field matches every value. name: Optional title. Blank is filled from the rule. agent_instruction: What the agent does when this fires. Empty means notify only. max_fires: How many fires before it leaves Active. Omit to keep a repeating alert firing. schedule_at: ISO time. Required when alert_type is "schedule". schedule_tz: IANA zone. UTC when omitted. schedule_repeat: once, daily, weekdays, weekly, or monthly. Default once.

    Annotations the server declares

    • title: Create alert
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_library_folderCreate a library folder, optionally nested under a parent.No findings

    Why it is in this group

    • The name "create_library_folder" says "create": a word for a change.
    Description, as the server wrote it
    Create a library folder, optionally nested under a parent. Args: name: Folder name parent_id: Parent folder UUID (optional — omit for a root folder)

    Annotations the server declares

    • title: Create library folder
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_library_itemCreate a markdown or HTML document in the research library.No findings

    Why it is in this group

    • The name "create_library_item" says "create": a word for a change.
    Description, as the server wrote it
    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 (default) or text/html. HTML is stored as source.

    Annotations the server declares

    • title: Create library item
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_portfolioCreate a portfolio with a name and base currency.No findings

    Why it is in this group

    • The name "create_portfolio" says "create": a word for a change.
    Description, as the server wrote it
    Create a portfolio with a name and base currency. Args: name: Portfolio name currency: Base currency (default USD)

    Annotations the server declares

    • title: Create portfolio
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_screenerSave a screener filter query for scheduled enter/exit (joiner/leaver) notifies.No findings

    Why it is in this group

    • The name "create_screener" says "create": a word for a change.
    Description, as the server wrote it
    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 Settings Screener in & out is on. Args: name: Screener name (blank → derived from filters) query: Filter blob {universe, fmp, metrics, ai, member?, view?} schedule: "off", "daily", or "weekly" (weekly requires Pro) notify_on_change: Notify on enter/exit after the first seed (default true) last_symbols: Current result tickers to seed the enter/exit baseline

    Annotations the server declares

    • title: Create screener
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_watchlistCreate a watchlist with the given name and ticker symbols.No findings

    Why it is in this group

    • The name "create_watchlist" says "create": a word for a change.
    Description, as the server wrote it
    Create a watchlist with the given name and ticker symbols. Args: name: Watchlist name symbols: List of stock symbols (e.g. ["AAPL", "MSFT"])

    Annotations the server declares

    • title: Create watchlist
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • marketing_graphicsAdmin only.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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 formats for that item section: Catalog filter (no content_id) language: Catalog filter format: Catalog filter status: live or draft (catalog only)

    Annotations the server declares

    • title: Marketing graphics
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • marketing_inboxAdmin only.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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 the option you want is already rendered. Args: since: ISO timestamptz — inbox newer than this ticker: Current items for this symbol type: allowlisted content_type or research_drop limit: 1–200 (default 50)

    Annotations the server declares

    • title: Marketing inbox
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • marketing_renderAdmin only.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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_graphics force: Bypass render cache

    Annotations the server declares

    • title: Marketing render
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • move_library_folderMove a library folder under a different parent (or to root).No findings

    Why it is in this group

    • The name "move_library_folder" says "move": a word for a change.
    Description, as the server wrote it
    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)

    Annotations the server declares

    • title: Move library folder
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • move_library_itemMove a library document into a different folder (or to root).No findings

    Why it is in this group

    • The name "move_library_item" says "move": a word for a change.
    Description, as the server wrote it
    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)

    Annotations the server declares

    • title: Move library item
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • rename_library_folderRename a library folder.No findings

    Why it is in this group

    • The name "rename_library_folder" says "rename": a word for a change.
    Description, as the server wrote it
    Rename a library folder. Args: folder_id: The folder UUID name: New folder name

    Annotations the server declares

    • title: Rename library folder
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • report_bugLog a bug in the same inbox as the terminal bug button (5 per user per day).1 finding

    Why it is in this group

    • The description's first verb is "log": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "report_bug" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "log": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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 already a terminal.manawa.app link. Args: description: What is wrong (10–2000 characters) ticker: Optional stock symbol the bug is about section: Optional tab (overview, financials, thesis, valuation, …) page_url: Optional full terminal URL if already known

    Annotations the server declares

    • title: Report a bug
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • run_deepdiveQueue a full DeepDive suite for a stock using a monthly custom-run grant.No findings

    Why it is in this group

    • The name "run_deepdive" says "run": a word for a change.
    Description, as the server wrote it
    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 call returns as soon as the job is queued — do not poll. Args: ticker: Stock symbol (e.g. "AAPL") force: Re-queue every chapter even when a current report exists. Use when on-file content is the wrong instrument (e.g. ZS Thesis written as soybeans).

    Annotations the server declares

    • title: Run DeepDive analysis
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • run_screenerRe-run a saved screener; persist last_symbols; return entered/exited.No findings

    Why it is in this group

    • The name "run_screener" says "run": a word for a change.
    Description, as the server wrote it
    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_screeners

    Annotations the server declares

    • title: Run screener
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • submit_journal_draftSubmit a journal draft for a day.No findings

    Why it is in this group

    • The name "submit_journal_draft" says "submit": a word for a change.
    Description, as the server wrote it
    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 list_journal / get_journal_entry id until then. Args: entry_date: Day the draft is for (YYYY-MM-DD) content: Draft text

    Annotations the server declares

    • title: Submit journal draft
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • update_library_itemUpdate a library document's title and/or content (content edits create a new version).No findings

    Why it is in this group

    • The name "update_library_item" says "update": a word for a change.
    Description, as the server wrote it
    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) content: New markdown or HTML source (optional)

    Annotations the server declares

    • title: Update library item (versioned)
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • update_screenerUpdate a saved screener's name, query, schedule, or baseline symbols.No findings

    Why it is in this group

    • The name "update_screener" says "update": a word for a change.
    Description, as the server wrote it
    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; weekly requires Pro) notify_on_change: Toggle enter/exit notifies (optional) last_symbols: Refresh enter/exit baseline from the live table (optional)

    Annotations the server declares

    • title: Update screener
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • update_watchlistUpdate a watchlist's name and/or symbols.No findings

    Why it is in this group

    • The name "update_watchlist" says "update": a word for a change.
    Description, as the server wrote it
    Update a watchlist's name and/or symbols. Args: watchlist_id: The watchlist UUID name: New name (optional) symbols: Updated list of symbols (optional)

    Annotations the server declares

    • title: Update watchlist
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
Only reads 16Claude Code: allow
  • earnings_ragRetrieve what was said on earnings calls, plus the print and the price move.No findings

    Why it is in this group

    • The description's first verb is "retrieve": a word for reading.
    Description, as the server wrote it
    Retrieve what was said on earnings calls, plus the print and the price move. Use this for one season across several names, or this season versus a prior season. Pass tickers you already have, or a sector label such as Financials or Technology. Banks, insurers, and brokers are Financials. Do not invent symbols. finance_search still answers when a company reports, the Earnings Deep Dive, and a request for the full transcript. Args: question: What to look for in the calls, such as credit costs or guidance. tickers: Symbols to search. Optional when sector is set. sector: SIC sector stored on the chunks, such as Financials or Technology. conference_from: Season start, YYYY-MM-DD, with conference_to. conference_to: Season end, YYYY-MM-DD. compare_from: Prior season start, with compare_to. compare_to: Prior season end. fiscal_year: Fiscal year, with fiscal_quarter, instead of dates. fiscal_quarter: Fiscal quarter 1-4. compare_fiscal_year: Prior fiscal year, with compare_fiscal_quarter. compare_fiscal_quarter: Prior fiscal quarter 1-4. last_n_quarters: Recent calls per ticker, 1-8. Not used with compare. chunks_per_ticker: Excerpts per call, 1-5. Default 3.

    Annotations the server declares

    • title: Search earnings call evidence
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_journal_entryGet a full generated journal entry by ID from list_journal.No findings

    Why it is in this group

    • The name "get_journal_entry" says "get": a word for reading.
    Description, as the server wrote it
    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 id from list_journal (integer or UUID)

    Annotations the server declares

    • title: Get journal entry
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_library_itemGet a library document's metadata and content.No findings

    Why it is in this group

    • The name "get_library_item" says "get": a word for reading.
    Description, as the server wrote it
    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

    Annotations the server declares

    • title: Get library item
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_notificationsGet alert notifications.No findings

    Why it is in this group

    • The name "get_notifications" says "get": a word for reading.
    Description, as the server wrote it
    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 first.

    Annotations the server declares

    • title: Get notifications
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_portfolio_statisticsGet portfolio performance statistics (returns, allocation, risk).No findings

    Why it is in this group

    • The name "get_portfolio_statistics" says "get": a word for reading.
    Description, as the server wrote it
    Get portfolio performance statistics (returns, allocation, risk). gross_exposure and net_exposure are in book currency. A weight may be negative. dividend_income is cash by stock and can be negative when a short owes the dividend. total_gain is unrealized_pnl + realized_pnl. Do not add dividend_income on top of total_gain. Args: portfolio_id: The portfolio UUID

    Annotations the server declares

    • title: Get portfolio statistics
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_positionsGet current holdings with quantity, cost basis, market value, and unrealized P&L.No findings

    Why it is in this group

    • The name "get_positions" says "get": a word for reading.
    Description, as the server wrote it
    Get current holdings with quantity, cost basis, market value, and unrealized P&L. A short has negative shares, a positive avg_cost, a negative total_cost_book (the open credit), and a negative market value. Unrealized profit is positive. Cash includes short proceeds and is reduced when the short owes a dividend. Open cost of a long is already net of dividends still held. Realized P&L from closed longs and shorts is on get_portfolio_statistics. Args: portfolio_id: The portfolio UUID

    Annotations the server declares

    • title: Get portfolio positions
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_alertsList price, event, and clock alerts for the authenticated user.No findings

    Why it is in this group

    • The name "list_alerts" says "list": a word for reading.
    Description, as the server wrote it
    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)

    Annotations the server declares

    • title: List alerts
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_journalList generated daily research journal entries (most recent first).No findings

    Why it is in this group

    • The name "list_journal" says "list": a word for reading.
    Description, as the server wrote it
    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 (default 0) limit: Page size (default 50, max 100). Upstream returns at most 90 days.

    Annotations the server declares

    • title: List journal entries
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_library_foldersList folders in the authenticated user's research library.No findings

    Why it is in this group

    • The name "list_library_folders" says "list": a word for reading.
    Description, as the server wrote it
    List folders in the authenticated user's research library. Args: offset: Skip this many folders (default 0) limit: Page size (default 50, max 100)

    Annotations the server declares

    • title: List library folders
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_library_item_versionsList version history for a library document (newest first).No findings

    Why it is in this group

    • The name "list_library_item_versions" says "list": a word for reading.
    Description, as the server wrote it
    List version history for a library document (newest first). Args: item_id: The item UUID

    Annotations the server declares

    • title: List library item versions
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_library_itemsList documents in a library folder, or at the root if no folder is given.No findings

    Why it is in this group

    • The name "list_library_items" says "list": a word for reading.
    Description, as the server wrote it
    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)

    Annotations the server declares

    • title: List library items
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_portfoliosList the authenticated user's portfolios.No findings

    Why it is in this group

    • The name "list_portfolios" says "list": a word for reading.
    Description, as the server wrote it
    List the authenticated user's portfolios. Args: offset: Skip this many portfolios (default 0) limit: Page size (default 50, max 100)

    Annotations the server declares

    • title: List portfolios
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_screenersList the authenticated user's saved screeners (filter queries + schedule).No findings

    Why it is in this group

    • The name "list_screeners" says "list": a word for reading.
    Description, as the server wrote it
    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)

    Annotations the server declares

    • title: List screeners
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_watchlistsList the authenticated user's watchlists and their symbols.No findings

    Why it is in this group

    • The name "list_watchlists" says "list": a word for reading.
    Description, as the server wrote it
    List the authenticated user's watchlists and their symbols. Args: offset: Skip this many lists (default 0) limit: Page size (default 50, max 100)

    Annotations the server declares

    • title: List watchlists
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • search_libraryFull-text search across the authenticated user's library documents.No findings

    Why it is in this group

    • The name "search_library" says "search": a word for reading.
    Description, as the server wrote it
    Full-text search across the authenticated user's library documents. Args: query: Search terms limit: Max results (default 20, capped at 50)

    Annotations the server declares

    • title: Search research library
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http manawa-terminal https://mcp.manawa.app/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__manawa-terminal__finance_search",
      "mcp__manawa-terminal__earnings_rag",
      "mcp__manawa-terminal__list_watchlists",
      "mcp__manawa-terminal__list_screeners",
      "mcp__manawa-terminal__list_portfolios",
      "mcp__manawa-terminal__get_positions",
      "mcp__manawa-terminal__get_portfolio_statistics",
      "mcp__manawa-terminal__list_alerts",
      "mcp__manawa-terminal__get_notifications",
      "mcp__manawa-terminal__list_library_folders",
      "mcp__manawa-terminal__list_library_items",
      "mcp__manawa-terminal__get_library_item",
      "mcp__manawa-terminal__list_library_item_versions",
      "mcp__manawa-terminal__search_library",
      "mcp__manawa-terminal__list_journal",
      "mcp__manawa-terminal__get_journal_entry"
    ],
    "ask": [
      "mcp__manawa-terminal__create_watchlist",
      "mcp__manawa-terminal__update_watchlist",
      "mcp__manawa-terminal__create_screener",
      "mcp__manawa-terminal__update_screener",
      "mcp__manawa-terminal__run_screener",
      "mcp__manawa-terminal__create_portfolio",
      "mcp__manawa-terminal__add_transaction",
      "mcp__manawa-terminal__create_alert",
      "mcp__manawa-terminal__create_library_folder",
      "mcp__manawa-terminal__rename_library_folder",
      "mcp__manawa-terminal__move_library_folder",
      "mcp__manawa-terminal__create_library_item",
      "mcp__manawa-terminal__update_library_item",
      "mcp__manawa-terminal__move_library_item",
      "mcp__manawa-terminal__submit_journal_draft",
      "mcp__manawa-terminal__run_deepdive",
      "mcp__manawa-terminal__report_bug",
      "mcp__manawa-terminal__marketing_inbox",
      "mcp__manawa-terminal__marketing_graphics",
      "mcp__manawa-terminal__marketing_render"
    ],
    "deny": [
      "mcp__manawa-terminal__delete_screener",
      "mcp__manawa-terminal__delete_alert",
      "mcp__manawa-terminal__delete_library_folder",
      "mcp__manawa-terminal__delete_library_item"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as manawa-terminal. Review it before you use it.