Workflow Finder
Find My ToolAI ToolsWorkflowsPromptsStacksCompareBlog
Saved tools
Workflow Finder

The Workflow Finder. High-signal tools, real-world workflows, zero noise.

Directory

  • AI Tools
  • Workflows
  • Prompts
  • Compare Tools
  • Tool Stacks

Company

  • About
  • Blog
  • Contact
  • Submit a Tool

Resources

  • Review Methodology
  • Fit Score Methodology
  • Search API
  • MCP Server

Account

  • Saved Tools
  • Privacy Policy
  • Terms of Service
© 2026 The Workflow Finder. All rights reserved.

MCP Server

Give your AI agent direct access to 386+ verified tools and 206+ workflows. One endpoint, seven tools, no API key. Works with Claude Code, Cursor, Windsurf, VS Code and any client that speaks the Model Context Protocol.

The Model Context Protocol (MCP) is how AI assistants call outside tools. This server exposes the same catalog every page on this site renders from, so an agent that asks it for a tool gets the pricing, capability tags, source-linked facts and review status a human visitor sees, never a stale copy. If you would rather query over plain HTTP, the REST search API returns the same data.

Endpoint

URLhttps://www.theworkflowfinder.com/api/mcp
TransportStreamable HTTP, JSON-RPC 2.0. One request, one JSON response.
MethodPOST only. GET returns 405 (see below). OPTIONS returns 204 for CORS preflight.
AuthenticationNone. No key, no signup, no cost.
SessionStateless. No Mcp-Session-Id header is issued or expected.
Protocol version2025-06-18
Capabilitiestools only. No resources, prompts or sampling.
CORSAccess-Control-Allow-Origin: *, so browser-based clients can call it directly.

Because the server never opens a server-to-client event stream, a GET to the endpoint answers 405 with {"error":"This MCP server is stateless; send all JSON-RPC calls as POST."}. Clients that implement the Streamable HTTP transport treat that as "no push stream available" and keep working over POST; the official TypeScript SDK client does. If a client insists on a live event stream, it will not get one here.

Connect Your Client

Configuration formats below were checked against each vendor's own documentation on September 11, 2026. If a snippet stops working, the vendor's page is the source of truth; the endpoint itself does not change.

Claude Code

Native HTTP transport. One command, or a .mcp.json entry. A url without a type field is read as stdio and skipped, so keep the type.

claude mcp add --transport http workflow-finder https://www.theworkflowfinder.com/api/mcp

Claude Code (.mcp.json)

Project-scoped file at the repository root.

{
  "mcpServers": {
    "workflow-finder": {
      "type": "http",
      "url": "https://www.theworkflowfinder.com/api/mcp"
    }
  }
}

Cursor

Native HTTP transport. .cursor/mcp.json in the project, or ~/.cursor/mcp.json globally. No type field.

{
  "mcpServers": {
    "workflow-finder": {
      "url": "https://www.theworkflowfinder.com/api/mcp"
    }
  }
}

Windsurf

Native HTTP transport. ~/.codeium/windsurf/mcp_config.json; the documented key is serverUrl (url is also accepted).

{
  "mcpServers": {
    "workflow-finder": {
      "serverUrl": "https://www.theworkflowfinder.com/api/mcp"
    }
  }
}

VS Code (GitHub Copilot agent mode)

.vscode/mcp.json. The top-level key is servers, not mcpServers, and type is required.

{
  "servers": {
    "workflow-finder": {
      "type": "http",
      "url": "https://www.theworkflowfinder.com/api/mcp"
    }
  }
}

Claude Desktop

Remote servers are added in the app: Settings, Connectors, Add custom connector, then paste the endpoint URL. The claude_desktop_config.json file only launches local stdio servers, so if you need the file, route through the mcp-remote bridge:

{
  "mcpServers": {
    "workflow-finder": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.theworkflowfinder.com/api/mcp"
      ]
    }
  }
}

TypeScript (@modelcontextprotocol/sdk)

The official client with the Streamable HTTP transport. The server issues no session id, so there is nothing to terminate.

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(new StreamableHTTPClientTransport(new URL("https://www.theworkflowfinder.com/api/mcp")));

