protogrid

Search / com.coppoak/canopy

Canopy by Copp Oak

R0· no sign-in

Book local service pros from your AI assistant: real availability, instant booking, easy cancels.

v0.1.1 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality91strong
Trust83of 100
Uptime, 30 days100%
Latency p50331 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "canopy": {
      "type": "http",
      "url": "https://mcp.coppoak.com/mcp/public"
    }
  }
}
claude mcp add --transport http canopy https://mcp.coppoak.com/mcp/public
[mcp_servers.canopy]
url = "https://mcp.coppoak.com/mcp/public"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "canopy": {
      "type": "remote",
      "url": "https://mcp.coppoak.com/mcp/public",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "canopy": {
      "type": "http",
      "url": "https://mcp.coppoak.com/mcp/public"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=canopy&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmNvcHBvYWsuY29tL21jcC9wdWJsaWMifQ%3D%3D"
}
{
  "servers": {
    "canopy": {
      "type": "http",
      "url": "https://mcp.coppoak.com/mcp/public"
    }
  }
}
{
  "mcpServers": {
    "canopy": {
      "httpUrl": "https://mcp.coppoak.com/mcp/public"
    }
  }
}
extensions:
  "canopy":
    enabled: true
    name: "canopy"
    type: streamable_http
    uri: "https://mcp.coppoak.com/mcp/public"
    timeout: 300

Quality 91 / 100strong

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations10 of 10 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 6,538 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stability100 · weight 15
  • pass
    stability.changes1 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
  • pass
    stability.new_linksno tool change named a new site
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

10 tools, about 6,538 tokens to load them all · tool set 3e4ed0394fa2 · tools last changed 2026-11-04 · checked 2026-11-14 07:03 UTC

Tool changes

  • canopy_check_bookablechangeddescription
    before

    Given businesses you already found for the user (name plus phone, website or address), report which ones can be booked through Canopy and how (booking_mode). Results come back in exactly the order you sent them. Canopy never ranks, filters or recommends businesses. Results are returned in the same order as the input.

    after · 67% of words in common

    Given businesses you already found for the user (name plus phone, website or address with ZIP code), report which ones can be booked through Canopy and how (booking_mode). An entry that is not bookable says why (reason); needs_confirmation means use resolve_business so the user can confirm it. Results come back in exactly the order you sent them. Canopy never ranks, filters or recommends businesses. Results are returned in the same order as the input.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-3d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.coppoak.com/mcp/public streamable-httpnoneyes100%331 ms2025-11-252026-11-14

Tools (10)

cancel_bookingdestructiveCancel a booking made through Canopy. The appointment is called off in the business's calendar right away and the customer is emailed. This cannot be undone: confirm with the customer before calling. An appointment that has already started cannot be cancelled here. Needs the manage_token that came back with the booking_id.
canopy_check_bookableread-onlyGiven businesses you already found for the user (name plus phone, website or address with ZIP code), report which ones can be booked through Canopy and how (booking_mode). An entry that is not bookable says why (reason); needs_confirmation means use resolve_business so the user can confirm it. Results come back in exactly the order you sent them. Canopy never ranks, filters or recommends businesses. Results are returned in the same order as the input.
get_availabilityread-onlyList open appointment slots for a Canopy business, optionally for one service and one location, between two dates. Slots are cached from the business calendar (see synced_at); the time is re-checked live when you book.
get_business_termsread-onlyGet the prices of a Canopy business's bookable services, its fees and its cancellation terms, exactly as the business has them on file. Anything the business has not put on file comes back as on_file=false: tell the customer it is not on file (they can ask the business) and never estimate or fill in a value.
get_request_statusread-onlyThis is Canopy's get-booking tool (there is no other): it looks up a booking request, and the booking an approved request became. Pass request_id and the manage_token that came back when the request was made (request_booking at a request-times business, propose_times or request_callback). Returns pending, approved, rejected, counter_proposed, expired, or converted, plus booking_confirmed and booking_status, and, once the business approves a time, the booking_id and booking_manage_token that reschedule_booking and cancel_booking need. An instant-confirm booking has no request_id: the request_booking response is already its record. Needs the manage_token.
propose_timesPropose preferred times to a business that reviews booking requests. The business will approve one time (that books it; the customer is emailed a confirmation) or propose an alternative (the customer confirms it from an emailed code). Check status with get_request_status.
request_bookingStart a booking with a Canopy-connected business. Canopy automatically routes to the correct flow based on the operator's booking mode: auto-confirm (booked right away in the business's calendar; the customer is emailed a confirmation), request-times (propose preferred times), or submission-only (callback request). Summarize the booking and get the customer's go-ahead before calling.
request_callbackRequest a callback from a business. They will contact the customer directly. No calendar booking is created.
reschedule_bookingAsk to move a booking the customer already confirmed (booked with the business) to another open slot of the same service and location (slot_id from get_availability). Nothing moves right away: Canopy emails the customer a link to approve the new time, and the business calendar changes only after they approve. A hold the customer has not confirmed yet cannot be moved. Calling again with the same slot_id reports whether it was approved. Needs the manage_token that came back with the booking_id.
resolve_businessread-onlyMatch one business the user named to its Canopy listing, by phone, website, or name (add the city, state or ZIP code when you know it). Returns at most one match, with its booking_mode and locations, or found=false. When a name alone is not certain, found=false comes with up to 5 candidates in alphabetical order for the user to choose from.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.coppoak/canopy",
  "title": "Canopy by Copp Oak",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.coppoak.com/mcp/public",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.1",
  "websiteUrl": "https://coppoak.com/canopy/",
  "description": "Book local service pros from your AI assistant: real availability, instant booking, easy cancels."
}