# Writ Cloud (app.usewrit/writ-cloud): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/app.usewrit%2Fwrit-cloud/versions/latest)
- Connected to: https://api.usewrit.app/mcp
- Homepage: https://usewrit.app/
- Repository: https://github.com/usewrit/writ-mcp
- Scoring rules: v2
- Tools: 41
- Average: 39.6 / 100 (Rain)
- Near-identical pairs: 0

This page shows how Writ Cloud (app.usewrit/writ-cloud)'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: 41 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 2948 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

- `writ_saved_crawls`: 18 / 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: limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `writ_export_data`: 20 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, workflow, q, view.
  - Minor: String arguments with no constraint or example: format, workflow, q, view.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `writ_crawl_files`: 21 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: crawl_id, crawl, runs, limit.
  - Minor: String arguments with no constraint or example: crawl.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `writ_diagnose_http_workflow`: 21 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, task_id, workflow.
  - Minor: String arguments with no constraint or example: workflow.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `writ_pin_workflow_tool`: 21 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, pinned, workflow.
  - Minor: String arguments with no constraint or example: workflow.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument pinned is unclear.
  - Minor: Says nothing about what it returns.
- `writ_update_saved_crawl`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: crawl, name, description, default_max_age_seconds.
  - Minor: String arguments with no constraint or example: crawl, name, description.
  - Minor: Says nothing about what it returns.
- `writ_saved_crawl_data`: 24 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: crawl, limit, preview_chars, output.
  - Minor: String arguments with no constraint or example: crawl.
  - Minor: Says nothing about what it returns.
- `writ_search_data`: 24 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: q, workflow_id, limit, device, workflow, preview_chars.
  - Minor: String arguments with no constraint or example: q, device, workflow.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `writ_browser_sessions`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: limit, include_closed.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument include_closed is unclear.
  - Minor: Says nothing about what it returns.
- `writ_workflow_runs`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, limit, device, workflow.
  - Minor: String arguments with no constraint or example: status, device, workflow.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `writ_expose_workflow_api`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, label, workflow, timeout_seconds, wait_timeout.
  - Minor: String arguments with no constraint or example: label, workflow.
  - Minor: No `required` list, so every argument is optional.
- `writ_website_to_api`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: url, goal, save_as, persona_id, build_id, device, execution_target, anonymous, use_residential, residential_country.
  - Minor: String arguments with no constraint or example: url, goal, save_as, device, execution_target, residential_country.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument anonymous is unclear.
  - Minor: The meaning of the boolean argument use_residential is unclear.
  - Minor: Says nothing about what it returns.
- `writ_browser_context`: 33 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: session_id, offset, max_chars.
  - Minor: String arguments with no constraint or example: session_id.
  - 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.
- `writ_browser_save`: 33 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: session_id, name, description, save_to, keep_open, contribute_to_catalog.
  - Minor: String arguments with no constraint or example: session_id, name, description.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument keep_open is unclear.
  - Minor: The meaning of the boolean argument contribute_to_catalog is unclear.
  - Minor: Says nothing about what it returns.
- `writ_set_schedule`: 33 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, workflow, enabled, functions, function, inputs.
  - Minor: String arguments with no constraint or example: kind, tz, workflow, function.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument enabled is unclear.
  - Minor: Says nothing about what it returns.
- `writ_create_http_extraction`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: goal, workflow_id, workflow, step_index, request_samples, response_sample, desired_inputs, requirements.
  - Minor: String arguments with no constraint or example: goal, workflow, response_sample, requirements.
  - Minor: Says nothing about what it returns.
- `writ_browser_cancel`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: session_id.
  - Minor: String arguments with no constraint or example: session_id.
  - 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.
- `writ_record_website`: 35 / 100
  - Major: Arguments without a description: goal, url, persona_id, auth_mode, device, residential_country, fresh_exit, skip_existing, skip_marketplace.
  - Minor: String arguments with no constraint or example: goal, url, device, residential_country.
  - Minor: The meaning of the boolean argument fresh_exit is unclear.
  - Minor: The meaning of the boolean argument skip_existing is unclear.
  - Minor: The meaning of the boolean argument skip_marketplace is unclear.
  - Minor: Says nothing about what it returns.
- `writ_workflow_data`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, q, run_id, limit, device, workflow, view, preview_chars, output.
  - Minor: String arguments with no constraint or example: q, device, workflow, view.
  - Minor: No `required` list, so every argument is optional.
- `writ_list_webhooks`: 37 / 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.
- `writ_devices`: 38 / 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.
- `writ_update_workflow`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: workflow_id, copy_to, device, section, operator, limit, function_name, step_id, path, offset, max_chars, expected_updated_at, replace_steps, verbose, regenerate_skill.
  - Minor: String arguments with no constraint or example: device, operator, function_name, step_id, path, expected_updated_at.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument verbose is unclear.
  - Minor: The meaning of the boolean argument regenerate_skill is unclear.
  - Minor: Says nothing about what it returns.
