protogrid

Search / com.commontape/booking

CommonTape

R0· no sign-in

Quote, hold and book US house cleaning jobs on a customer's behalf, at each business's own prices.

v1.2.0 · active · website · descriptor JSON · versions

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

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "booking": {
      "type": "http",
      "url": "https://commontape.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${BOOKING_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http booking https://commontape.com/api/mcp --header "Authorization: Bearer ${BOOKING_TOKEN}"
[mcp_servers.booking]
url = "https://commontape.com/api/mcp"
bearer_token_env_var = "BOOKING_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "booking": {
      "type": "remote",
      "url": "https://commontape.com/api/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:BOOKING_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "booking": {
      "type": "http",
      "url": "https://commontape.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${BOOKING_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=booking&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vY29tbW9udGFwZS5jb20vYXBpL21jcCIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciAke0JPT0tJTkdfVE9LRU59In19"
}
{
  "servers": {
    "booking": {
      "type": "http",
      "url": "https://commontape.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${BOOKING_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "booking": {
      "httpUrl": "https://commontape.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${BOOKING_TOKEN}"
      }
    }
  }
}
extensions:
  "booking":
    enabled: true
    name: "booking"
    type: streamable_http
    uri: "https://commontape.com/api/mcp"
    headers:
      "Authorization": "Bearer ${BOOKING_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${BOOKING_TOKEN}. The registry never accepts secret values.

