{"apiVersion":"v1","directorySlug":"whatcanido-mcp-299e22dbd5","title":"whatcanido","description":"Most software was built for humans clicking buttons. The agent that could run the same work in a fraction of the time has to fight the same interface. We thought it was easier to fix the software.","pageUrl":"https://www.mcpbundles.com/skills/whatcanido-mcp-299e22dbd5","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://whatcanido.dev/api/mcp","hostedMcpUrl":null,"toolCount":10,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.whatcanido/whatcanido-mcp-299e22dbd5","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"find_providers","description":"Search across whatcanido for providers (businesses, freelancers, SaaS tools) that can perform a given business-level action type. Returns a ranked list with provider_id, name, description, services, action_types. Call this FIRST, before any other tool. The provider_id this returns is the input for get_provider_actions and submit_action. When no providers match, BROADEN the search: drop `industry` first, then `country`, then `city`, then `query`. Keep `action_type` because it scopes to providers","inputSchema":{"type":"object","properties":{"city":{"type":"string"},"limit":{"type":"number","default":10},"query":{"type":"string"},"country":{"type":"string"},"product":{"enum":["leadkit","bookio","projectkit","crm"],"type":"string"},"industry":{"type":"string"},"action_type":{"enum":["submit_request","request_quote","book_slot","ask_availability","create_ticket","start_project","pay_invoice","record_activity","cancel_booking","list_services"],"type":"string"}},"additionalProperties":false},"title":"Find providers","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_providers","displayName":"Find providers"},{"name":"get_provider_actions","description":"Return the action types a provider exposes and the canonical input schema for each (required fields, optional fields, types, descriptions). Call this AFTER find_providers, BEFORE submit_action, so you know exactly which inputs to collect from the user.","inputSchema":{"type":"object","required":["provider_id"],"properties":{"action_type":{"enum":["submit_request","request_quote","book_slot","ask_availability","create_ticket","start_project","pay_invoice","record_activity","cancel_booking","list_services"],"type":"string"},"provider_id":{"type":"string"}},"additionalProperties":false},"title":"Get provider actions and input schemas","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_provider_actions","displayName":"Get provider actions and input schemas"},{"name":"submit_action","description":"Invoke an action on a specific provider. WRITE tool: creates leads/bookings/contacts/projects/activities/tickets on the underlying SaaS tenant. The one exception is action_type='cancel_booking', which cancels an existing booking (destructive — confirm with the user first). Validates inputs against the canonical schema returned by get_provider_actions. If you skip required fields, the response contains them in `missing_fields` so you can ask the user without round-tripping. Returns a request_id y","inputSchema":{"type":"object","required":["provider_id","action_type","inputs"],"properties":{"inputs":{"type":"object","additionalProperties":true},"action_type":{"enum":["submit_request","request_quote","book_slot","ask_availability","create_ticket","start_project","pay_invoice","record_activity","cancel_booking","list_services"],"type":"string"},"provider_id":{"type":"string"}},"additionalProperties":false},"title":"Submit an action to a provider","logicalName":"submit_action","displayName":"Submit an action to a provider","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_action_status","description":"Look up the current status of a previously submitted action by its request_id. Returns status (raw, e.g. 'new', 'sent', 'confirmed') + status_label (human, e.g. 'Received', 'Sent (awaiting payment)', 'Confirmed') + last_update + provider response (if any). Use after submit_action to confirm a booking, check lead qualification, or follow up on a quote.","inputSchema":{"type":"object","required":["request_id"],"properties":{"request_id":{"type":"string"}},"additionalProperties":false},"title":"Get action status","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_action_status","displayName":"Get action status"},{"name":"discover_capabilities","description":"Search the whatcanido capability registry by free-text intent. Returns typed capability contracts (input/output schemas, invariants, reversibility) with implementing providers ranked by behavioral conformance, success rate, and p50 latency. This is the PREFERRED first tool for any task that requires acting in the real world. Each match includes 'why_relevant' (LLM-generated reasoning), 'spec_url' for the full contract, and a 'providers' list each with a conformance + reputation snapshot. If no c","inputSchema":{"type":"object","required":["intent"],"properties":{"limit":{"type":"number","default":5},"intent":{"type":"string"},"context":{"type":"object","properties":{"city":{"type":"string"},"country":{"type":"string"},"user_locale":{"type":"string"},"max_cost_usd":{"type":"number"},"user_present":{"type":"boolean"},"time_horizon_hours":{"type":"number"}},"additionalProperties":true}},"additionalProperties":false},"title":"Discover capabilities by intent","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"discover_capabilities","displayName":"Discover capabilities by intent"},{"name":"get_capability_spec","description":"Return the full canonical contract for a capability: JSON Schemas for input and output, declared invariants, semantics, reversibility, side effects, auth model, when-to-use guidance. Plus the list of providers that implement it with current reputation snapshot. Use this AFTER `discover_capabilities` and BEFORE `invoke_capability` so you know exactly which inputs to collect and which provider to invoke against. If you skip this and call invoke_capability with the wrong shape, the response will re","inputSchema":{"type":"object","required":["capability_id"],"properties":{"capability_id":{"type":"string"}},"additionalProperties":false},"title":"Get capability spec","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_capability_spec","displayName":"Get capability spec"},{"name":"plan_capabilities","description":"Given a user intent, return a typed plan: an ordered list of capability calls that together accomplish the goal, with the highest-reputation provider per step. The plan respects the capability registry's prerequisite graph — for example a plan that includes `booking.create_booking` automatically prepends `booking.check_availability`. Use this when the user's request spans more than one verb (e.g. 'find me an open yoga slot tomorrow morning and book it'). Each step exposes capability_id, provider","inputSchema":{"type":"object","required":["intent"],"properties":{"limit":{"type":"number"},"intent":{"type":"string"},"context":{"type":"object","additionalProperties":true}},"additionalProperties":false},"title":"Plan a multi-step capability sequence","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"plan_capabilities","displayName":"Plan a multi-step capability sequence"},{"name":"reverse_search_capabilities","description":"Given a JSON payload (something you found in user context, a webhook body, an export, a clipboard paste), return the capabilities whose input or output schema overlaps with the payload's shape. Use this when you don't have a verb-style intent but you do have data and want to ask 'what could I do with this?'. Returns matches ranked by structural overlap with `direction: 'input' | 'output' | 'both'`.","inputSchema":{"type":"object","required":["payload"],"properties":{"payload":{}},"additionalProperties":false},"title":"Reverse search capabilities by data shape","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"reverse_search_capabilities","displayName":"Reverse search capabilities by data shape"},{"name":"list_available_capabilities","description":"Return a compact roster of every capability with at least one enabled provider, grouped by category, with the best current conformance per capability. Use this as a self-introspection step: call once at the start of a task to know what is and isn't available, before deciding whether to attempt or to tell the user 'this isn't possible here'.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"List capabilities currently available in this installation","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_available_capabilities","displayName":"List capabilities currently available in this installation"},{"name":"invoke_capability","description":"Execute a capability call against a chosen provider with typed inputs. WRITE tool when the capability's category ends in '.write' (creates state, sends notifications, charges money, etc.) — confirm with the user before calling for any non-reversible capability. Read capabilities (category ending '.read') are safe to call without confirmation. Validates inputs against the capability's JSON Schema. On failure, returns a structured error with 'missing_fields' or schema violation detail so you can r","inputSchema":{"type":"object","required":["capability_id","provider_id","inputs"],"properties":{"inputs":{"type":"object","additionalProperties":true},"provider_id":{"type":"string"},"agent_vendor":{"type":"string"},"capability_id":{"type":"string"}},"additionalProperties":false},"title":"Invoke a capability against a chosen provider","logicalName":"invoke_capability","displayName":"Invoke a capability against a chosen provider","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=whatcanido&config=eyJ1cmwiOiAiaHR0cHM6Ly93aGF0Y2FuaWRvLmRldi9hcGkvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22whatcanido%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwhatcanido.dev%2Fapi%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22whatcanido%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwhatcanido.dev%2Fapi%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=whatcanido&connectorUrl=https%3A%2F%2Fwhatcanido.dev%2Fapi%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"whatcanido\" --url \"https://whatcanido.dev/api/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/whatcanido-mcp-299e22dbd5","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/whatcanido-mcp-299e22dbd5/tools/{tool}","mcpServerUrl":"https://whatcanido.dev/api/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/whatcanido-mcp-299e22dbd5?live=1"}