Finance Search
Registry code: f2cede59498beffd
You are connected to the Manawa Finance MCP server.
1. VERBATIM QUERIES: When calling finance_search, pass the user's EXACT question
- endpoint
- https://mcp.manawa.app/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is Finance Search live?
- Yes — it answered the hub's last check (checked 47m ago). It answered 100% of checks over the last 30 days.
- Is Finance Search free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does Finance Search have?
- 34 tools: marketing_graphics, marketing_inbox, create_watchlist, update_watchlist, add_transaction, create_alert, delete_library_folder, delete_library_item, ….
- Is Finance Search safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.4%· all time 99.4%
last good check
of 34 tools
- degraded → live
- live → degraded· fetch failed
- degraded → live
- degraded → live
- live → degraded· timeout after 20000ms
- used for
- search financial data and earnings
- manage stock portfolios
- create price alerts
- create a watchlist
- read daily research journal
- takes → gives
- text → data, text
- tools
- 11 reads13 changes data1 sends messages
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
marketing_graphics auth-required 5d ago
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)
{ "type": "object", "title": "marketing_graphicsArguments", "properties": { "format": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Format", "default": null }, "status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Status", "default": null }, "section": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Section", "default": null }, "language": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Language", "default": null }, "content_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Content Id", "default": null } } }arguments 66 linesmarketing_inbox reads auth-required 5d ago
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)
{ "type": "object", "title": "marketing_inboxArguments", "properties": { "type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Type", "default": null }, "limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Limit", "default": null }, "since": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Since", "default": null }, "ticker": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ticker", "default": null } } }arguments 54 linescreate_watchlist changes data auth-required never probed
Create a watchlist with the given name and ticker symbols. Args: name: Watchlist name symbols: List of stock symbols (e.g. ["AAPL", "MSFT"])
{ "type": "object", "title": "create_watchlistArguments", "required": [ "name", "symbols" ], "properties": { "name": { "type": "string", "title": "Name" }, "symbols": { "type": "array", "items": { "type": "string" }, "title": "Symbols" } } }arguments 21 linesupdate_watchlist auth-required never probed
Update a watchlist's name and/or symbols. Args: watchlist_id: The watchlist UUID name: New name (optional) symbols: Updated list of symbols (optional)
{ "type": "object", "title": "update_watchlistArguments", "required": [ "watchlist_id" ], "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name", "default": null }, "symbols": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "null" } ], "title": "Symbols", "default": null }, "watchlist_id": { "type": "string", "title": "Watchlist Id" } } }arguments 40 linesadd_transaction changes data auth-required never probed
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: "buy", "sell", "deposit", or "withdrawal" qty: Number of shares (or cash amount for deposit/withdrawal) price: Price per share date: Transaction date (YYYY-MM-DD)
{ "type": "object", "title": "add_transactionArguments", "required": [ "portfolio_id", "symbol", "side", "qty", "price", "date" ], "properties": { "qty": { "type": "number", "title": "Qty" }, "date": { "type": "string", "title": "Date" }, "side": { "type": "string", "title": "Side" }, "price": { "type": "number", "title": "Price" }, "symbol": { "type": "string", "title": "Symbol" }, "portfolio_id": { "type": "string", "title": "Portfolio Id" } } }arguments 38 linescreate_alert changes data auth-required never probed
Create a price or event alert for a symbol. Args: symbol: Stock symbol (e.g. "AAPL") alert_type: "target_price", "movement_pct", or "event" direction: Required for price alerts — "above", "below", or "either" threshold: Required for price alerts — price level or percentage move notes: Optional description event_types: Required when alert_type is "event". One or more of: "earnings_transcript", "insider_trade", "news_stock", "press_release", "filing_8k", "filing_13f", "politician_senate", "politician_house", "merger_acquisition"
{ "type": "object", "title": "create_alertArguments", "required": [ "symbol", "alert_type" ], "properties": { "notes": { "type": "string", "title": "Notes", "default": "" }, "symbol": { "type": "string", "title": "Symbol" }, "direction": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Direction", "default": null }, "threshold": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Threshold", "default": null }, "alert_type": { "type": "string", "title": "Alert Type" }, "event_types": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "null" } ], "title": "Event Types", "default": null } } }arguments 62 linesdelete_library_folder auth-required never probed
Delete a library folder and everything inside it. Args: folder_id: The folder UUID
{ "type": "object", "title": "delete_library_folderArguments", "required": [ "folder_id" ], "properties": { "folder_id": { "type": "string", "title": "Folder Id" } } }arguments 13 linesdelete_library_item changes data auth-required never probed
Delete a library document and all of its stored versions. Args: item_id: The item UUID
{ "type": "object", "title": "delete_library_itemArguments", "required": [ "item_id" ], "properties": { "item_id": { "type": "string", "title": "Item Id" } } }arguments 13 linessubmit_journal_draft changes data auth-required never probed
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
{ "type": "object", "title": "submit_journal_draftArguments", "required": [ "entry_date", "content" ], "properties": { "content": { "type": "string", "title": "Content" }, "entry_date": { "type": "string", "title": "Entry Date" } } }arguments 18 linesmove_library_item auth-required never probed
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)
{ "type": "object", "title": "move_library_itemArguments", "required": [ "item_id" ], "properties": { "item_id": { "type": "string", "title": "Item Id" }, "folder_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Folder Id", "default": null } } }arguments 25 lineslist_journal reads auth-required 24h ago
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.
{ "type": "object", "title": "list_journalArguments", "properties": { "limit": { "type": "integer", "title": "Limit", "default": 50 }, "offset": { "type": "integer", "title": "Offset", "default": 0 } } }arguments 16 linesreport_bug sends messages auth-required never probed
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
{ "type": "object", "title": "report_bugArguments", "required": [ "description" ], "properties": { "ticker": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ticker", "default": null }, "section": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Section", "default": null }, "page_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Page Url", "default": null }, "description": { "type": "string", "title": "Description" } } }arguments 49 linescreate_portfolio changes data auth-required never probed
Create a portfolio with a name and base currency. Args: name: Portfolio name currency: Base currency (default USD)
{ "type": "object", "title": "create_portfolioArguments", "required": [ "name" ], "properties": { "name": { "type": "string", "title": "Name" }, "currency": { "type": "string", "title": "Currency", "default": "USD" } } }arguments 18 linesdelete_alert changes data auth-required never probed
Delete an alert by ID. Args: alert_id: The alert UUID
{ "type": "object", "title": "delete_alertArguments", "required": [ "alert_id" ], "properties": { "alert_id": { "type": "string", "title": "Alert Id" } } }arguments 13 linesmove_library_folder changes data auth-required never probed
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)
{ "type": "object", "title": "move_library_folderArguments", "required": [ "folder_id" ], "properties": { "folder_id": { "type": "string", "title": "Folder Id" }, "parent_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Parent Id", "default": null } } }arguments 25 linescreate_library_item auth-required never probed
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.
{ "type": "object", "title": "create_library_itemArguments", "required": [ "title", "content" ], "properties": { "title": { "type": "string", "title": "Title" }, "content": { "type": "string", "title": "Content" }, "folder_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Folder Id", "default": null }, "content_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Content Type", "default": null } } }arguments 42 linesupdate_library_item changes data auth-required never probed
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)
{ "type": "object", "title": "update_library_itemArguments", "required": [ "item_id" ], "properties": { "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title", "default": null }, "content": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Content", "default": null }, "item_id": { "type": "string", "title": "Item Id" } } }arguments 37 linesrun_deepdive changes data auth-required never probed
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).
{ "type": "object", "title": "run_deepdiveArguments", "required": [ "ticker" ], "properties": { "force": { "type": "boolean", "title": "Force", "default": false }, "ticker": { "type": "string", "title": "Ticker" } } }arguments 18 linesget_notifications reads auth-required 17h ago
Get recent triggered alert notifications. Args: offset: Skip this many notifications (default 0) limit: Page size (default 50, max 100). Upstream returns at most 50 unread.
{ "type": "object", "title": "get_notificationsArguments", "properties": { "limit": { "type": "integer", "title": "Limit", "default": 50 }, "offset": { "type": "integer", "title": "Offset", "default": 0 } } }arguments 16 linescreate_library_folder changes data auth-required never probed
Create a library folder, optionally nested under a parent. Args: name: Folder name parent_id: Parent folder UUID (optional — omit for a root folder)
{ "type": "object", "title": "create_library_folderArguments", "required": [ "name" ], "properties": { "name": { "type": "string", "title": "Name" }, "parent_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Parent Id", "default": null } } }arguments 25 linesrename_library_folder changes data auth-required never probed
Rename a library folder. Args: folder_id: The folder UUID name: New folder name
{ "type": "object", "title": "rename_library_folderArguments", "required": [ "folder_id", "name" ], "properties": { "name": { "type": "string", "title": "Name" }, "folder_id": { "type": "string", "title": "Folder Id" } } }arguments 18 linesmarketing_render changes data auth-required never probed
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
{ "type": "object", "title": "marketing_renderArguments", "required": [ "content_id", "option_id" ], "properties": { "force": { "type": "boolean", "title": "Force", "default": false }, "option_id": { "type": "string", "title": "Option Id" }, "content_id": { "type": "string", "title": "Content Id" } } }arguments 23 linesget_positions reads auth-required 9h ago
Get current holdings with quantity, cost basis, market value, and unrealized P&L. Args: portfolio_id: The portfolio UUID
{ "type": "object", "title": "get_positionsArguments", "required": [ "portfolio_id" ], "properties": { "portfolio_id": { "type": "string", "title": "Portfolio Id" } } }arguments 13 lineslist_library_item_versions auth-required 21h ago
List version history for a library document (newest first). Args: item_id: The item UUID
{ "type": "object", "title": "list_library_item_versionsArguments", "required": [ "item_id" ], "properties": { "item_id": { "type": "string", "title": "Item Id" } } }arguments 13 lineslist_portfolios reads auth-required 17h ago
List the authenticated user's portfolios. Args: offset: Skip this many portfolios (default 0) limit: Page size (default 50, max 100)
{ "type": "object", "title": "list_portfoliosArguments", "properties": { "limit": { "type": "integer", "title": "Limit", "default": 50 }, "offset": { "type": "integer", "title": "Offset", "default": 0 } } }arguments 16 linesget_library_item auth-required 17h ago
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
{ "type": "object", "title": "get_library_itemArguments", "required": [ "item_id" ], "properties": { "item_id": { "type": "string", "title": "Item Id" } } }arguments 13 lineslist_library_items reads auth-required 24h ago
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)
{ "type": "object", "title": "list_library_itemsArguments", "properties": { "limit": { "type": "integer", "title": "Limit", "default": 50 }, "offset": { "type": "integer", "title": "Offset", "default": 0 }, "folder_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Folder Id", "default": null } } }arguments 28 lineslist_watchlists reads auth-required 13h ago
List the authenticated user's watchlists and their symbols. Args: offset: Skip this many lists (default 0) limit: Page size (default 50, max 100)
{ "type": "object", "title": "list_watchlistsArguments", "properties": { "limit": { "type": "integer", "title": "Limit", "default": 50 }, "offset": { "type": "integer", "title": "Offset", "default": 0 } } }arguments 16 linesget_portfolio_statistics reads auth-required 13h ago
Get portfolio performance statistics (returns, allocation, risk). Args: portfolio_id: The portfolio UUID
{ "type": "object", "title": "get_portfolio_statisticsArguments", "required": [ "portfolio_id" ], "properties": { "portfolio_id": { "type": "string", "title": "Portfolio Id" } } }arguments 13 linesfinance_search reads auth-required 21h ago
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 portfolio, call list_watchlists or list_portfolios first, then pass the symbols here with filter criteria in `query`. Exclusive modes when a Deep Dive exists: focus=ai + section=… → narrative section focus=raw + source=… → thin data slice focus=catalog → list available Deep Dives Args: query: The user's financial question symbols: Optional ticker universe to screen (e.g. from list_watchlists) section: Optional Deep Dive section (competition, valuation, thesis, forecast, analyst_consensus, people, financials, earnings, technicals, overview, moves, markets, flow, calendar, catalysts, odds) or raw tapes: options, buzz, acceleration, heatmap. Thesis is section=thesis and opens /stock/T/thesis. Business is section=competition (/stock/T/competition). Price is /stock/T/overview; Large Moves on that tab are section=moves. Forecast narrative is section=forecast (/stock/T/analysis). Street targets and stance are section=analyst_consensus (/stock/T/valuation). Dividends, buybacks, and the alignment / allocation boxes are section=financials. There is no Capital section. Buzz, social media, reddit, twitter, sentiment, or what people are talking about MUST be section=buzz. Do not send those to news or catalysts. Consumer sentiment and analyst sentiment are not Buzz. Stocks accelerating, price acceleration, speeding up, or speeding down MUST be section=acceleration. Do not send those to movers. Revenue, earnings, and growth acceleration are not this board. Advance/decline, names within 10% of the 52-week high or low, or the market P/S, P/E, and P/FCF medians MUST be section=heatmap. Do not send those to the sector treemap. One company's P/E is not this row. A press release, presentation, 10-Q, or 10-K for one ticker is section=earnings, focus=raw, source=earnings_documents. That is not the Earnings write-up. focus: Optional exclusive mode: ai | raw | auto | catalog source: Optional thin raw slice when focus=raw (comparison_peers, price_targets, consensus, quote, key_financials, earnings_documents, …)
{ "type": "object", "title": "finance_searchArguments", "required": [ "query" ], "properties": { "focus": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Focus", "default": null }, "query": { "type": "string", "title": "Query" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source", "default": null }, "section": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Section", "default": null }, "symbols": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "null" } ], "title": "Symbols", "default": null } } }arguments 64 linessearch_library auth-required 13h ago
Full-text search across the authenticated user's library documents. Args: query: Search terms limit: Max results (default 20, capped at 50)
{ "type": "object", "title": "search_libraryArguments", "required": [ "query" ], "properties": { "limit": { "type": "integer", "title": "Limit", "default": 20 }, "query": { "type": "string", "title": "Query" } } }arguments 18 lineslist_alerts auth-required 6h ago
List active price and event alerts for the authenticated user. Args: offset: Skip this many alerts (default 0) limit: Page size (default 50, max 100)
{ "type": "object", "title": "list_alertsArguments", "properties": { "limit": { "type": "integer", "title": "Limit", "default": 50 }, "offset": { "type": "integer", "title": "Offset", "default": 0 } } }arguments 16 lineslist_library_folders reads auth-required 24h ago
List folders in the authenticated user's research library. Args: offset: Skip this many folders (default 0) limit: Page size (default 50, max 100)
{ "type": "object", "title": "list_library_foldersArguments", "properties": { "limit": { "type": "integer", "title": "Limit", "default": 50 }, "offset": { "type": "integer", "title": "Offset", "default": 0 } } }arguments 16 linesget_journal_entry reads auth-required 21h ago
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)
{ "type": "object", "title": "get_journal_entryArguments", "required": [ "entry_id" ], "properties": { "entry_id": { "type": "string", "title": "Entry Id" } } }arguments 13 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idf2cede59498beffd.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/f2cede59498beffd/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/f2cede59498beffd?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.