QuoteWiseOpen the app

QuoteWise MCP

QuoteWise runs as an MCP server, so an assistant such as Claude, ChatGPT or Cursor can read your saved quotes, work out totals, and look up community price benchmarks while it helps you price a project.

Set up

  1. Sign in to QuoteWise and open Settings, then MCP access.
  2. Name the key (for example the client it is for). Tick Allow creating quotes only if you want the assistant to save quotes for you.
  3. Choose Create key.
  4. Copy the key now. It starts with qw_ and is shown only once. We store a hash, not the key.

The server address is https://www.qoutewise.com/api/mcp. Every request needs the header Authorization: Bearer qw_….

Connect a client

Claude Code:

claude mcp add --transport http quotewise https://www.qoutewise.com/api/mcp \
  --header "Authorization: Bearer qw_your_key"

Cursor, and other clients that read an MCP JSON config:

{
  "mcpServers": {
    "quotewise": {
      "url": "https://www.qoutewise.com/api/mcp",
      "headers": { "Authorization": "Bearer qw_your_key" }
    }
  }
}

The transport is Streamable HTTP, stateless, with JSON replies. Clients that only connect through an OAuth sign-in (some web connectors) cannot use QuoteWise yet. A client needs to let you set a custom header.

Tools

get_market_benchmark

Hourly-rate percentiles, median project total and median weeks from anonymous QuoteWise quotes for similar work. It widens the match (same work, country and level, then looser) until it finds at least 5 quotes, and reports which match it used.

ArgumentNeededValues
categoryrequiredweb-development, mobile-app, ui-ux-design, graphic-design-branding, copywriting-content, video-animation, marketing-seo, data-ai, consulting, other
countryrequiredTwo-letter ISO code, such as IN or US
levelrequiredjunior, mid or senior
roleoptionalfreelancer (default) or client: whose quotes to compare with
hourly_rateoptionalA rate to place on the distribution. The result then includes my_percentile
currencyoptionalISO code such as USD or INR. Results are converted into it

Example result:

{
  "scope": "same work and country",
  "n": 14,
  "currency": "INR",
  "p10": 900, "p25": 1100, "median": 1400, "p75": 1800, "p90": 2300,
  "my_percentile": 62,
  "median_total": 180000,
  "median_weeks": 6,
  "note": "Built from anonymous quotes made in QuoteWise, not verified payments."
}

list_quotes

Your saved chats, newest first.

ArgumentNeededValues
limitoptional1 to 50, default 20

Example result:

[
  { "id": "3868c16b-…", "title": "Farmer Marketplace template setup",
    "role": "client", "updatedAt": "2026-10-07T15:04:00.580Z", "hasQuote": true }
]

get_quote

One saved quote: line items, contingency, tax, timeline, assumptions, market range and the computed totals.

ArgumentNeededValues
idrequiredA chat id from list_quotes

Example result:

{
  "title": "…", "role": "freelancer",
  "totals": { "subtotal": 800, "contingency": 80, "tax": 158.4, "total": 1038.4 },
  "quote": { "currency": "USD", "items": [ … ], "market": { "low": …, "mid": …, "high": … } }
}

create_quote

Saves a finished quote as a new chat in your account. It shows up in your history, ready to edit, print or share. Needs a key created with Allow creating quotes. Every item is hours times rate; contingency and tax are percentages. Up to 30 quotes a day.

ArgumentNeededValues
title, currencyrequiredA short project title and a three-letter ISO currency code
itemsrequired1 to 50 entries of { name, description?, hours, rate }
summary, assumptions, paymentTermsoptionalScope in a sentence or two, a list of assumptions, and payment terms
contingencyPct, taxPct, timelineWeeksoptionalPercentages (0 to 100) and the timeline in weeks
roleoptionalfreelancer (default) or client
marketoptional{ low, mid, high, notes } for the whole project. Only pass it if you have a real basis. It is labelled as supplied by the assistant

Example result:

{
  "id": "5f0c…",
  "url": "https://your-quotewise/c/5f0c…",
  "totals": { "subtotal": 800, "contingency": 80, "tax": 158.4, "total": 1038.4 },
  "note": "Saved to the owner's QuoteWise account. Not shared, and not part of community benchmarks."
}

calculate_quote

Arithmetic only, nothing is stored. Totals computed the way QuoteWise does: contingency on the subtotal, then tax on subtotal plus contingency.

ArgumentNeededValues
itemsrequiredArray of { name?, hours, rate }
contingencyPctoptionalPercent added to the subtotal
taxPctoptionalPercent added to subtotal plus contingency

Example result:

{
  "lines": [ { "name": "Design", "amount": 500 }, { "name": "Build", "amount": 300 } ],
  "subtotal": 800, "contingency": 80, "tax": 158.4, "total": 1038.4
}

Calling it directly

It is plain JSON-RPC over HTTP, so you can test with any HTTP client:

curl https://www.qoutewise.com/api/mcp \
  -H "Authorization: Bearer qw_your_key" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"calculate_quote",
                 "arguments":{"items":[{"hours":10,"rate":50}],"taxPct":18}}}'

Supported methods: initialize, ping, tools/list, tools/call. Notifications get an empty 202. A GET returns 405 because the server never opens a stream.

Errors

Limits and privacy