_ registry / mcp streamable-http · checked 5h ago

whatcanido

https://whatcanido.dev

Registry code: abc4e3f4b4abc2f3

api record

Whatcanido action grammar gateway. Suggested call order: (1) find_providers(action_type, query?) to locate providers; (2) get_provider_actions(provider_id) to read the canonical input schema; (3) submit_action(provider_id, action_type, inputs) to perform the action; (4) get_action_status(request_id) to check progress. Provider IDs are '<product>:<slug>'; request IDs are '<product>:<kind>:<id>'. Missing required fields come back in 'missing_fields' so you can ask the user without retrying blindly.

endpoint
https://www.whatcanido.dev/api/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing
karma
0 · newcomer
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
362ms

last good check

priced tools
0

of 10 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ used through this hub 30 days

The one measurement on this page that an operator cannot produce by editing a file on its own server: somebody else chose it, and paid to. Read the accounts before the calls — volume from one account is one relationship, and calling yourself is the cheap half. Both are what the ranking is built from, printed so the order can be checked rather than taken on trust.

accounts
0

distinct, expensive to fake

calls served
0

successful, last 30 days

_ what it can do 10 tools
2 open 8 never probed 2 of 10 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • find_providers open 5h ago

    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 that actually do what you need. City and country accept locale variants (`Praha` matches `Prague`, `Česko` matches `Czech Republic`, etc.). Industry accepts loose substrings (`design` matches `design_studio`). When the query has zero direct matches but the action_type filter has candidates, the server returns those candidates with score 0 and `matched: ['fallback:no_query_match']`. You can still pick from them.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "city": {
          "type": "string",
          "description": "Exact city filter (case-insensitive)."
        },
        "limit": {
          "type": "number",
          "default": 10,
          "description": "Max providers to return (default 10, max 50)."
        },
        "query": {
          "type": "string",
          "description": "Free-text search across provider name, tagline, description, industry, and services. Multi-word phrases match across multiple fields."
        },
        "country": {
          "type": "string",
          "description": "Exact country filter (case-insensitive)."
        },
        "product": {
          "enum": [
            "leadkit",
            "bookio",
            "projectkit",
            "crm"
          ],
          "type": "string",
          "description": "Restrict to a single underlying product. Usually leave empty; the grammar's whole point is cross-product discovery."
        },
        "industry": {
          "type": "string",
          "description": "Exact industry filter (case-insensitive)."
        },
        "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",
          "description": "Business-level action the user wants to perform. Use this to scope discovery to providers who actually do what you need."
        }
      },
      "additionalProperties": false
    }
    arguments 53 lines
  • list_available_capabilities open 5h ago

    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'.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_provider_actions unknown never probed

    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.

    mcp-tool

    {
      "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",
          "description": "Optional: only return the schema for this action type. Omit to get every action the provider implements."
        },
        "provider_id": {
          "type": "string",
          "description": "Format: <product>:<slug>. Example: 'leadkit:north-bureau'. From find_providers."
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • submit_action unknown never probed

    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 you can later pass to get_action_status. For read-only actions (ask_availability, list_services) returns the result in `data` with no request_id. Include `agent_vendor` in inputs when you can so each provider sees which agent acted.

    mcp-tool

    {
      "type": "object",
      "required": [
        "provider_id",
        "action_type",
        "inputs"
      ],
      "properties": {
        "inputs": {
          "type": "object",
          "description": "Canonical inputs per get_provider_actions schema. Snake-case keys (contact_email, not contactEmail). Include 'agent_vendor' if you can identify yourself.",
          "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",
          "description": "Format: <product>:<slug>."
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • get_action_status unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "request_id"
      ],
      "properties": {
        "request_id": {
          "type": "string",
          "description": "Returned by submit_action. Format: <product>:<kind>:<id>."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • discover_capabilities unknown never probed

    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 capability passes the relevance threshold, the response includes a 'negative_space' field describing what is missing rather than returning low-quality fuzzy matches. After picking a (capability_id, provider_id) call `get_capability_spec` to retrieve the canonical input schema then `invoke_capability` to actually execute.

    mcp-tool

    {
      "type": "object",
      "required": [
        "intent"
      ],
      "properties": {
        "limit": {
          "type": "number",
          "default": 5,
          "description": "Max capability matches to return (default 5, max 20)."
        },
        "intent": {
          "type": "string",
          "description": "Free-text description of what the user wants done. Best practice: pass the user's request mostly verbatim."
        },
        "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"
            }
          },
          "description": "Optional structured context that improves ranking (locale, city, country, urgency, cost ceiling, whether the user is present for interactive auth).",
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    }
    arguments 43 lines
  • get_capability_spec unknown never probed

    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 return missing_fields or schema errors.

    mcp-tool

    {
      "type": "object",
      "required": [
        "capability_id"
      ],
      "properties": {
        "capability_id": {
          "type": "string",
          "description": "Format: <domain>.<verb>. Example: 'booking.create_booking'. From discover_capabilities."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • plan_capabilities unknown never probed

    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, conformance, p50 latency, cost, and a `prerequisite_for` array. The agent then iterates through the plan calling invoke_capability per step.

    mcp-tool

    {
      "type": "object",
      "required": [
        "intent"
      ],
      "properties": {
        "limit": {
          "type": "number",
          "description": "Max seed capabilities (prerequisites are added on top). Default 5."
        },
        "intent": {
          "type": "string",
          "description": "User goal in free text."
        },
        "context": {
          "type": "object",
          "description": "Optional structured context (locale, city, urgency, cost ceiling, user_present).",
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • reverse_search_capabilities unknown never probed

    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'`.

    mcp-tool

    {
      "type": "object",
      "required": [
        "payload"
      ],
      "properties": {
        "payload": {
          "description": "Arbitrary JSON value whose shape will be matched against capability schemas."
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • invoke_capability unknown never probed

    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 repair without round-tripping. Every call is logged for behavioral telemetry and feeds into the provider's reputation score for future discovery rankings. On success returns a `capability_call_id` plus the capability's declared output fields per its contract.

    mcp-tool

    {
      "type": "object",
      "required": [
        "capability_id",
        "provider_id",
        "inputs"
      ],
      "properties": {
        "inputs": {
          "type": "object",
          "description": "Canonical inputs matching the capability's input JSON Schema exactly (snake_case keys).",
          "additionalProperties": true
        },
        "provider_id": {
          "type": "string",
          "description": "Provider identifier from get_capability_spec. Format: <transport>:<id>, e.g. 'bookio:salon-aurora'."
        },
        "agent_vendor": {
          "type": "string",
          "description": "Self-identification (claude, chatgpt, cursor, ...). Strongly recommended."
        },
        "capability_id": {
          "type": "string",
          "description": "Format: <domain>.<verb>."
        }
      },
      "additionalProperties": false
    }
    arguments 28 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/abc4e3f4b4abc2f3/badge.svg)](https://brick.blue/agent/abc4e3f4b4abc2f3)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Own the domain? Prove it and the listing carries a verified badge here too: passport.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.