const { tools } = await client.listTools();
const pricing = await client.callTool({ name: "check_pricing", arguments: { slug: "perplexity" } });
console.log(tools.map((t) => t.name), pricing.structuredContent);

await client.close();

Handshake

A client sends initialize, optionally the notifications/initialized notification, then tools/list. Every exchange on this page was captured from the live endpoint; the request and response shown are what the server actually sent.

initialize

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"twf-docs-capture","version":"1.0.0"}}}'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "tools": {}
    },
    "serverInfo": {
      "name": "theworkflowfinder-mcp",
      "version": "1.0.0"
    }
  }
}

notifications/initialized

Notifications carry no id and get an empty 202 response.

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

tools/list

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

The response lists the 7 tools documented in the next section, each with name, title, description and a JSON Schema inputSchema. The definitions below are rendered from the same source the server serves, so they cannot drift from what tools/list returns.

Tools

ToolUse it when
search_toolsYou have filters: category, pricing, budget, capability tags, open-source or API status.
find_workflowsYou want a step-by-step procedure, not a single product.
find_tools_for_taskYou have a plain-language goal and no filters.
compare_toolsYou already have two to six slugs and need them side by side.
check_pricingYou need one tool's current pricing and when it was last verified.
find_alternativesYou have a tool and want the curated substitutes.
get_tool_capabilitiesYou need one tool's capability tags and source-linked facts, or the full tag taxonomy.

Slugs are the last path segment of a tool page URL, for example perplexity from /tools/perplexity. When you do not know a slug, call search_tools first; every result carries one.

search_tools

Search TheWorkflowFinder's AI tool catalog by free-text task, category, pricing, budget, capability tags, or structured facts (open source, API availability). Returns matching tools with pricing, capabilities, source-linked facts, review status/nullable product-quality Review Score, use-case Fit Scores, and attributed external/deprecated legacy ratings. score is query relevance, not quality or Fit Score. All parameters are optional; empty queries and relevance ties use eligible quality reviews, then curated featured status and alphabetical order, never legacy stars or review volume.

Input schema

{
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "maxLength": 500,
      "description": "Free-text description of the task or goal"
    },
    "category": {
      "type": "string",
      "maxLength": 50,
      "description": "One of the site's tool categories, e.g. Coding, Marketing, Design"
    },
    "pricing": {
      "type": "string",
      "enum": [
        "free",
        "freemium",
        "paid"
      ]
    },
    "budget": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Maximum monthly price"
    },
    "needs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20
    },
    "avoid": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Keywords that exclude a result if found in its text"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "Web research",
          "Source synthesis",
          "Data analysis",
          "Competitive analysis",
          "Long-form writing",
          "Script generation",
          "Image generation",
          "Video generation",
          "Audio & voice generation",
          "Social media content",
          "Code generation",
          "Code review",
          "Debugging assistance",
          "API integration",
          "Lead generation",
          "CRM automation",
          "Outreach & email sequencing",
          "Sales call analysis",
          "Workflow automation",
          "Scheduling & calendar management",
          "Document processing",
          "Customer support automation",
          "SEO optimization",
          "Ad campaign management",
          "Email marketing",
          "Multi-step agent orchestration",
          "Autonomous task execution",
          "Meeting transcription & summarization",
          "Note-taking & knowledge management"
        ]
      },
      "maxItems": 29
    },
    "openSource": {
      "type": "boolean"
    },
    "apiAvailability": {
      "type": "string",
      "enum": [
        "public",
        "waitlist",
        "none",
        "not-published"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": []
}

Example request

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_tools","arguments":{"capabilities":["Code generation"],"openSource":true,"limit":1}}}'

Each tool in the result uses the same summary shape as the REST search API, including the review, fitScores, externalRating and legacyRating fields described in the scoring contract.

find_workflows

Search TheWorkflowFinder's workflow catalog (step-by-step guides for accomplishing a task with AI tools) by free-text task, tag, or keyword. All parameters are optional; an empty query returns the workflow catalog.

Input schema

{
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "maxLength": 500
    },
    "category": {
      "type": "string",
      "maxLength": 50,
      "description": "Matches against a workflow's tags"
    },
    "needs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20
    },
    "avoid": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": []
}

Example request

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"find_workflows","arguments":{"task":"youtube scripts","limit":1}}}'

