# Spoolis (com.spoolis/mcp): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/com.spoolis%2Fmcp/versions/latest)
- Connected to: https://spoolis.com/api/mcp
- Homepage: https://spoolis.com/docs/mcp
- Scoring rules: v2
- Tools: 32
- Average: 47.6 / 100 (Cloudy)
- Near-identical pairs: 10

This page shows how Spoolis (com.spoolis/mcp)'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

- Minor: 32 tools. Above 25, models start to tell tools apart less well.

## Tools

- `open_dispute`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: receipt_id, scope, scope.kind, scope.units, scope.kind, reason, counter_evidence, counter_evidence[].type, counter_evidence[].value.
  - Minor: String arguments with no constraint or example: scope.kind, scope.kind.
  - 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: receipt_id. Name the tool or the place that returns it, or models look it up first.
- `add_source`: 36 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: kind, name, config, auth, auth.kind, auth.secret_ref, deletion_semantics, correction_semantics, schema_version, spool_id.
  - Minor: String arguments with no constraint or example: auth.secret_ref.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `amend_spool`: 39 / 100
  - Major: Arguments without a description: id, add_conditions, add_conditions[].description, add_conditions[].required, add_conditions[].verification_method, add_conditions[].deterministic_check, add_conditions[].evidence_requirements, add_conditions[].evidence_requirements[].id, add_conditions[].evidence_requirements[].expected_type, add_conditions[].evidence_requirements[].source, add_conditions[].evidence_requirements[].source.ref, add_conditions[].evidence_requirements[].source.description, add_conditions[].evidence_requirements[].provenance, add_conditions[].evidence_requirements[].provenance.min_class, add_conditions[].evidence_requirements[].provenance.independent_of, add_conditions[].evidence_requirements[].who_may_supply, add_conditions[].evidence_requirements[].freshness_seconds, add_conditions[].evidence_requirements[].on_missing, add_conditions[].external_judge, add_conditions[].external_judge.evaluator_id, add_conditions[].external_judge.kind, add_conditions[].external_judge.evaluator_version, add_conditions[].external_judge.proof_requirement, add_conditions[].external_judge.on_missing, add_conditions[].external_judge.public_key, add_conditions[].external_judge.score_mapping, add_conditions[].external_judge.score_mapping.schema_id, add_conditions[].external_judge.score_mapping.quality_gte, add_conditions[].external_judge.score_mapping.consensus_gte, remove_condition_ids, unitization, unitization.total_units, unitization.unit_amount_cents, unitization.identity, unitization.identity.key, unitization.identity.visibility.
  - Minor: String arguments with no constraint or example: add_conditions[].evidence_requirements[].source.description.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument add_conditions[].required is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `decide_review`: 42 / 100
  - Major: Arguments without a description: review_id, verdict, reason, counter_evidence, counter_evidence[].type, counter_evidence[].value.
  - 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: review_id. Name the tool or the place that returns it, or models look it up first.
- `propose_spool`: 42 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `run_matching`: 42 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `submit_evidence`: 42 / 100
  - Major: Arguments without a description: id, condition_id, type, source, on_behalf_of, provenance, claim_class, metadata.
  - 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: id, condition_id. Name the tool or the place that returns it, or models look it up first.
