Koskamo

RateDeed MCP

An MCP server for the US contractor marketplace that allows AI agents to search for licensed local professionals, plan home improvement projects with cost tiers, and manage quote requests. It supports public tools for discovery and account-linked tools for submitting and tracking quote statuses with escrow-enabled pros.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

RateDeed MCP logo, by RatedeedCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by Ratedeed
You need:quote-request tools use OAuth 2.1 account linking
MCP endpoint (Streamable HTTP)
https://www.ratedeed.com/mcp
Vendor documentation

What its tools do

7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

7 of 7 have a description · 7 of 7 declare behavior hints · 6 of 7 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for licensed contractors by job type and ZIP code
  • Plan home remodel projects with cost tier estimates
  • Submit quote requests to escrow-enabled professionals
  • Track the status of submitted quote requests

Source and maintenance

Community listingRegistry 1.1.0

Protocol and capabilities

Server
ratedeed 1.1.0
MCP protocol negotiated in check
2025-11-25
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

RateDeed helps homeowners in the United States plan home projects and hire local contractors with escrow-protected payments. US addresses only (5-digit ZIP codes). Typical flow: plan_project (optional) -> search_contractors -> get_contractor -> submit_quote_request -> get_request_status. cancel_request withdraws a request. submit_quote_request and cancel_request act on the homeowner's linked RateDeed account. Before calling them, show the homeowner exactly what will be sent or cancelled and get their approval. Only contractors with escrow_enabled=true can receive quote requests through RateDeed. For others, share their phone number or profile so the homeowner can contact them directly. No tool charges money or books work. A request is complete when it has a request_id; the contractor replies with a quote, and the homeowner accepts it by paying into escrow in the RateDeed app. Never describe a request as a booking or a payment.

Tools

7 advertised

search_contractors — Find local contractors
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find contractors near a US ZIP code for a job described in plain English (e.g. "water stain on my ceiling", "replace old carpet with hardwood"). Returns ranked local pros with ratings, distance, license verification and escrow_enabled (whether RateDeed can send them a quote request). Read-only.

search_contractors input schema
{
  "type": "object",
  "required": [
    "request",
    "zip"
  ],
  "properties": {
    "zip": {
      "type": "string",
      "pattern": "^\\d{5}$",
      "description": "5-digit US ZIP code of the property."
    },
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1
    },
    "trade": {
      "enum": [
        "Plumbers",
        "Electricians",
        "HVAC",
        "Roofers",
        "Painters",
        "Landscapers",
        "Cleaners",
        "Handymen",
        "Carpenters",
        "General Contractors",
        "Concrete",
        "Flooring",
        "Masons",
        "Drywall",
        "Insulation",
        "Framing"
      ],
      "type": "string",
      "description": "Optional: restrict to one trade if already known."
    },
    "request": {
      "type": "string",
      "maxLength": 300,
      "description": "What the homeowner needs done, in their own words."
    }
  },
  "additionalProperties": false
}
search_contractors annotations
{
  "title": "Find local contractors",
  "readOnlyHint": true,
  "openWorldHint": true
}
get_contractor — Get contractor details
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get a contractor's RateDeed profile by slug (from search_contractors): services, service area, rating, review summary, license verification, contact details and escrow_enabled. Read-only.

get_contractor input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 200,
      "description": "Contractor slug from search results."
    }
  },
  "additionalProperties": false
}
get_contractor annotations
{
  "title": "Get contractor details",
  "readOnlyHint": true,
  "openWorldHint": true
}
plan_project — Plan a home project
Advertised by the server during the last successful anonymous check.
Advertised read-only

Suggest remodel and repair projects for a space in the home, ranked for the homeowner's goals and budget, with rough US cost tiers and the trades that do the work. For a photo-based plan, the homeowner can use the remodel_ideas_url. Read-only.