Response

{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"workflows\":[{\"slug\":\"produce-short-form-video-content-at-scale\",\"title\":\"Produce Short-Form Video Content at Scale\",\"url\":\"https://www.theworkflowfinder.com/workflows/produce-short-form-video-content-at-scale\",\"difficulty\":\"Intermediate\",\"timeEstimate\":\"2 hrs per week\",\"description\":\"Repurpose one long-form video or podcast into 10+ short clips with captions, hooks, and platform-specific formatting, in under 2 hours per week.\",\"expectedResult\":\"10–15 platform-ready short clips (Reels, TikTok, Shorts) with burned-in captions, strong hooks, and thumbnails, scheduled and ready to post for the week.\",\"tags\":[\"Video\",\"Social Media\",\"Content\",\"Repurposing\",\"Marketing\"],\"score\":2,\"matchedOn\":[\"2 keyword matches\"]}],\"meta\":{\"totalToolMatches\":0,\"totalWorkflowMatches\":28,\"source\":\"https://www.theworkflowfinder.com\",\"generated\":\"2026-08-28\",\"scoreContractVersion\":\"1.0\",\"scoring\":{\"methodologyUrl\":\"https://www.theworkflowfinder.com/review-methodology\",\"review\":{\"statuses\":[\"not-reviewed\",\"limited\",\"reviewed\",\"needs-update\",\"blocked\"],\"scale\":5,\"qualityScore\":\"Product-quality Review Score only when status is reviewed; otherwise null, never zero.\",\"limitedScore\":\"A narrower published editorial rating, not a product-quality Review Score or a quality-ranking input.\",\"nullMeaning\":\"No publishable product-quality score; not a negative quality judgment. See status, reason and scope.\"},\"fitScores\":{\"methodologyUrl\":\"https://www.theworkflowfinder.com/fit-score\",\"scale\":5,\"meaning\":\"Existing use-case-specific editorial Fit Scores, not product-quality Review Scores or measured benchmarks. An empty array means no Fit Scores are recorded.\"},\"externalRating\":\"Attributed third-party reference with publisher, sourceUrl and checkedAt; null when no verified reference is available. Not a TWF Review Score.\",\"legacyRating\":{\"deprecatedFields\":[\"rating\",\"reviewCount\"],\"notice\":\"Legacy numeric fields are preserved unchanged where exposed. Use legacyRating for their provenance and deprecation notice; they are not TWF Review Scores or verified on-site review totals.\"},\"searchScore\":\"score is query relevance, not a Review Score or a use-case Fit Score.\",\"ranking\":\"Query relevance first; ties and empty queries use eligible product-quality reviews, then curated featured status and alphabetical name/slug. Unreviewed and limited tools have no numeric quality rank; legacy ratings and review counts are never ranking inputs.\"}}}"
      }
    ],
    "structuredContent": {
      "workflows": [
        {
          "slug": "produce-short-form-video-content-at-scale",
          "title": "Produce Short-Form Video Content at Scale",
          "url": "https://www.theworkflowfinder.com/workflows/produce-short-form-video-content-at-scale",
          "difficulty": "Intermediate",
          "timeEstimate": "2 hrs per week",
          "description": "Repurpose one long-form video or podcast into 10+ short clips with captions, hooks, and platform-specific formatting, in under 2 hours per week.",
          "expectedResult": "10–15 platform-ready short clips (Reels, TikTok, Shorts) with burned-in captions, strong hooks, and thumbnails, scheduled and ready to post for the week.",
          "tags": [
            "Video",
            "Social Media",
            "Content",
            "Repurposing",
            "Marketing"
          ],
          "score": 2,
          "matchedOn": [
            "2 keyword matches"
          ]
        }
      ],
      "meta": {
        "totalToolMatches": 0,
        "totalWorkflowMatches": 28,
        "source": "https://www.theworkflowfinder.com",
        "generated": "2026-08-28",
        "scoreContractVersion": "1.0",
        "scoring": {
          "methodologyUrl": "https://www.theworkflowfinder.com/review-methodology",
          "review": {
            "statuses": [
              "not-reviewed",
              "limited",
              "reviewed",
              "needs-update",
              "blocked"
            ],
            "scale": 5,
            "qualityScore": "Product-quality Review Score only when status is reviewed; otherwise null, never zero.",
            "limitedScore": "A narrower published editorial rating, not a product-quality Review Score or a quality-ranking input.",
            "nullMeaning": "No publishable product-quality score; not a negative quality judgment. See status, reason and scope."
          },
          "fitScores": {
            "methodologyUrl": "https://www.theworkflowfinder.com/fit-score",
            "scale": 5,
            "meaning": "Existing use-case-specific editorial Fit Scores, not product-quality Review Scores or measured benchmarks. An empty array means no Fit Scores are recorded."
          },
          "externalRating": "Attributed third-party reference with publisher, sourceUrl and checkedAt; null when no verified reference is available. Not a TWF Review Score.",
          "legacyRating": {
            "deprecatedFields": [
              "rating",
              "reviewCount"
            ],
            "notice": "Legacy numeric fields are preserved unchanged where exposed. Use legacyRating for their provenance and deprecation notice; they are not TWF Review Scores or verified on-site review totals."
          },
          "searchScore": "score is query relevance, not a Review Score or a use-case Fit Score.",
          "ranking": "Query relevance first; ties and empty queries use eligible product-quality reviews, then curated featured status and alphabetical name/slug. Unreviewed and limited tools have no numeric quality rank; legacy ratings and review counts are never ranking inputs."
        }
      }
    },
    "isError": false
  }
}