- `writ_create_automation`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: name, on_workflow_id, webhook_trigger_id, target_selector_id, ai_session_id, run_workflow_id, run_functions, run_function, inputs, blocks, recipients, title, ai_entry_url, cooldown_minutes, enabled, priority, description.
  - Minor: String arguments with no constraint or example: name, run_workflow, run_function, title, ai_entry_url, description.
  - Minor: The meaning of the boolean argument enabled is unclear.
  - Minor: Says nothing about what it returns.
- `writ_crawl_status`: 46 / 100
  - Major: Arguments without a description: crawl_id, limit, timeout_seconds, preview_chars, output.
  - Minor: Required identifiers whose description does not say where the value comes from: crawl_id. Name the tool or the place that returns it, or models look it up first.
- `writ_browser_compose`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: session_id.
  - Minor: String arguments with no constraint or example: session_id.
  - 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.
- `writ_browser_live_view`: 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: session_id. Name the tool or the place that returns it, or models look it up first.
- `writ_browser_network`: 47 / 100
  - Minor: Arguments without a description: session_id, offset, max_chars.
  - Minor: String arguments with no constraint or example: session_id, query, method.
  - 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.
- `writ_personas`: 48 / 100
  - Major: Arguments without a description: persona_id, device, execution_target, wait, include_runs, force, login_url.
  - Minor: String arguments with no constraint or example: device, login_url.
  - Minor: The meaning of the boolean argument wait is unclear.
  - Minor: The meaning of the boolean argument include_runs is unclear.
  - Minor: The meaning of the boolean argument force is unclear.
  - Minor: Says nothing about what it returns.
- `writ_run_saved_crawl`: 48 / 100
  - Major: Arguments without a description: crawl, timeout_seconds, limit, preview_chars, output.
  - Minor: String arguments with no constraint or example: crawl.
  - Minor: The meaning of the boolean argument wait is unclear.
- `writ_help`: 49 / 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.
- `writ_wire_monitor`: 49 / 100
  - Major: Arguments without a description: monitor_id, workflow, device, workflow_id, title, message, ai_session_id, entry_url, max_steps, cooldown_minutes, name, enabled.
  - Minor: String arguments with no constraint or example: workflow, device, title, message, entry_url, name.
  - Minor: The meaning of the boolean argument enabled is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: monitor_id. Name the tool or the place that returns it, or models look it up first.
- `writ_payment`: 50 / 100
  - Major: Arguments without a description: grant_id, confirmation_id, currency, fields, total_selector, steps, summary, payment_method_id, automation_id.
  - Minor: String arguments with no constraint or example: grant_id, confirmation_id, currency, total_selector, summary, payment_method_id.
- `writ_browser_act`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: session_id, inputs.
  - Minor: String arguments with no constraint or example: session_id.
  - 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.
- `writ_crawl_site`: 53 / 100
  - Major: Arguments without a description: url, persona_id, save_as, name, max_depth, include_paths, exclude_paths, same_domain, allow_subdomains, render_mode, ocr_mode, relevance_threshold, content_spec, respect_robots, delay_ms, max_concurrent_shards, device, use_residential, residential_country, speed, shard_size, timeout_seconds, limit, preview_chars, output, max_age.
  - Minor: String arguments with no constraint or example: url, save_as, name, render_mode, ocr_mode, device, residential_country, speed.
  - Minor: The meaning of the boolean argument same_domain is unclear.
  - Minor: The meaning of the boolean argument allow_subdomains is unclear.
  - Minor: The meaning of the boolean argument respect_robots is unclear.
  - Minor: The meaning of the boolean argument use_residential is unclear.
- `writ_run_workflow`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: function_names, files, output, wait, timeout_seconds, device, use_residential, residential_country.
  - Minor: String arguments with no constraint or example: device, residential_country.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument wait is unclear.
  - Minor: The meaning of the boolean argument use_residential is unclear.
- `writ_create_monitor`: 54 / 100
  - Major: Arguments without a description: url, session_id, persona_id, device, interval_minutes, requires_browser, mode, zone_text, request_url, try_anyway, residential_country, enabled.
  - Minor: String arguments with no constraint or example: url, session_id, device, zone_text, request_url, residential_country.
  - Minor: The meaning of the boolean argument requires_browser is unclear.
  - Minor: The meaning of the boolean argument try_anyway is unclear.
  - Minor: The meaning of the boolean argument enabled is unclear.
- `writ_list_workflows`: 56 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `writ_discovery_status`: 57 / 100
  - Minor: Arguments without a description: build_id.
- `writ_browser_use`: 59 / 100
  - Major: Arguments without a description: url, persona_id, goal, auth_mode, residential_country, fresh_exit.
  - Minor: String arguments with no constraint or example: url, goal, residential_country.
  - Minor: The meaning of the boolean argument fresh_exit is unclear.
- `writ_browser_ask_user`: 62 / 100
  - Minor: Arguments without a description: session_id.
  - Minor: String arguments with no constraint or example: session_id.
  - 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.
- `writ_scrape`: 68 / 100
  - Minor: Arguments without a description: url, include_paths, preview_chars, device, residential_country, respect_robots.
  - Minor: String arguments with no constraint or example: url, device, residential_country.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument respect_robots 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)
