{
  "id": "06-retool",
  "slug": "retool",
  "normalized_name": "retool",
  "name": "Retool",
  "vendor_url": "retool.com",
  "category": "revops-infra",
  "what_it_does": "A low-code platform for building internal tools/dashboards/admin panels on top of databases and APIs; in a GTM context, used to build custom RevOps tooling - lead-routing consoles, deal-desk approval apps, data-correction UIs - on top of the warehouse/CRM.",
  "ai_features": "Real natural-language app-building (\"prompt full-stack apps on your live production data,\" context-aware @mention editing), AI Workflows (chains AI calls with data/business logic, one-click RAG), and \"AI Agents\" framed as production-ready automations with audit trails - more than a chat-copilot bolt-on, but claims like \"AI Agents handle customer support\" should be read as marketing framing until seen in practice.",
  "mcp_status": "official (public beta)",
  "mcp_url": "https://mcp.retool.com/mcp ; https://retool.com/blog/retool-mcp-server ; repo https://github.com/tryretool/agent-plugins",
  "mcp_auth": "OAuth 2.0. Endpoint pattern https://<your-retool-instance>/mcp over HTTP.",
  "api_gate": "free - the Free plan is self-serve with no sales conversation (unlimited apps, 500 workflow runs/mo, up to 5 users); cheapest paid Team plan is $10/mo per builder, annual.",
  "revops_role": "The app layer for RevOps - builds custom internal UIs on top of the warehouse/CRM for workflows off-the-shelf tools don't cover (approval flows, override consoles, ops dashboards).",
  "tier": "RESEARCHED",
  "last_checked": "2026-09-07",
  "sources": "https://retool.com/pricing, https://retool.com/products/ai, https://retool.com/blog/retool-mcp-server, https://mcp.retool.com/mcp",
  "notes": "The MCP server manages apps/workflows/users (build/edit/deploy apps, run queries, bulk user invites, access audits, resource enumeration) - an admin/dev-ops-facing MCP rather than an end-user data MCP. Available to both cloud and self-hosted customers per the announcement. 2026-09-07: https://mcp.retool.com/mcp returned 401 {\"error\":\"Missing Authorization: Bearer <token> header\"} to an MCP initialize POST; https://app.retool.com/mcp answers identically (https://mcp.retool.com/mcp). 2026-09-12 (P6-04 repo sweep): first-party repository recorded at https://github.com/tryretool/agent-plugins - first-party agent plugins for Claude Code, Cowork, ChatGPT and Codex that wire the hosted server, NOT the server source. Evidence: the org tryretool, tied to retool.com by harvest_orgs.py domain evidence, and claude/retool/.mcp.json declares an http MCP server at ${user_config.retool_url}/mcp.",
  "mcp_status_bucket": "official",
  "api_gate_bucket": "free",
  "mcp_urls": [
    "https://mcp.retool.com/mcp",
    "https://retool.com/blog/retool-mcp-server",
    "https://github.com/tryretool/agent-plugins"
  ],
  "source_urls": [
    "https://retool.com/pricing",
    "https://retool.com/products/ai",
    "https://retool.com/blog/retool-mcp-server",
    "https://mcp.retool.com/mcp"
  ],
  "source_annotations": [],
  "vendor_domain": "retool.com",
  "display_name": "Retool",
  "docs_url": null,
  "jobs": [
    "query-data-warehouse",
    "run-automation-workflow"
  ],
  "jobs_tagged_by": "machine-pass",
  "jobs_tagged_on": "2026-08-25",
  "github_url": null,
  "github_stars": null,
  "github_last_commit": null,
  "github_archived": null,
  "github_fetched_on": null,
  "github_candidates": [
    "https://github.com/tryretool/agent-plugins"
  ],
  "docs_digest": null,
  "docs_last_crawled": null,
  "submission": null,
  "mcp_tools": [
    {
      "name": "retool_cancel_react_app_thread_activity",
      "description": "Cancel activity on an active thread.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_create_or_append_react_app_thread_message",
      "description": "Create or update an app from a natural-language prompt.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_create_resource",
      "description": "Create a new resource.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_create_user_invite",
      "description": "Create a user invite.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_delete_user_invite",
      "description": "Delete a user invite by invite ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_delete_user_invite_attribute",
      "description": "Delete a user attribute from a user invite.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_delete_workflow",
      "description": "Delete a workflow by workflow ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_execute_resource_ts",
      "description": "Execute a TypeScript snippet against selected resources.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_finalize_prepared_import",
      "description": "Finalize a two-step import after the source zip is uploaded.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_get_app",
      "description": "Get a single app by app ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_environment",
      "description": "Get an environment by environment ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_folder",
      "description": "Get a folder by folder ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_group",
      "description": "Get a single permission group by group ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_organization",
      "description": "Get organization settings.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_react_app_thread_activity_status",
      "description": "Check whether an existing thread has active agent work.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_resource",
      "description": "Get metadata for one resource by name.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_resource_ts_definitions",
      "description": "Generate global variable bindings and TypeScript definitions for selected resources.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_user",
      "description": "Get a single user by user ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_user_invite",
      "description": "Get a single user invite by invite ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_get_workflow",
      "description": "Get a workflow by workflow ID.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_grant_app_access",
      "description": "Grant or update direct access to an app for a user, pending invite, or group.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_list_app_access",
      "description": "List the users, invited users, and groups that currently have access to an app.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_apps",
      "description": "List apps in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_audit_logs",
      "description": "List audit log events in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_environments",
      "description": "List environments in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_folders",
      "description": "List folders in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_groups",
      "description": "List permission groups in the organization, including their members.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_pending_react_app_function_approvals",
      "description": "List publish-blocking approvals required for mutating functions.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_pending_react_app_thread_reviews",
      "description": "List pending live human-in-the-loop review requests.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_react_app_files",
      "description": "List file paths, sizes, and line counts for an app.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_react_app_threads",
      "description": "List recently active threads for an app.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_resource_folders",
      "description": "List resource folders in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_resources",
      "description": "List resources available in the organization, including databases, APIs, storage, and AI providers.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_user_invites",
      "description": "List user invites in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_users",
      "description": "List users in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_workflows",
      "description": "List workflows in the organization.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_list_writable_app_folders",
      "description": "List the app folders the authenticated user can create apps in.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_publish_react_app",
      "description": "Publish a thread using the same publish flow as the app builder.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_read_react_app_files",
      "description": "Read the contents of specific files in an app.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_read_react_app_thread_stream",
      "description": "Fetch the most recent persisted chat messages for an existing thread.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_report_tool_usage_feedback",
      "description": "Report feedback about MCP tool usage.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_respond_to_react_app_thread_review",
      "description": "Wait for a pending review request and submit the response.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_revoke_app_access",
      "description": "Revoke direct app access for a user, pending invite, or group.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_search_app_share_subjects",
      "description": "Search the app sharing directory for users, pending invites, and groups.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_set_user_invite_attribute",
      "description": "Create or update a user attribute on a user invite.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_start_prepared_import",
      "description": "Start a two-step import of a large existing app.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_submit_prepared_import",
      "description": "Import an existing app in one step.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "retool_sync_react_app_thread",
      "description": "Sync an app's thread branch from external source control.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_tail_react_app_thread_stream",
      "description": "Monitor an active thread and forward progress updates.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "retool_update_resource",
      "description": "Update an existing resource by name.",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    }
  ],
  "mcp_tool_count": 50,
  "mcp_tools_evidence": "docs",
  "mcp_tools_repo": null,
  "mcp_tools_repo_party": null,
  "mcp_catalog_shape": "fixed",
  "mcp_catalog_note": null,
  "mcp_tools_fetched_on": "2026-09-27",
  "cli_status": "official",
  "cli_party": "first",
  "cli_binary": "retool",
  "cli_install": [
    {
      "cmd": "npm install -g @tryretool/cli",
      "manager": "npm",
      "source_url": "https://www.npmjs.com/package/@tryretool/cli",
      "party": "first",
      "fetched_on": "2026-09-27"
    }
  ],
  "cli_login": null,
  "cli_commands_seen": [],
  "cli_docs_url": null,
  "cli_repo": null,
  "cli_packages": [
    {
      "kind": "npm",
      "package": "retool-cli",
      "version": "1.0.29",
      "party": "third",
      "url": "https://www.npmjs.com/package/retool-cli"
    },
    {
      "kind": "npm",
      "package": "@tryretool/cli",
      "version": "0.1.10",
      "party": "first",
      "url": "https://www.npmjs.com/package/@tryretool/cli"
    }
  ],
  "cli_evidence": "npm",
  "cli_checked_on": "2026-09-27",
  "github_org": "tryretool",
  "github_org_status": "resolved",
  "github_org_url": "https://github.com/tryretool",
  "github_org_evidence": {
    "rule": "rule 3",
    "url": "search q=Retool",
    "matched_domain": "retool.com",
    "via": "website",
    "detail": "account website https://retool.com has the vendor's domain",
    "confidence": "strong",
    "candidates_rejected": [
      {
        "login": "retool",
        "from": "rule 3 (Retool)",
        "type": "Organization",
        "website": "https://www.retool.io",
        "rejected": "website retool.io does not match retool.com"
      }
    ]
  },
  "github_org_repos": 41,
  "github_org_repos_mcp": 0,
  "github_org_repos_cli": 1,
  "github_org_latest_activity": "2026-09-08T16:48:45Z",
  "github_org_recent_repos": [
    {
      "name": "agent-plugins",
      "url": "https://github.com/tryretool/agent-plugins",
      "kind": "plugin-or-integration",
      "description": null,
      "stars": 0,
      "pushed_at": "2026-09-08",
      "latest_release": null
    },
    {
      "name": "terraform-provider-retool",
      "url": "https://github.com/tryretool/terraform-provider-retool",
      "kind": "infra",
      "description": null,
      "stars": 4,
      "pushed_at": "2026-09-04",
      "latest_release": "v2.1.0"
    },
    {
      "name": "legal",
      "url": "https://github.com/tryretool/legal",
      "kind": "other",
      "description": "Retool Legal Agreements and Policies",
      "stars": 1,
      "pushed_at": "2026-09-04",
      "latest_release": null
    },
    {
      "name": "terraform-retool-self-hosted-blueprints",
      "url": "https://github.com/tryretool/terraform-retool-self-hosted-blueprints",
      "kind": "infra",
      "description": "Terraform modules to deploy self-hosted Retool to your cloud",
      "stars": 5,
      "pushed_at": "2026-09-03",
      "latest_release": "v0.3.5"
    },
    {
      "name": "retool-helm",
      "url": "https://github.com/tryretool/retool-helm",
      "kind": "infra",
      "description": null,
      "stars": 54,
      "pushed_at": "2026-09-03",
      "latest_release": "v6.11.23"
    }
  ],
  "github_org_checked_on": "2026-09-08",
  "mcp_endpoint": null,
  "mcp_docs_url": "https://retool.com/blog/retool-mcp-server",
  "endpoint_status": "docs-only",
  "endpoint_http_status": 200,
  "endpoint_last_probed": "2026-09-04",
  "endpoint_wall_note": null,
  "canonical": true,
  "canonical_id": "06-retool",
  "also_listed_in": [],
  "source_file": "06-revops-infra.md",
  "source_line": 405,
  "file_index": 17,
  "category_num": "06",
  "category_slug": "revops-infra",
  "category_label": "RevOps Infra",
  "heading": "Retool",
  "missing_schema_fields": [],
  "extra_fields": {},
  "display_rank": 46
}