plan_project input schema
{
  "type": "object",
  "required": [
    "space"
  ],
  "properties": {
    "goals": {
      "type": "array",
      "items": {
        "enum": [
          "refresh",
          "repair",
          "light",
          "storage",
          "value",
          "efficiency",
          "outdoor"
        ],
        "type": "string"
      },
      "description": "What the homeowner wants to improve."
    },
    "space": {
      "enum": [
        "kitchen",
        "bathroom",
        "living_room",
        "bedroom",
        "dining_room",
        "home_office",
        "laundry",
        "basement",
        "attic",
        "garage",
        "entry",
        "exterior",
        "backyard",
        "under_construction",
        "utility"
      ],
      "type": "string",
      "description": "Which part of the home."
    },
    "budget": {
      "enum": [
        "any",
        "low",
        "mid",
        "high"
      ],
      "type": "string",
      "default": "any",
      "description": "low = under $2.5k, mid = $2.5k-$15k, high = $15k+."
    },
    "condition": {
      "enum": [
        "worn",
        "fresh",
        "unknown"
      ],
      "type": "string",
      "default": "unknown",
      "description": "worn = dated or damaged; fresh = recently updated."
    }
  },
  "additionalProperties": false
}
plan_project annotations
{
  "title": "Plan a home project",
  "readOnlyHint": true,
  "openWorldHint": false
}
start_hire — Find escrow-enabled pros for a job
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Read-only. With contractor_slug, checks whether that pro can receive a quote request; otherwise picks up to 3 escrow-enabled pros near the ZIP for the job. Returns each pro with a prefilled RateDeed link for homeowners without a linked account. With a linked account, send the request directly with submit_quote_request. Nothing is sent or charged by this tool.

start_hire input schema
{
  "type": "object",
  "required": [
    "zip",
    "project_title",
    "project_description"
  ],
  "properties": {
    "zip": {
      "type": "string",
      "pattern": "^\\d{5}$",
      "description": "5-digit US ZIP code of the property."
    },
    "trade": {
      "enum": [
        "Plumbers",
        "Electricians",
        "HVAC",
        "Roofers",
        "Painters",
        "Landscapers",
        "Cleaners",
        "Handymen",
        "Carpenters",
        "General Contractors",
        "Concrete",
        "Flooring",
        "Masons",
        "Drywall",
        "Insulation",
        "Framing"
      ],
      "type": "string",
      "description": "Trade for the job, if known."
    },
    "project_title": {
      "type": "string",
      "maxLength": 100,
      "description": "Short title, e.g. \"Replace leaking kitchen faucet\"."
    },
    "contractor_slug": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional: a specific contractor from search_contractors."
    },
    "project_description": {
      "type": "string",
      "maxLength": 1000,
      "description": "Details the contractor needs: what, where, size, timing."
    }
  },
  "additionalProperties": false
}
start_hire annotations
{
  "title": "Find escrow-enabled pros for a job",
  "readOnlyHint": true,
  "openWorldHint": true
}
submit_quote_request — Send a quote request
Advertised by the server during the last successful anonymous check.
Open-world

Sends a quote request from the signed-in homeowner to one escrow-enabled contractor and returns a request_id. This shares the homeowner's name and the project details (title, description, ZIP, timeline, budget) with that contractor and starts a RateDeed conversation with them. It does not charge anything or commit the homeowner to hire. Before calling, show the homeowner the contractor and every field that will be sent, and get their approval; ask again if any detail changes. Only contractors with escrow_enabled=true can receive requests. Use a new idempotency_key for each new request and reuse it when retrying the same one; after a timeout or error, call get_request_status without request_id to check whether it was sent before retrying. Requires a linked RateDeed account (scope quotes:write).

