# Otto Intel (services.ottoai/otto): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/services.ottoai%2Fotto/versions/latest)
- Connected to: https://mcp.ottoai.services/mcp
- Homepage: https://docs.useotto.xyz/
- Scoring rules: v2
- Tools: 48
- Average: 67.7 / 100 (Cloudy)
- Near-identical pairs: 14

This page shows how Otto Intel (services.ottoai/otto)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 48 tools. Above 40, models choose less accurately.
- Minor: 14 pairs with nearly the same description in all; the top 12 are shown.
- Critical: These tools share the same description: otto_muse_autopay_availability, otto_muse_autopay_prepare, otto_muse_autopay_enroll, otto_muse_autopay_status, otto_muse_autopay_revoke.

## Tools

- `otto_muse_autopay_status`: 46 / 100
  - Minor: Arguments without a description: wallet, operationId.
  - Minor: String arguments with no constraint or example: wallet, operationId.
  - Minor: No `required` list, so every argument is optional.
- `otto_muse_autopay_sign`: 48 / 100
  - Minor: Arguments without a description: arguments.
  - Minor: String arguments with no constraint or example: validAfter.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: operationId. Name the tool or the place that returns it, or models look it up first.
- `otto_token_security`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `otto_muse_autopay_revoke`: 51 / 100
  - Minor: No `required` list, so every argument is optional.
- `otto_crypto_news`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `otto_muse_autopay_enroll`: 54 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: enrollmentId. Name the tool or the place that returns it, or models look it up first.
- `otto_muse_autopay_prepare`: 54 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `otto_tokenized_stock_movers`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `otto_prepare_bridge`: 58 / 100
  - Major: Arguments without a description: accountProfile, accountProfile.kind, accountProfile.address, accountProfile.chainId, fromChainId, toChainId, slippage, slippage.maxBps, slippage.minAmountOut, client_ref.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: fromChainId, toChainId. Name the tool or the place that returns it, or models look it up first.
- `otto_prepare_swap`: 58 / 100
  - Major: Arguments without a description: accountProfile, accountProfile.kind, accountProfile.address, accountProfile.chainId, chainId, slippage, slippage.maxBps, slippage.minAmountOut, client_ref.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `otto_base_season`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `otto_news_recaps`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `otto_pm_crypto`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `otto_pm_markets`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `otto_rh_season`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `otto_delegation_fence_status`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_lp_collect_userop`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_native_yield_userop`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_muse_autopay_availability`: 61 / 100
- `otto_catalog`: 64 / 100
- `otto_tokenized_equities`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `otto_equity_intel`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_equity_smart_money`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_equity_smart_money_brief`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_insider_trades`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_institutional_holdings`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `otto_earnings_calendar`: 70 / 100
  - Minor: Says nothing about what it returns.
- `otto_equity_news`: 70 / 100
  - Minor: Says nothing about what it returns.
- `otto_pools_search`: 72 / 100
- `otto_prepare_polymarket_order`: 72 / 100
  - Major: Arguments without a description: accountProfile, accountProfile.kind, accountProfile.address, accountProfile.chainId, side, client_ref.
  - Minor: Required identifiers whose description does not say where the value comes from: tokenId. Name the tool or the place that returns it, or models look it up first.
- `otto_prepare_yield_withdraw`: 72 / 100
  - Major: Arguments without a description: accountProfile, accountProfile.kind, accountProfile.address, accountProfile.chainId, executableMarketId, registryCommitment, shares, slippage, slippage.maxBps, client_ref.
- `otto_delegation_cap`: 75 / 100
- `otto_prepare_yield_deposit`: 76 / 100
  - Major: Arguments without a description: accountProfile, accountProfile.kind, accountProfile.address, accountProfile.chainId, slippage, slippage.maxBps, client_ref.
- `otto_delegation_reconcile`: 77 / 100
- `otto_financial_statements`: 77 / 100
- `otto_material_events`: 77 / 100
- `otto_proposed_insider_sales`: 77 / 100
- `otto_stock_pools`: 77 / 100
- `otto_stock_token_quote`: 77 / 100
- `otto_x_recipes`: 77 / 100
- `otto_delegation_revoke`: 78 / 100
- `otto_delegation_operations`: 80 / 100
- `otto_prepare_stock_buy`: 81 / 100
  - Major: Arguments without a description: accountProfile, accountProfile.kind, accountProfile.address, accountProfile.chainId, slippage, slippage.maxBps, client_ref.
- `otto_sponsored_account`: 82 / 100
- `otto_delegation_exit`: 85 / 100
- `otto_delegation_fence`: 87 / 100
- `otto_submit_under_delegation`: 87 / 100
- `otto_delegation_status`: 95 / 100

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