find_tools_for_task

Given a natural-language description of a task or goal, return the best-matching AI tools ranked by relevance. Use this when you have a task description in hand rather than specific filter criteria; for structured filtering (category, pricing, capability tags), use search_tools instead.

Input schema

{
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "task"
  ]
}

Example request

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"find_tools_for_task","arguments":{"task":"transcribe meetings and summarize action items","limit":1}}}'

Same result shape as search_tools; the only difference is that task is required and there are no structured filters.

compare_tools

Compare two or more AI tools by slug side by side: pricing, capabilities, source-linked facts, evidence-backed review status/nullable quality Review Score, use-case Fit Scores, attributed external references, and editorial verdict where available. Legacy rating/reviewCount remain deprecated compatibility fields, not Review Scores. Slugs unknown to the catalog are reported separately rather than silently dropped.

Input schema

{
  "type": "object",
  "properties": {
    "slugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 6
    }
  },
  "required": [
    "slugs"
  ]
}

Example request

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"compare_tools","arguments":{"slugs":["aider","cursor","not-a-real-slug"]}}}'

Known slugs come back as tool summaries; unknown ones are listed in a notFound array instead of being dropped. Only when every slug is unknown does the call return isError: true.

check_pricing

Get current pricing details for a specific AI tool by slug, including when the pricing was last verified.

Input schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "slug"
  ]
}

Example request

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"check_pricing","arguments":{"slug":"perplexity"}}}'

Response