Quality 70 / 100needs work

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 hygiene64 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length7 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: discover (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); hold (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); quote (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 7,259 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes8 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

10 tools, about 7,259 tokens to load them all · tool set 3b8846f6275c · tools last changed 2026-10-14 · checked 2026-10-20 11:08 UTC

Tool changes

  • registerchangedinput schema
  • searchchangeddescription
    before

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Every business line carries facts_confirmed_at (when its owner last confirmed its facts: a save, CommonTape's switch-on or a Yes on the daily email; null if never), stale (true when that is more than 7 days ago or never) and stale_reason in plain words; a stale business ranks after fresh ones (order_keys: outcome, freshness, nice_met, price, rotation). Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check invoice.receipt invoice.person invoice.company. Word list version 6.

    after · 97% of words in common

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Every business line carries facts_confirmed_at (when its owner last confirmed its facts: a save, CommonTape's switch-on or a Yes on the daily email; null if never), stale (true when that is more than 7 days ago or never) and stale_reason in plain words; a stale business ranks after fresh ones (order_keys: outcome, freshness, nice_met, price, rotation). Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check invoice.receipt invoice.person invoice.company. Word list version 6. Each business line says availability_source (owner_stated, or calendar_feed when the business lets CommonTape read its own calendar: busy times are never offered) and calendar_checked_at.

  • registerchangeddescription
    before

    Get your own key, no human needed. Send agent_name (what your agent is called), owner_label (the plain name business owners will see next to a job, 1-40 characters) and contact_email. The key (ct_live_...) is in the answer ONCE: keep it and send it as Authorization: Bearer <key>. Trial limits: 30 requests a minute, 3 open holds, 5 bookings a day; the email sent to contact_email carries a link that raises them to 60 a minute, 10 holds, no daily cap, and your key page (usage, rotate, revoke). 3 keys a day per address. The demo key needs no registration.

    after · 97% of words in common

    Get your own key, no human needed. Send agent_name (what your agent is called), owner_label (the plain name business owners will see next to a job, 1-40 characters) and contact_email. The key (ct_live_...) is in the answer ONCE: keep it and send it as Authorization: Bearer <key>. Starter limits: 30 requests a minute, 3 open holds, 5 bookings a day; the email sent to contact_email carries a link that raises them to 60 a minute, 10 holds, no daily cap, and your key page (usage, rotate, revoke). 3 keys a day per address. The demo key needs no registration.

  • searchchangeddescription
    before

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check invoice.receipt invoice.person invoice.company. Word list version 6.

    after · 90% of words in common

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Every business line carries facts_confirmed_at (when its owner last confirmed its facts: a save, CommonTape's switch-on or a Yes on the daily email; null if never), stale (true when that is more than 7 days ago or never) and stale_reason in plain words; a stale business ranks after fresh ones (order_keys: outcome, freshness, nice_met, price, rotation). Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check invoice.receipt invoice.person invoice.company. Word list version 6.

  • taxonomychangeddescription
    before

    The fixed word list (version, groups, every key with its label and synonyms) agents use to describe a job and a home. Public, no key; the same answer as GET /api/v1/taxonomy/house_cleaning. Word list version 5.

    after · 94% of words in common

    The fixed word list (version, groups, every key with its label and synonyms) agents use to describe a job and a home. Public, no key; the same answer as GET /api/v1/taxonomy/house_cleaning. Word list version 6.

  • searchchangeddescription, input schema
    before

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check. Word list version 5.

    after · 98% of words in common

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check invoice.receipt invoice.person invoice.company. Word list version 6.

  • taxonomychangeddescription
    before

    The fixed word list (version, groups, every key with its label and synonyms) agents use to describe a job and a home. Public, no key; the same answer as GET /api/v1/taxonomy/house_cleaning.

    after · 97% of words in common

    The fixed word list (version, groups, every key with its label and synonyms) agents use to describe a job and a home. Public, no key; the same answer as GET /api/v1/taxonomy/house_cleaning. Word list version 5.

  • searchchangeddescription
    before

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check

    after · 99% of words in common

    Start here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check. Word list version 5.

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-7d-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://commontape.com/api/mcp streamable-httpnoneyes100%261 ms2025-11-252026-10-20

Tools (10)

bookCommit a hold with the customer's details. Returns booked, or pending_approval (the owner must say yes: the quote's booking_authority was approval_required, or the owner's booking setting tightened since; the time stays reserved; poll status until decide_by, about once a minute: the owner has up to 2 hours, never later than an hour before the job (a job starting within about an hour keeps its hold's time); jobs waiting count toward your open holds; with no answer by then the job is expired: the job ends and the reserved time is released; you may cancel while waiting), declined (with the owner's reason, its canonical code, next_actions and next_available) or expired. Booking an already booked job answers ALREADY_BOOKED. A declined or expired answer carries alternatives and if_changed (businesses one change away: never bookable from the item; ask the customer, then search again without change.word). Every answer carries state (one of quote_incomplete, quoted, held, pending_approval, booked, completed, declined, cancelled, supplier_cancelled, expired), allowed_actions and next_actions; every error carries a code and next_actions. quote_incomplete: Not priced yet: the job needs more facts. needs says which. Nothing is held. Allowed: quote. quoted: An exact price for one exact job version, until expires_at. Nothing is held: the time is not reserved yet. Allowed: hold, quote. held: A time is reserved for this job until hold_expires_at. Book it, or cancel to let it go. Allowed: book, cancel. pending_approval: Asked to book; the owner must say yes by approval.deadline. The time stays reserved while waiting. No answer by then and the job expires and the time is released. Allowed: status, cancel. booked: The owner is committed to do this job at this price and time. Allowed: status, quote, modify, cancel. completed: The job was done. completion.source says who marked it: the owner (merchant) or CommonTape after the window ended (system). Allowed: status. declined: The owner said no. decline.reason says why; decline.next_available is the next open time when there is one. Allowed: status, quote. cancelled: Called off by the agent. The time was released. Allowed: status, quote. supplier_cancelled: Called off by the owner after it was booked. The job can be quoted again elsewhere from job. Allowed: status, quote. expired: Ran out of time: the quote passed expires_at, or the hold or the owner's answer passed its deadline. The time was released. Allowed: status, quote.
cancelCancel your own held, waiting (pending_approval) or booked job and release the slot. Optional reason: customer_changed_plans, customer_booked_elsewhere, booked_in_error, customer_other. The answer carries cancellation (by, at, reason, fee null, policy, capacity_released): CommonTape takes no cancellation fee. Already cancelled answers ALREADY_CANCELLED (with recovery when the business called it off).
discoverDescribe one merchant: services with pricing_model (packages: each package with its price, limits, kinds and the tasks it includes; the price is the cheapest package that fits the whole home and does every must-have task), typed inputs (incl. its answer for every job condition: no_charge, extra_charge with amount, ask_first, not_taken, not_answered), add-ons and passport (what each service covers, per task word), the business time zone (timezone), service area (area, town and state in area_details, further-out ZIPs in travel), crew, takes (the kinds of home and the largest home it takes; null = not answered; services[].takes are the limits that apply to each service, which may be looser or tighter than the business: judge a job by those; ask_first_above and unsure mean the owner says yes first, never a miss), when (only its plain day-and-hour Nos: min_days_ahead, weekends, evening_starts, holidays; null = not answered), services[].matchable (false = task list not confirmed: not searchable or quotable, reason scope_not_confirmed), brings, products, payment (declared; the customer pays the business directly) and hours in that time zone.
holdReserve one window from a quote: the quoted job becomes held (same transaction_id). An expired or replaced quote answers QUOTE_EXPIRED: quote again. M-19: pick a window of the quote's job_hours; a window of another length, or one no longer in the business's hours, answers OUTSIDE_HOURS. M-19b: the hold counts the job's cleaners (job_people) against the business's cleaners in all and keeps its time between jobs; a window that no longer fits answers CAPACITY_FULL. Holds expire; book before hold_expires_at. Refused with PRICE_MISMATCH when the quote does not state exactly the window's conditions (weekend, evening, holiday, same-day, next-day): quote again as the message says. M-18: the answer says what it holds (quote_id, price, window, booking_authority); a hold locks the price. If the business changed since the quote the job is judged again: a lower price is held and price_changed says so; a higher one is refused PRICE_CHANGED (old and new amount, reasons, a fresh quote_token) unless accept_price_up_to covers it. HOLD_EXISTS: you already hold this job at this business (transaction_id). BUSINESS_UNAVAILABLE: it stopped taking jobs or no longer does this one. Recoverable refusals carry alternatives (other times, other businesses; never one that breaks a must). Dead ends also carry if_changed: up to 2 businesses that could do the job if the customer gave up ONE thing (change.word), with the price then; never holdable from the item (no token, no slot): ask the customer, then search again without that word. Holds you let run out count: five in 24 hours and the next answers RATE_LIMITED with retry_after_seconds. M-21: a time that is too soon (notice, or the business's same-day / next-day No) answers INSUFFICIENT_NOTICE with error.earliest (RFC 3339, business offset): pick a later window or quote again; a weekend, evening or holiday No answers OUTSIDE_HOURS.
modifyCommit a change to a booked job: first quote it again with its transaction_id, then modify with that quote_token, optionally moving it to another window. The job stays booked; the old version and price are kept. The answer and every refusal carry change: kinds (capacity, commercial, eligibility, approval, non_commercial), rechecked, price from and to; a refused change leaves the booked job as it was. Refused with NEEDS_OWNER_APPROVAL when the new quote adds, drops or rewords something the owner must approve, or would not book on its own and costs more or moves an owner-approved job. A job the business called off answers SUPPLIER_CANCELLED with recovery. Refused with PRICE_MISMATCH when it is for a different ZIP, leaves out a task the booked job asked for (send every booked task again in inputs.addons), drops the home (leaves out a fact of the home the booked job stated: its kind, size or a room count; new values are allowed; refused with next_actions cancel, search), or does not state exactly the day and hour conditions of the window (a job that stays in its window keeps the same-day or next-day condition it was booked with). The owner's yes covered one version only. Check the new quote's price against your customer's limit before you modify: a change is priced against the business's current offering. Moving to a time that is too soon answers INSUFFICIENT_NOTICE with error.earliest; a job that keeps its time is never re-checked.
quoteQuote one merchant's service. Every quote is a record: it returns transaction_id, quote_id, job_version and state quoted (or quote_incomplete). Pass transaction_id to quote the same job again (its next version; everything asked for before is carried forward); on a booked job that quote is the change modify commits. A job that ended is never revived: quoting it starts a new job. Search already returns prices; a search price is not a promise and becomes a record only when held. status ready = one exact amount, breakdown, expires_at, quote_token; status incomplete = a needs list of inputs still missing (never a range). Call discover first to see each service's inputs. State every job condition that is true in inputs.conditions. A job the business does not take (its kind of home, largest home, or a condition it marked not taken) is refused in plain words. For a service priced by packages, send must-have tasks in inputs.addons. A task the business does not offer on its own is quoted only in a package that includes it. A ready quote's package.includes lists the tasks it covers. Includes bookable windows (allocation_id), each with the day and hour conditions the quote must state to hold it.
registerGet your own key, no human needed. Send agent_name (what your agent is called), owner_label (the plain name business owners will see next to a job, 1-40 characters) and contact_email. The key (ct_live_...) is in the answer ONCE: keep it and send it as Authorization: Bearer <key>. Starter limits: 30 requests a minute, 3 open holds, 5 bookings a day; the email sent to contact_email carries a link that raises them to 60 a minute, 10 holds, no daily cap, and your key page (usage, rotate, revoke). 3 keys a day per address. The demo key needs no registration.
searchStart here. Every result carries trust (facts with who vouches for each and until when, lapsed facts, the job record); trust never changes the order, the price, who is eligible or what needs approval. A search result is not a promise: prices and windows are as of availability_checked_at, and only a booked job is committed. Every business line carries facts_confirmed_at (when its owner last confirmed its facts: a save, CommonTape's switch-on or a Yes on the daily email; null if never), stale (true when that is more than 7 days ago or never) and stale_reason in plain words; a stale business ranks after fresh ones (order_keys: outcome, freshness, nice_met, price, rotation). Describe the cleaning job once and get the businesses that can do it: matches (each with one exact price or a needs list, a quote_token and bookable windows, so you can go straight to hold) needs_more (businesses that take the job but whose price needs something the job did not state: a needs list and a plain why) owner_must_quote (businesses that take the job but whose owner quotes it: a plain why, no price, nothing to hold) and near_misses with the reasons they missed (each a plain code and a label). Each match carries booking_authority: auto (books on its own) or approval_required with its reasons (owner_approves_every_job, over_auto_book_limit, business_not_listed, special_request, or the ask-first key); outcome conditional = approval is needed for something the customer asked for, and book returns pending_approval. book may still ask when it said auto (the owner tightened the setting), never the reverse. It is the business's say-so only: your customer's permission to book or spend is yours to keep. Never assume a business does something not in its answer. Anything not on the word list goes in special_requests as plain text. Job conditions go in inputs.conditions (cond.same_day cond.next_day cond.weekend cond.evening cond.holiday cond.pets cond.no_free_parking cond.stairs_no_lift cond.very_dirty cond.nobody_home cond.mould cond.infestation cond.post_construction cond.gated_entry cond.lockbox_entry): each adds the business's charge, adds nothing, needs the owner's approval, or is not taken (the business is then a near-miss, condition_not_taken). A business is never sent a home it does not take (kind, bedrooms, size, bathrooms, floors). Words: task.floors task.dusting task.bathrooms task.kitchen_surfaces task.trash task.mirrors task.appliance_exteriors task.microwave_interior task.make_beds task.change_linen task.fridge_interior task.oven_interior task.cabinets_interior task.cabinet_fronts task.closets_interior task.baseboards task.doors_frames task.walls_spot task.light_fixtures task.vents task.windows_interior task.window_tracks task.blinds task.tile_grout task.upholstery task.pet_hair task.dishes task.laundry task.organizing task.balcony task.garage task.carpet_shampoo task.post_construction_dust brings.supplies brings.vacuum brings.mop brings.steam_cleaner brings.carpet_machine brings.ladder brings.high_reach brings.industrial_vacuum product.eco_friendly product.fragrance_free product.pet_safe product.uses_customer_products product.bleach_free product.hypoallergenic crew.solo crew.two_or_more crew.three_or_more pay.cash pay.card pay.bank_transfer pay.app pay.check invoice.receipt invoice.person invoice.company. Word list version 6. Each business line says availability_source (owner_stated, or calendar_feed when the business lets CommonTape read its own calendar: busy times are never offered) and calendar_checked_at.
statusThe authoritative state of one of your jobs and everything needed to act on it: the job (current version), price, quote, window, approval (what needs the owner's yes and why: reasons, the deadline, what happens at it), commitment (who committed the booking: the owner's rule or the owner; your call is your assertion for your customer), decline (reason, code, next_actions, next_available), completion (who marked it done), cancellation (who, when, why, no fee), receipt (what was booked, from the record, with a plain text confirmation for your customer), recovery on supplier_cancelled (the job to search again with), versions, and allowed_actions / next_actions. Never the customer's details. A dead end reached in the last 24 hours (declined, expired, cancelled because the business stopped taking jobs, supplier_cancelled) carries alternatives and if_changed, kept up to 60 seconds (alternatives_worked_out_at). Every answer carries state (one of quote_incomplete, quoted, held, pending_approval, booked, completed, declined, cancelled, supplier_cancelled, expired), allowed_actions and next_actions; every error carries a code and next_actions. quote_incomplete: Not priced yet: the job needs more facts. needs says which. Nothing is held. Allowed: quote. quoted: An exact price for one exact job version, until expires_at. Nothing is held: the time is not reserved yet. Allowed: hold, quote. held: A time is reserved for this job until hold_expires_at. Book it, or cancel to let it go. Allowed: book, cancel. pending_approval: Asked to book; the owner must say yes by approval.deadline. The time stays reserved while waiting. No answer by then and the job expires and the time is released. Allowed: status, cancel. booked: The owner is committed to do this job at this price and time. Allowed: status, quote, modify, cancel. completed: The job was done. completion.source says who marked it: the owner (merchant) or CommonTape after the window ended (system). Allowed: status. declined: The owner said no. decline.reason says why; decline.next_available is the next open time when there is one. Allowed: status, quote. cancelled: Called off by the agent. The time was released. Allowed: status, quote. supplier_cancelled: Called off by the owner after it was booked. The job can be quoted again elsewhere from job. Allowed: status, quote. expired: Ran out of time: the quote passed expires_at, or the hold or the owner's answer passed its deadline. The time was released. Allowed: status, quote.
taxonomyThe fixed word list (version, groups, every key with its label and synonyms) agents use to describe a job and a home. Public, no key; the same answer as GET /api/v1/taxonomy/house_cleaning. Word list version 6.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.commontape/booking",
  "title": "CommonTape",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://commontape.com/api/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Bearer <your key>. Get your own key with POST https://commontape.com/api/v1/keys (or this server's register tool): shown once, starter limits raised by email. Without it the server still lists its tools and answers register, taxonomy and a search without quote tokens. To try it with no sign-up, use the demo key: Bearer ct_demo_nQz4WaXqJvMoL8A6FYCaRtpJnsF7UrZh (reaches only a pretend business in ZIP 10001, never a real one)."
        }
      ]
    }
  ],
  "version": "1.2.0",
  "websiteUrl": "https://commontape.com/docs",
  "description": "Quote, hold and book US house cleaning jobs on a customer's behalf, at each business's own prices."
}