- `abandon_spool`: 44 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_receipt_status`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: receipt_id.
  - Minor: Required identifiers whose description does not say where the value comes from: receipt_id. Name the tool or the place that returns it, or models look it up first.
- `run_sandbox_scenario`: 44 / 100
  - Major: Arguments without a description: scenario, seed, record_count, defect_rate, adversarial_case_count, modeled_cost_per_unit.
  - Minor: Says nothing about what it returns.
- `get_dispute`: 45 / 100
  - Major: Arguments without a description: dispute_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: dispute_id. Name the tool or the place that returns it, or models look it up first.
- `get_review`: 45 / 100
  - Major: Arguments without a description: review_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: review_id. Name the tool or the place that returns it, or models look it up first.
- `get_spool`: 45 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_spool_events`: 45 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_discrepancies`: 45 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_facts`: 45 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_matches`: 45 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `resolve_discrepancy`: 45 / 100
  - Major: Arguments without a description: discrepancy_id, outcome, resolved_by, superseding_receipt_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: discrepancy_id. Name the tool or the place that returns it, or models look it up first.
- `sync_source`: 45 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `request_review`: 46 / 100
  - Major: Arguments without a description: receipt_id, scope, scope.kind, scope.units, scope.kind, reviewer, reviewer.subject, reviewer.role, reviewer.display_name, reviewer.email, deadline_at, on_timeout.
  - Minor: String arguments with no constraint or example: scope.kind, scope.kind.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: receipt_id. Name the tool or the place that returns it, or models look it up first.
- `accept_spool`: 47 / 100
  - Major: Arguments without a description: id, quote_digest.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `decline_spool`: 47 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `open_discrepancy`: 51 / 100
  - Major: Arguments without a description: id, receipt_id, unit, kind, expected, observed, explanation, links, links.review_request_id, links.dispute_id, links.match_ids, sandbox_session_id.
  - Minor: String arguments with no constraint or example: sandbox_session_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `cancel_spool`: 52 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `commit_payment`: 55 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `compile_spool`: 56 / 100
  - Major: Arguments without a description: source.
- `verify_spool`: 56 / 100
  - Major: Arguments without a description: id, confirmations, confirmations[].condition_id, confirmations[].method, confirmations[].outcome, confirmations[].evidence_refs, confirmations[].detail.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `complete_spool`: 57 / 100
  - Major: Arguments without a description: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `verify_result`: 57 / 100
  - Major: Arguments without a description: gated_action, gated_action_note, conditions, recipe, recipe.slug, recipe.hash, max_amount_cents, unit, unit.total_units, unit.unit_amount_cents, unit.identity, unit.identity.key, unit.identity.visibility, evidence, evidence.type, evidence.rows, evidence.payload, evidence.provenance, settlement, idempotency_key.
- `create_counterparty_invite`: 60 / 100
  - Major: Arguments without a description: id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_sources`: 60 / 100
  - Minor: Says nothing about what it returns.
- `create_spool`: 64 / 100
  - Major: Arguments without a description: gated_action, gated_action_note, agreement, agreement.mode, type, parties, parties[].role, parties[].kind, parties[].display_name, parties[].contact, parties[].account_id, parties[].settlement_address, parties[].stripe_account_id, value, value.amount_cents, value.currency, value.rail_preference, deliverable, deliverable.type, deliverable.title, deliverable.description, deliverable.attributes, terms, terms[].text, terms[].provenance, terms[].provenance.source, terms[].provenance.source_ref, terms[].provenance.origin, conditions, conditions[].description, conditions[].required, conditions[].verification_method, conditions[].deterministic_check, conditions[].evidence_requirements, conditions[].evidence_requirements[].id, conditions[].evidence_requirements[].expected_type, conditions[].evidence_requirements[].source, conditions[].evidence_requirements[].source.ref, conditions[].evidence_requirements[].source.description, conditions[].evidence_requirements[].provenance, conditions[].evidence_requirements[].provenance.min_class, conditions[].evidence_requirements[].provenance.independent_of, conditions[].evidence_requirements[].who_may_supply, conditions[].evidence_requirements[].freshness_seconds, conditions[].evidence_requirements[].on_missing, conditions[].external_judge, conditions[].external_judge.evaluator_id, conditions[].external_judge.kind, conditions[].external_judge.evaluator_version, conditions[].external_judge.proof_requirement, conditions[].external_judge.on_missing, conditions[].external_judge.public_key, conditions[].external_judge.score_mapping, conditions[].external_judge.score_mapping.schema_id, conditions[].external_judge.score_mapping.quality_gte, conditions[].external_judge.score_mapping.consensus_gte, economics, economics.fee_cents, economics.expiry, economics.unitization, economics.unitization.total_units, economics.unitization.unit_amount_cents, economics.unitization.identity, economics.unitization.identity.key, economics.unitization.identity.visibility, economics.capture_policy, economics.capture_policy.auto_capture, dispute_policy, dispute_policy.who_may_dispute, dispute_policy.window_seconds, dispute_policy.scope, dispute_policy.on_dispute, dispute_policy.new_evidence, dispute_policy.escalation, dispute_policy.finality, finality, finality.window, finality.window.after, finality.window.duration_iso8601, finality.reopen, finality.reopen.allowed, finality.reopen.by, finality.reopen.until, finality.correction, finality.correction.allowed, finality.correction.requires_authority, finality.on_silence.
  - Minor: String arguments with no constraint or example: value.currency, deliverable.description, conditions[].evidence_requirements[].source.description.
  - Minor: The meaning of the boolean argument conditions[].required is unclear.
  - Minor: The meaning of the boolean argument finality.reopen.allowed is unclear.
  - Minor: The meaning of the boolean argument finality.correction.allowed is unclear.
  - Minor: The meaning of the boolean argument finality.correction.requires_authority is unclear.

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)