{
  "jsonrpc": "2.0",
  "id": 7,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"slug\":\"perplexity\",\"name\":\"Perplexity\",\"pricing\":\"freemium\",\"pricingDetail\":\"Free / $20/mo Pro / $200/mo Max (19-model orchestration)\",\"pricingVerifiedAt\":\"2026-08\",\"review\":{\"status\":\"limited\",\"qualityScore\":null,\"limitedScore\":3,\"scale\":5,\"scope\":\"Limited 3/5 for three automated factual-search prompts (Q2-Q4) in a signed-in Perplexity Free web account, with the advanced-search preview banner observed. Tested September 10, 2026 UTC with a requested desktop viewport of 1440 x 1000; actual test viewport not recorded. Browser build not retained; model and app build undisclosed. Not a product-wide score, paid-Pro review or confirmed standard-search review. Q1/Q5, paid plans, uploads, mobile, exports and sustained use are excluded from the rating.\",\"testedAt\":\"2026-09-10\",\"publishedAt\":\"2026-09-10\",\"reviewUrl\":\"https://www.theworkflowfinder.com/tools/perplexity\",\"reason\":\"Published limited-scope review; not a comprehensive product-quality score.\",\"methodologyUrl\":\"/review-methodology\"},\"fitScores\":[{\"useCase\":\"Getting a sourced, verifiable answer instead of a list of links to sort through\",\"capability\":5,\"reliability\":4,\"value\":5,\"ease\":4,\"compatibility\":4,\"overall\":4.4,\"rationale\":\"Every answer comes with citations you can actually check, and Model Council now lets Pro subscribers query multiple models for a multi-perspective answer, with a Pro tier that offers great value (standout, pros). Reliability is slightly capped by occasional hallucinated citations (con).\"},{\"useCase\":\"Creative writing tasks like fiction, marketing copy, or brainstorming\",\"capability\":2,\"reliability\":3,\"value\":3,\"ease\":3,\"compatibility\":3,\"overall\":2.8,\"rationale\":\"Its own cons state it is not as good for creative writing as ChatGPT, and the UI is purely search-focused rather than built for open-ended creative drafting.\"}],\"externalRating\":null,\"legacyRating\":{\"value\":4.8,\"reviewCount\":9500,\"provenance\":\"unverified\",\"deprecated\":true,\"notice\":\"Legacy rating/reviewCount fields are not TWF Review Scores or verified on-site review totals.\"},\"meta\":{\"scoreContractVersion\":\"1.0\",\"scoring\":{\"methodologyUrl\":\"https://www.theworkflowfinder.com/review-methodology\",\"review\":{\"statuses\":[\"not-reviewed\",\"limited\",\"reviewed\",\"needs-update\",\"blocked\"],\"scale\":5,\"qualityScore\":\"Product-quality Review Score only when status is reviewed; otherwise null, never zero.\",\"limitedScore\":\"A narrower published editorial rating, not a product-quality Review Score or a quality-ranking input.\",\"nullMeaning\":\"No publishable product-quality score; not a negative quality judgment. See status, reason and scope.\"},\"fitScores\":{\"methodologyUrl\":\"https://www.theworkflowfinder.com/fit-score\",\"scale\":5,\"meaning\":\"Existing use-case-specific editorial Fit Scores, not product-quality Review Scores or measured benchmarks. An empty array means no Fit Scores are recorded.\"},\"externalRating\":\"Attributed third-party reference with publisher, sourceUrl and checkedAt; null when no verified reference is available. Not a TWF Review Score.\",\"legacyRating\":{\"deprecatedFields\":[\"rating\",\"reviewCount\"],\"notice\":\"Legacy numeric fields are preserved unchanged where exposed. Use legacyRating for their provenance and deprecation notice; they are not TWF Review Scores or verified on-site review totals.\"},\"searchScore\":\"score is query relevance, not a Review Score or a use-case Fit Score.\",\"ranking\":\"Query relevance first; ties and empty queries use eligible product-quality reviews, then curated featured status and alphabetical name/slug. Unreviewed and limited tools have no numeric quality rank; legacy ratings and review counts are never ranking inputs.\"}}}"
      }
    ],
    "structuredContent": {
      "slug": "perplexity",
      "name": "Perplexity",
      "pricing": "freemium",
      "pricingDetail": "Free / $20/mo Pro / $200/mo Max (19-model orchestration)",
      "pricingVerifiedAt": "2026-08",
      "review": {
        "status": "limited",
        "qualityScore": null,
        "limitedScore": 3,
        "scale": 5,
        "scope": "Limited 3/5 for three automated factual-search prompts (Q2-Q4) in a signed-in Perplexity Free web account, with the advanced-search preview banner observed. Tested September 10, 2026 UTC with a requested desktop viewport of 1440 x 1000; actual test viewport not recorded. Browser build not retained; model and app build undisclosed. Not a product-wide score, paid-Pro review or confirmed standard-search review. Q1/Q5, paid plans, uploads, mobile, exports and sustained use are excluded from the rating.",
        "testedAt": "2026-09-10",
        "publishedAt": "2026-09-10",
        "reviewUrl": "https://www.theworkflowfinder.com/tools/perplexity",
        "reason": "Published limited-scope review; not a comprehensive product-quality score.",
        "methodologyUrl": "/review-methodology"
      },
      "fitScores": [
        {
          "useCase": "Getting a sourced, verifiable answer instead of a list of links to sort through",
          "capability": 5,
          "reliability": 4,
          "value": 5,
          "ease": 4,
          "compatibility": 4,
          "overall": 4.4,
          "rationale": "Every answer comes with citations you can actually check, and Model Council now lets Pro subscribers query multiple models for a multi-perspective answer, with a Pro tier that offers great value (standout, pros). Reliability is slightly capped by occasional hallucinated citations (con)."
        },
        {
          "useCase": "Creative writing tasks like fiction, marketing copy, or brainstorming",
          "capability": 2,
          "reliability": 3,
          "value": 3,
          "ease": 3,
          "compatibility": 3,
          "overall": 2.8,
          "rationale": "Its own cons state it is not as good for creative writing as ChatGPT, and the UI is purely search-focused rather than built for open-ended creative drafting."
        }
      ],
      "externalRating": null,
      "legacyRating": {
        "value": 4.8,
        "reviewCount": 9500,
        "provenance": "unverified",
        "deprecated": true,
        "notice": "Legacy rating/reviewCount fields are not TWF Review Scores or verified on-site review totals."
      },
      "meta": {
        "scoreContractVersion": "1.0",
        "scoring": {
          "methodologyUrl": "https://www.theworkflowfinder.com/review-methodology",
          "review": {
            "statuses": [
              "not-reviewed",
              "limited",
              "reviewed",
              "needs-update",
              "blocked"
            ],
            "scale": 5,
            "qualityScore": "Product-quality Review Score only when status is reviewed; otherwise null, never zero.",
            "limitedScore": "A narrower published editorial rating, not a product-quality Review Score or a quality-ranking input.",
            "nullMeaning": "No publishable product-quality score; not a negative quality judgment. See status, reason and scope."
          },
          "fitScores": {
            "methodologyUrl": "https://www.theworkflowfinder.com/fit-score",
            "scale": 5,
            "meaning": "Existing use-case-specific editorial Fit Scores, not product-quality Review Scores or measured benchmarks. An empty array means no Fit Scores are recorded."
          },
          "externalRating": "Attributed third-party reference with publisher, sourceUrl and checkedAt; null when no verified reference is available. Not a TWF Review Score.",
          "legacyRating": {
            "deprecatedFields": [
              "rating",
              "reviewCount"
            ],
            "notice": "Legacy numeric fields are preserved unchanged where exposed. Use legacyRating for their provenance and deprecation notice; they are not TWF Review Scores or verified on-site review totals."
          },
          "searchScore": "score is query relevance, not a Review Score or a use-case Fit Score.",
          "ranking": "Query relevance first; ties and empty queries use eligible product-quality reviews, then curated featured status and alphabetical name/slug. Unreviewed and limited tools have no numeric quality rank; legacy ratings and review counts are never ranking inputs."
        }
      }
    },
    "isError": false
  }
}