submit_quote_request input schema
{
  "type": "object",
  "required": [
    "contractor_slug",
    "project_title",
    "project_description",
    "zip"
  ],
  "properties": {
    "zip": {
      "type": "string",
      "pattern": "^\\d{5}$",
      "description": "5-digit US ZIP code of the property."
    },
    "budget": {
      "enum": [
        "under-1k",
        "1k-3k",
        "3k-5k",
        "5k-10k",
        "10k-25k",
        "25k-plus",
        "not-sure"
      ],
      "type": "string",
      "description": "The homeowner's target budget range, if they gave one."
    },
    "category": {
      "enum": [
        "Plumbing",
        "Electrical",
        "HVAC & Heating",
        "Roofing",
        "Painting",
        "Remodeling",
        "Flooring",
        "Landscaping",
        "Carpentry",
        "Handyman",
        "Masonry",
        "General Contracting"
      ],
      "type": "string",
      "description": "Project category, if known."
    },
    "timeline": {
      "enum": [
        "asap",
        "1-2-weeks",
        "1-month",
        "flexible"
      ],
      "type": "string",
      "description": "When the homeowner wants it done: asap (24-48 hours), 1-2-weeks, 1-month, flexible."
    },
    "project_title": {
      "type": "string",
      "maxLength": 100,
      "minLength": 3,
      "description": "Short title, e.g. \"Replace leaking kitchen faucet\"."
    },
    "contractor_slug": {
      "type": "string",
      "maxLength": 200,
      "description": "Slug of an escrow_enabled contractor from search_contractors."
    },
    "idempotency_key": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:-]+$",
      "maxLength": 200,
      "minLength": 8,
      "description": "Unique per request (e.g. a UUID). Retrying with the same key never sends a second request."
    },
    "project_description": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 15,
      "description": "What needs doing: the problem, rooms or areas, sizes, materials. Do not include phone numbers, emails or payment details."
    }
  },
  "additionalProperties": false
}
submit_quote_request annotations
{
  "title": "Send a quote request",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_request_status — Check quote requests
Advertised by the server during the last successful anonymous check.
Advertised read-only

Shows the status of the homeowner's quote requests: pending (waiting for the contractor), quoted (with the quote total, card processing fee, payment schedule and expiry), accepted (with job and escrow status), quote_declined, quote_expired or cancelled. Pass request_id for one request, or omit it to list the most recent ones. Read-only. Requires a linked RateDeed account (scope quotes:read).

get_request_status input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 25,
      "minimum": 1,
      "description": "How many recent requests to list when request_id is omitted."
    },
    "request_id": {
      "type": "string",
      "pattern": "^[Qq][Rr]-[0-9A-Za-z]{10}$",
      "description": "Request ID from submit_quote_request, e.g. QR-7K2M9QXD4T."
    }
  },
  "additionalProperties": false
}
get_request_status annotations
{
  "title": "Check quote requests",
  "readOnlyHint": true,
  "openWorldHint": false
}
cancel_request — Cancel a quote request
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Cancels one of the homeowner's quote requests and notifies the contractor. If the contractor already sent a quote that is still open, that quote is declined. Requests whose quote was accepted are jobs and cannot be cancelled here. Confirm with the homeowner first. Calling it again for a cancelled request changes nothing. Requires a linked RateDeed account (scope quotes:write).

cancel_request input schema
{
  "type": "object",
  "required": [
    "request_id"
  ],
  "properties": {
    "request_id": {
      "type": "string",
      "pattern": "^[Qq][Rr]-[0-9A-Za-z]{10}$",
      "description": "Request ID to cancel, e.g. QR-7K2M9QXD4T."
    }
  },
  "additionalProperties": false
}
cancel_request annotations
{
  "title": "Cancel a quote request",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
437 ms
95th percentile latency
437 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 437 ms · metadata changed · 7 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http ratedeed-mcp https://www.ratedeed.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add ratedeed-mcp --url https://www.ratedeed.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable ratedeed-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "ratedeed-mcp": {
      "url": "https://www.ratedeed.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "ratedeed-mcp": {
      "type": "streamableHttp",
      "url": "https://www.ratedeed.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start ratedeed-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "ratedeed-mcp": {
      "type": "http",
      "url": "https://www.ratedeed.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http ratedeed-mcp https://www.ratedeed.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://www.ratedeed.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "ratedeed-mcp": {
      "serverUrl": "https://www.ratedeed.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like RateDeed MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.