# Sats4AI - Bitcoin-Powered AI Tools (io.github.cnghockey/sats4ai): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/io.github.cnghockey%2Fsats4ai/versions/latest)
- Connected to: https://sats4ai.com/api/mcp
- Repository: https://github.com/cnghockey/sats4ai-mcp-server
- Scoring rules: v2
- Tools: 58
- Average: 61.4 / 100 (Cloudy)
- Near-identical pairs: 2

This page shows how Sats4AI - Bitcoin-Powered AI Tools (io.github.cnghockey/sats4ai)'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: 58 tools. Above 40, models choose less accurately.

## Tools

- `end_voice_bridge`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: sessionId. Name the tool or the place that returns it, or models look it up first.
- `analyze_image`: 45 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `upscale_image`: 46 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `extract_document`: 48 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `get_model_pricing`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: modelId. Name the tool or the place that returns it, or models look it up first.
- `remove_background`: 48 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Major: It may be destructive, but destructiveHint is not set.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `restore_face`: 48 / 100
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `detect_objects`: 50 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `colorize_image`: 51 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `generate_text`: 51 / 100
  - Minor: String arguments with no constraint or example: systemPrompt.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `boardingpass_wallet`: 52 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `receive_fax`: 52 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `animate_image`: 53 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `remove_object`: 53 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Major: It may be destructive, but destructiveHint is not set.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `e_signature`: 54 / 100
  - Minor: Arguments without a description: signers[].name, signers[].email.
  - Minor: String arguments with no constraint or example: signers[].name, signers[].email.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `detect_nsfw`: 55 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `extract_receipt`: 55 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `generate_3d_model`: 55 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `vote_on_service`: 55 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `estimate_depth`: 56 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `generate_image`: 56 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `deblur_image`: 57 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `edit_image`: 57 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `await_result`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
- `create_payment`: 59 / 100
- `clone_voice`: 60 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `convert_file`: 60 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `get_cost_estimate`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `send_email`: 60 / 100
  - Minor: String arguments with no constraint or example: to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `generate_video`: 61 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `multilingual_ask`: 61 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `list_planned_services`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
- `transcribe_translate`: 62 / 100
  - Minor: String arguments with no constraint or example: audioBase64.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `render_card`: 63 / 100
  - Minor: Arguments without a description: theme.background, theme.foreground, theme.accent, theme.muted.
  - Minor: String arguments with no constraint or example: theme.background, theme.foreground, theme.accent, theme.muted.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `translate_epub`: 63 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `epub_to_audiobook`: 64 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `confirm_ai_call`: 65 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: sessionId. Name the tool or the place that returns it, or models look it up first.
- `poll_voice_bridge`: 65 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: sessionId. Name the tool or the place that returns it, or models look it up first.
- `convert_html_to_pdf`: 66 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `send_fax`: 66 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `check_payment_status`: 67 / 100
- `list_models`: 67 / 100
- `merge_pdfs`: 68 / 100
- `translate_text`: 68 / 100
  - Minor: String arguments with no constraint or example: text.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `voice_bridge_say`: 68 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: sessionId. Name the tool or the place that returns it, or models look it up first.
- `generate_music`: 70 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `place_call`: 70 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `send_sms`: 70 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `translate_rare_language`: 70 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `transcribe_audio`: 71 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `text_to_speech`: 73 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `create_cart`: 76 / 100
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_error_codes`: 77 / 100
- `request_refund`: 78 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: paymentId. Name the tool or the place that returns it, or models look it up first.
- `get_job_result`: 79 / 100
- `check_job_status`: 81 / 100
- `ai_call`: 83 / 100
  - Minor: The description is long (475 words). It helps selection but costs steps and tokens.
- `open_voice_bridge`: 84 / 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)