find_alternatives

Get alternative AI tools to a given tool, based on the site's curated alternatives list. Returns an empty alternatives array (not an error) when the tool exists but has no documented alternatives.

Input schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "slug"
  ]
}

Example request

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":8,"method":"tools/call","params":{"name":"find_alternatives","arguments":{"slug":"calendly"}}}'

Returns the tool's curated alternatives as full summaries. A tool with no documented alternatives returns an empty array, not an error.

get_tool_capabilities

Look up a specific tool's capability tags and structured facts by slug, or list the full 29-tag capability taxonomy when no slug is given.

Input schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "description": "Omit to list the full capability taxonomy instead"
    }
  },
  "required": []
}

Example request

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":9,"method":"tools/call","params":{"name":"get_tool_capabilities","arguments":{}}}'

Response

{
  "jsonrpc": "2.0",
  "id": 9,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"capabilityTags\":[\"Web research\",\"Source synthesis\",\"Data analysis\",\"Competitive analysis\",\"Long-form writing\",\"Script generation\",\"Image generation\",\"Video generation\",\"Audio & voice generation\",\"Social media content\",\"Code generation\",\"Code review\",\"Debugging assistance\",\"API integration\",\"Lead generation\",\"CRM automation\",\"Outreach & email sequencing\",\"Sales call analysis\",\"Workflow automation\",\"Scheduling & calendar management\",\"Document processing\",\"Customer support automation\",\"SEO optimization\",\"Ad campaign management\",\"Email marketing\",\"Multi-step agent orchestration\",\"Autonomous task execution\",\"Meeting transcription & summarization\",\"Note-taking & knowledge management\"]}"
      }
    ],
    "structuredContent": {
      "capabilityTags": [
        "Web research",
        "Source synthesis",
        "Data analysis",
        "Competitive analysis",
        "Long-form writing",
        "Script generation",
        "Image generation",
        "Video generation",
        "Audio & voice generation",
        "Social media content",
        "Code generation",
        "Code review",
        "Debugging assistance",
        "API integration",
        "Lead generation",
        "CRM automation",
        "Outreach & email sequencing",
        "Sales call analysis",
        "Workflow automation",
        "Scheduling & calendar management",
        "Document processing",
        "Customer support automation",
        "SEO optimization",
        "Ad campaign management",
        "Email marketing",
        "Multi-step agent orchestration",
        "Autonomous task execution",
        "Meeting transcription & summarization",
        "Note-taking & knowledge management"
      ]
    },
    "isError": false
  }
}

