Developers
RateDeed MCP connector
RateDeed’s MCP server lets an AI assistant help a homeowner in the United States find local contractors, plan a project, and, once the homeowner links their RateDeed account, send quote requests to escrow-enabled contractors, check on them and cancel them. It follows the Model Context Protocol.
No tool moves money. A contractor answers a request with a quote; the homeowner accepts it by paying into RateDeed escrow in the app, and releases funds when they approve the work.
US only. Searches and requests need a 5-digit US ZIP code. Account tools need a free RateDeed homeowner account with a verified email.
Escrow-enabled contractors only. Requests can only be sent to contractors who have turned on RateDeed escrow payments (escrow_enabled: true).
Setup
- Endpoint
https://www.ratedeed.com/mcp- Transport
- Streamable HTTP (POST, JSON responses, stateless)
- Protocol versions
- 2025-11-25, 2025-06-18, 2025-03-26
- Server card
https://www.ratedeed.com/.well-known/mcp- MCP Registry
- Listed in the official registry as
io.github.ratedeed/ratedeed
The search and planning tools work without an account. The three account tools use OAuth 2.1. Calling one without a token returns 401 with WWW-Authenticate: Bearer resource_metadata=…, so MCP clients that support authorization start the flow automatically.
OAuth 2.1 (account linking)
- Protected resource metadata (RFC 9728):
https://www.ratedeed.com/.well-known/oauth-protected-resource/mcp - Authorization server metadata (RFC 8414):
https://www.ratedeed.com/.well-known/oauth-authorization-server - Authorization code grant with PKCE (S256 required). Authorization endpoint
https://www.ratedeed.com/oauth/authorize, token endpoint https://www.ratedeed.com/oauth/token. - Clients: public clients can register themselves (RFC 7591) at
https://www.ratedeed.com/oauth/register. Confidential clients (client_secret_basic or client_secret_post) are issued by RateDeed on request. - Redirect URIs: https, loopback http (any port), or a reverse-domain app scheme; matched exactly.
- Resource indicator (RFC 8707):
https://www.ratedeed.com/mcp. Access tokens are bound to it and cannot be used on any other RateDeed API. - Access tokens last 1 hour. Refresh tokens last 30 days and rotate on every use; reusing an old refresh token disconnects the app.
- Revocation (RFC 7009):
https://www.ratedeed.com/oauth/revoke. Revoking any token disconnects the app. Homeowners can also disconnect under Profile → Connected apps; a password reset disconnects every app.
Scopes
quotes:read: see quote requests, their status and any quotes.quotes:write: send quote requests to contractors the homeowner approves, and cancel them.
On the consent screen the homeowner chooses Send and track quote requests or Read only. A read-only connection gets 403 insufficient_scope from the write tools.
Request statuses
pending Sent to the contractor; no quote yet. Nothing charged.quoted The contractor sent a quote. The homeowner reviews it and, to accept, pays into escrow in the RateDeed app.accepted The quote was accepted and is now a job. job.status: awaiting_payment, partially_funded, funded_in_progress, completed_pending_release, releasing, completed_paid, disputed, refunded, cancelled or expired.quote_declined The quote was declined by the homeowner or withdrawn by the contractor.quote_expired The quote expired before it was accepted (quotes are valid for 24 hours).cancelled The homeowner cancelled the request.
Prices and fees
A quote shows the contractor’s total in USD. If the homeowner accepts, the total is paid into escrow by card, and a card processing fee of 2.9% + $0.30 per charge is added at checkout; RateDeed does not keep it. get_request_status returns the total, the fee and the amount charged for each payment. Homeowners pay no RateDeed fee. Jobs of $5,000 or more are paid in three milestones (30% / 30% / 40%), each funded and released separately.
Retries and duplicates
- Send a unique
idempotency_key with each new request and reuse it on retries. A repeat returns the original request with duplicate: true. - Without a key, the same project sent to the same contractor within 24 hours is also treated as a duplicate.
- If a write returns
outcome_unknown, call get_request_status before retrying. cancel_request is safe to repeat.
Errors
Tool errors come back as a result with isError: true, a readable message, and structuredContent: { error, message }. Authorization and rate-limit problems are HTTP errors.
HTTP 401 + WWW-Authenticate An account tool was called without a token, or the token expired or was revoked. The header points to the protected resource metadata; run (or refresh) the OAuth flow.HTTP 403, error="insufficient_scope" The connection is read-only (quotes:read) and the tool needs quotes:write. Ask the homeowner to reconnect with send permission.HTTP 429 + Retry-After Rate limit reached. Wait the given number of seconds.contractor_not_escrow_ready The contractor has not turned on RateDeed escrow payments, so RateDeed cannot send them a request. Share their profile or phone instead.contractor_unclaimed The listing is unclaimed (compiled from public records). The homeowner can call the business directly.contractor_unverified The contractor has not verified their email and cannot receive requests yet.contractor_not_found / not_found Unknown contractor slug or request ID, or a request that belongs to another account.contractor_account The linked account is a contractor account; quote requests are sent from homeowner accounts.own_business, blocked The homeowner cannot send a request to this contractor.idempotency_key_reused The key was already used for a request to a different contractor. Use a new key.daily_limit, contractor_daily_limit Per-account request limits reached (see Rate limits).already_accepted cancel_request on a request whose quote was accepted. Manage the job in the RateDeed app.account_suspended, email_not_verified The homeowner’s RateDeed account cannot send requests until resolved.invalid_input A field is missing or invalid; the message names it.outcome_unknown A write timed out or hit a server error. RateDeed could not confirm whether it went through: call get_request_status (no request_id) before retrying, with the same idempotency_key.unavailable, maintenance Temporary. Retry later.
Rate limits
- MCP endpoint, no account linked: 300 calls per 10 minutes per IP address
- MCP endpoint, linked account: 200 calls per 10 minutes per connection
- submit_quote_request and cancel_request: 10 per minute per account
- Quote requests sent by assistants: 10 per account per rolling 24 hours, and 3 per contractor per account per 24 hours
- OAuth client registration: 60 per hour per IP address
- OAuth token and revocation endpoints: 120 per 15 minutes per IP address
Data and privacy
- Public tools receive only the search text, ZIP code and filters.
- Account tools use the homeowner’s RateDeed account. A quote request stores the project fields and shares the homeowner’s name and those fields with the chosen contractor only.
- Authorization codes and refresh tokens are stored only as hashes. Access tokens are short-lived and are not stored.
- Quote requests and connections are deleted when the homeowner deletes their account, and included in their data export.
- RateDeed does not sell this data or use it for advertising. See the Privacy Policy.