MCP & APImcp.remote-pro.ai

request_proposal MCP tool

The request_proposal MCP tool turns a conversation into a draft Remote Pro Ai proposal and emails the user a magic link to review it. It's the only tool that creates anything, so assistants must show the user a summary and get explicit confirmation first. Nothing is booked, signed or charged; prices become binding only after the user approves the proposal in the web flow.

Developer preview until live: the MCP server and the platform API are not running yet. Tools, endpoints and examples on these pages describe the interface we are building; a call made today returns nothing.

What the request_proposal MCP tool does

  • Use it when: the user says they want to proceed, for example "Send me a proposal for this team."
  • Never use it: speculatively, to "save" a search, or without the user seeing the summary.

Input

FieldTypeRequiredNotes
quote_idstringOne of quote_id or rolesFrom estimate_squad_cost, valid 30 days
rolesobject[]One of quote_id or rolesSame shape as estimate_squad_cost
contactobjectYesname, work_email, company, country
notesstringNoUp to 2,000 characters: goals, stack, constraints
preferred_languageenumNoen or ar
user_confirmationobjectYesconfirmed: true, plus summary_shown: the exact text the user approved

Output

  • proposal_id (e.g. prop_K29XQ)
statusdraft_pending_verification (anonymous) or draft_in_client_os (OAuth)
  • magic_link_sent_to: masked email, e.g. n***@company.com
  • link_expires_in_hours: 24
  • next_steps[]: e.g. Open the link to verify your email. · Review the squad and add details. · A Remote Pro Ai specialist confirms pricing before anything is binding.

Example

After pricing a squad, the assistant shows the user: "I'll create a draft proposal for 2 Senior and 1 Lead cloud engineers (quote q_7HD29K) and email a link to nadia@company.com. OK?" The user replies "Yes". The assistant calls request_proposal with quote_id q_7HD29K, the contact details, notes about a Kubernetes migration, and user_confirmation set to confirmed true with that exact summary. The response returns proposal_id prop_K29XQ, status draft_pending_verification, the masked email and a link that expires in 24 hours.

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "request_proposal",
    "arguments": {
      "quote_id": "q_7HD29K",
      "contact": {
        "name": "Nadia",
        "work_email": "nadia@company.com",
        "company": "Company",
        "country": "SA"
      },
      "notes": "Kubernetes migration",
      "preferred_language": "en",
      "user_confirmation": {
        "confirmed": true,
        "summary_shown": "I'll create a draft proposal for 2 Senior and 1 Lead cloud engineers (quote q_7HD29K) and email a link to nadia@company.com. OK?"
      }
    }
  }
}

Response

result
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Draft proposal created. A link was sent to n***@company.com."
      }
    ],
    "structuredContent": {
      "proposal_id": "prop_K29XQ",
      "status": "draft_pending_verification",
      "magic_link_sent_to": "n***@company.com",
      "link_expires_in_hours": 24,
      "next_steps": [
        "Open the link to verify your email.",
        "Review the squad and add details.",
        "A Remote Pro Ai specialist confirms pricing before anything is binding."
      ]
    }
  }
}

Errors

  • consent_required: Show the user a summary of what will be created and where the link will be sent, then call again with user_confirmation.
  • invalid_argument: contact.work_email must be a valid email address.
  • quote_expired: This quote_id expired. Create a new estimate before requesting a proposal.
  • rate_limited: Proposal limit reached for this email address. Try again in retry_after minutes.

Consent and human approval

  • Annotations: not read-only, not idempotent. Hosts should ask the user before running it.
  • Anonymous calls email a magic link; the draft is visible only after the user verifies their email.
  • With OAuth (proposals:write), the draft files straight into the organisation's Client OS for the user to review.
  • Every draft is reviewed by a Remote Pro Ai specialist before any quotation is issued. The assistant never books, signs or pays.
  • Limit: 5 proposals per hour per email address.

Frequently asked questions

Because it's the only tool that creates something and sends an email on the user's behalf. The assistant must show a summary of the squad and the email address, get an explicit yes, and pass that exact summary in user_confirmation. Calls without it return consent_required.

No. It creates a draft and emails a magic link. The user reviews the draft on remote-pro.ai, a Remote Pro Ai specialist confirms pricing, and only then is a quotation issued. Booking, signature and payment always happen in the user's own session.

Anonymous calls email a magic link that expires in 24 hours, and the user verifies their email to see the draft. With an OAuth token holding proposals:write, the draft goes straight into the organisation's Client OS, attached to the right account and approver.

Yes, and it's the recommended path. The quote_id carries the exact squad, levels and estimated prices into the draft. It must be less than 30 days old; otherwise the tool returns quote_expired and you should create a new estimate first.

The roles and levels, the quote_id if there is one, and the email address the link will go to, in 1 or 2 plain sentences. For example: "I'll create a draft proposal for 3 cloud engineers and email a link to you at name@company.com. OK?"