# 2ools (app.2ools/mcp): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/app.2ools%2Fmcp/versions/latest)
- Connected to: https://2ools.app/mcp
- Homepage: https://2ools.app/connect-ai
- Repository: https://github.com/2ools/mcp-server
- Scoring rules: v2
- Tools: 81
- Average: 47.3 / 100 (Cloudy)
- Near-identical pairs: 1

This page shows how 2ools (app.2ools/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

- Major: 81 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 2961 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `remove_project_pin`: 24 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, pin_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, pin_id. Name the tool or the place that returns it, or models look it up first.
- `resolve_project_feedback`: 25 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, feedback_id, resolved.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument resolved is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, feedback_id. Name the tool or the place that returns it, or models look it up first.
- `list_project_pins`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `claim_work_assignment`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: assignment_id, input_refs, input_refs[].kind, input_refs[].id, input_refs[].artifact_id, input_refs[].label, idempotency_key.
  - 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: assignment_id. Name the tool or the place that returns it, or models look it up first.
- `get_artifact`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, artifact_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, artifact_id. Name the tool or the place that returns it, or models look it up first.
- `heartbeat_work_session`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: session_id, used_steps, used_spend_cents, checkpoint, effect_state, input_tokens, cached_input_tokens, output_tokens, model_calls, remaining_context_tokens, context_signal_kind, context_signal_label, request_handoff, handoff_reason, handoff_idempotency_key.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument request_handoff is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: session_id. Name the tool or the place that returns it, or models look it up first.
- `list_artifacts`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `prepare_work_handoff`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: session_id, signal_kind, signal_label, remaining_context_tokens, request_handoff, reason, idempotency_key.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument request_handoff is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: session_id. Name the tool or the place that returns it, or models look it up first.
- `revoke_version_share_link`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, version_id, idempotency_key.
  - 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: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `update_account_profile`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: username, display_name, job_title, bio, website, profile_use_cases, timezone, locale, default_location, preferred_audience.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `create_work_assignment`: 33 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, title, brief, acceptance_criteria, dependency_ids, required_evidence_kinds, priority, continuation_mode, max_steps, max_minutes, max_spend_cents, max_tokens, output_surfaces, quality_gate_policy, quality_gate_policy.required_checks, quality_gate_policy.max_evidence_age_minutes, quality_gate_policy.expected_routes, quality_gate_policy.human_visual_review_required, due_at, idempotency_key.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument quality_gate_policy.human_visual_review_required is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `add_project_pin`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, version_id, kind, url, label, x, y, surface.
  - 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: project_id. Name the tool or the place that returns it, or models look it up first.
- `approve_artifact_version`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: request_id, note.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: request_id. Name the tool or the place that returns it, or models look it up first.
- `reject_artifact_version`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: request_id, note.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: request_id. Name the tool or the place that returns it, or models look it up first.
- `review_project_mission`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, change.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `run_task_quality_gate`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: change.
  - Minor: Says nothing about what it returns.
- `list_artifact_approval_requests`: 37 / 100
  - Major: Arguments without a description: project_id, status.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `manage_project_discipline`: 37 / 100
  - Major: Arguments without a description: project_id, change.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `update_project_mission`: 38 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, change.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `add_project_feedback`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, version_id, page, label, comment.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `get_version_share_link`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, version_id, page.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `get_work_handoff`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: assignment_id.
  - Minor: Required identifiers whose description does not say where the value comes from: assignment_id. Name the tool or the place that returns it, or models look it up first.
- `list_work_assignments`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, status.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `act_on_project_os_task`: 40 / 100
  - Major: Arguments without a description: project_id, change.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `decide_work_assignment`: 40 / 100
  - Major: Arguments without a description: assignment_id, decision, note, idempotency_key.
  - 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: assignment_id. Name the tool or the place that returns it, or models look it up first.
- `create_version_share_link`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, version_id, access, page, idempotency_key.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_mission`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id, view, limit, cursor.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `submit_work_session`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: session_id, output_refs, output_refs[].kind, output_refs[].id, output_refs[].artifact_id, output_refs[].label, result_summary, used_steps, used_spend_cents, input_tokens, cached_input_tokens, output_tokens, model_calls, idempotency_key.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: session_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_access`: 43 / 100
  - Major: Arguments without a description: project_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `manage_work_watchdog`: 43 / 100
  - Major: Arguments without a description: project_id, change.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `get_task_quality_gate`: 44 / 100
  - Major: Arguments without a description: assignment_id.
  - Minor: Required identifiers whose description does not say where the value comes from: assignment_id. Name the tool or the place that returns it, or models look it up first.
- `prepare_artifact_download`: 44 / 100
  - Major: Arguments without a description: project_id, artifact_id, artifact_version_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, artifact_id, artifact_version_id. Name the tool or the place that returns it, or models look it up first.
- `prepare_version_export`: 44 / 100
  - Major: Arguments without a description: project_id, version_id.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `update_project_member_role`: 44 / 100
  - Major: Arguments without a description: project_id, member_id, role.
  - 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: project_id, member_id. Name the tool or the place that returns it, or models look it up first.
- `checkpoint_work_session`: 45 / 100
  - Major: Arguments without a description: session_id, checkpoint, disposition, reason, waiting_for, effect_state, used_steps, used_spend_cents, input_tokens, cached_input_tokens, output_tokens, model_calls, idempotency_key.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: session_id. Name the tool or the place that returns it, or models look it up first.
- `revoke_project_invite`: 45 / 100
  - Minor: Arguments without a description: invite_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: invite_id. Name the tool or the place that returns it, or models look it up first.
- `cancel_agent_run`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - 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: project_id, agent_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_intelligence`: 47 / 100
  - Major: Arguments without a description: project_id.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `list_project_engineering_decisions`: 47 / 100
  - Major: Arguments without a description: project_id, state, limit.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `list_project_feedback`: 47 / 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: project_id. Name the tool or the place that returns it, or models look it up first.
- `refresh_project_cockpit`: 47 / 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: project_id. Name the tool or the place that returns it, or models look it up first.
- `run_project_agent`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - 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: project_id, agent_id. Name the tool or the place that returns it, or models look it up first.
- `invite_project_member`: 48 / 100
  - Minor: Arguments without a description: project_id, role.
  - 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: project_id. Name the tool or the place that returns it, or models look it up first.
- `remove_project_member`: 48 / 100
  - Major: Arguments without a description: project_id, member_id.
  - 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: project_id, member_id. Name the tool or the place that returns it, or models look it up first.
- `compare_versions`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - 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: project_id, left_version_id, right_version_id. Name the tool or the place that returns it, or models look it up first.
- `continue_project`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: response_format.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `get_agent`: 50 / 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: agent_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_context`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - 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: project_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_discipline`: 50 / 100
  - Major: Arguments without a description: project_id.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `list_project_agents`: 50 / 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: project_id. Name the tool or the place that returns it, or models look it up first.
- `update_living_plan`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: change.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `activate_project`: 52 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `approve_version`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: confirmation.
  - 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: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `prepare_artifact_upload`: 52 / 100
  - Major: Arguments without a description: project_id, kind, name, filename, media_type, byte_size, sha256, review_note.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `reject_version`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: confirmation.
  - 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: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `update_project_intelligence`: 52 / 100
  - Major: Arguments without a description: project_id, change.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `get_build`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_project`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `answer_project_engineering_decision`: 55 / 100
  - Major: Arguments without a description: project_id, decision_id, expected_revision, answer, supersedes_id, idempotency_key.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, decision_id. Name the tool or the place that returns it, or models look it up first.
- `attach_project_engine_workspace`: 55 / 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: project_id, workspace_id. Name the tool or the place that returns it, or models look it up first.
- `create_public_preview`: 55 / 100
  - Minor: Says nothing about what it returns.
- `list_approval_requests`: 56 / 100
  - Minor: No `required` list, so every argument is optional.
- `configure_project_agent_mode`: 57 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_agent_mode`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_work_dispatch`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
- `list_build_systems`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `refine_project`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, base_version_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_activity`: 58 / 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: project_id. Name the tool or the place that returns it, or models look it up first.
- `advance_project_agent_mode`: 60 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `cancel_build`: 60 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `get_account_profile`: 60 / 100
  - Minor: Says nothing about what it returns.
- `build_from_conversation`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `dispatch_project_work`: 62 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, assignment_id, agent_id, engine_id. Name the tool or the place that returns it, or models look it up first.
- `get_project_engine_workspace`: 62 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `list_projects`: 62 / 100
  - Minor: No `required` list, so every argument is optional.
- `get_engine_dispatch`: 65 / 100
- `start_project_on_engine`: 65 / 100
  - Minor: Says nothing about what it returns.
- `list_connected_engines`: 67 / 100
- `render_project_preview`: 70 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, version_id. Name the tool or the place that returns it, or models look it up first.
- `wait_for_project_activity`: 70 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id, after_cursor. Name the tool or the place that returns it, or models look it up first.
- `register_existing_project`: 72 / 100
  - Minor: Says nothing about what it returns.

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)