With no slug, the call lists the full capability taxonomy. Pass { "slug": "grammarly" } to get one tool's tags and source-linked facts instead.

Response Shape

A successful tools/call returns the payload twice, on purpose: result.content[0].text holds it as a JSON string for clients that only read text content, and result.structuredContent holds the same object parsed, for clients that support structured output. result.isError is false on success.

Tool summaries follow the site's public scoring contract: review (status plus a nullable product-quality Review Score), fitScores (use-case fit, not quality), externalRating (attributed third-party reference or null) and legacyRating (deprecated compatibility values). A search score is query relevance only. The scoring contract on the API page spells out every field; the MCP tools expose the same objects the REST endpoint does.

Errors

Two layers, matching the MCP specification. A tool-level failure (bad arguments, a slug the catalog does not have, an unknown tool name) comes back as a normal 200 result with isError: true and a plain-language explanation the agent can act on. A protocol-level failure comes back as a JSON-RPC error object.

Arguments fail validation

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":11,"method":"tools/call","params":{"name":"search_tools","arguments":{"pricing":"expensive"}}}'
{
  "jsonrpc": "2.0",
  "id": 11,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Invalid arguments for \"search_tools\": Invalid enum value. Expected 'free' | 'freemium' | 'paid', received 'expensive'"
      }
    ],
    "isError": true
  }
}

Slug not in the catalog

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":12,"method":"tools/call","params":{"name":"check_pricing","arguments":{"slug":"does-not-exist"}}}'
{
  "jsonrpc": "2.0",
  "id": 12,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "No tool found with slug \"does-not-exist\". Call search_tools to find the correct slug."
      }
    ],
    "isError": true
  }
}

Unknown tool name

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":13,"method":"tools/call","params":{"name":"nope","arguments":{}}}'
{
  "jsonrpc": "2.0",
  "id": 13,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Unknown tool \"nope\". Call tools/list for the available tools."
      }
    ],
    "isError": true
  }
}

Unsupported JSON-RPC method

curl -X POST https://www.theworkflowfinder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":14,"method":"resources/list","params":{}}'
{
  "jsonrpc": "2.0",
  "id": 14,
  "error": {
    "code": -32601,
    "message": "Method not found: \"resources/list\"."
  }
}

A body that is not valid JSON returns HTTP 400 with JSON-RPC error -32700; a valid JSON body that is not a JSON-RPC 2.0 request returns HTTP 400 with -32600.

Rate Limits

Requests are limited per IP address to keep the endpoint available to everyone. Exceeding the limit returns HTTP 429 with a Retry-After header telling you how many seconds to wait, and this body:

{
  "jsonrpc": "2.0",
  "id": null,
  "error": {
    "code": -32000,
    "message": "Too many requests. Please try again later."
  }
}

There is no API key and no way to request a higher limit today; if you need sustained high-volume access, pull /tools.json once instead of querying, or reach out via the contact page first.

Notes for Agent Builders

This is a small site run by one person, not a funded API product. The server has no formal uptime commitment, but it reads the same in-memory data every page on the site renders from, so it is only as unavailable as the site itself. Tool schemas are additive over time: new optional arguments and new response fields may appear, existing ones will not be renamed or removed without notice here. If you build something on top of this, or hit a protocol-compliance bug with a client not listed above, let us know.