Upwork MCP Limits: The 100-Connect Ceiling (Now Removed) and Four Other Walls the Docs Don't Mention
Update, 10/09/2026. The 100-Connect ceiling this post was written about is gone. After it went live, Upwork's MCP team reached out to us: the limit has been removed, and there are currently no daily Connect limits on proposals submitted through the MCP. Your Connects balance is now the only spending limit, the same as on the website. We have kept the original findings below as a record of what the limit was and updated the guidance to match the current state. The four other walls still stand as of this update.
Upwork's official MCP server at mcp.upwork.com is good enough to run a real bidding agent. We spent a full day doing exactly that with Claude: searching, reading clients, drafting, boosting, submitting. Nine proposals went out. The tenth was refused, with 90 Connects still sitting in the account, by a limit that appeared nowhere in Upwork's documentation. That limit has since been removed. The rest of what we hit has not.
This post is the limits list we wish had existed that morning. Everything below is first hand, observed in September 2026, and Upwork can change any of it without notice. The official docs cover the happy path. This is the rest.
What the Upwork MCP is, in one paragraph
Any MCP client (Claude, Cursor, a custom agent) can connect to Upwork's server with your own Upwork login and act on your account: search jobs, read job and client details, submit and withdraw proposals, boost, read and send messages, edit your profile, manage contracts and milestones. It is not scraping and it is not a third-party API key. It is Upwork's own surface, scoped to the logged-in account. We covered what the terms allow an agent to send and why the MCP cannot be your job feed in earlier posts. This one is about the walls you hit once you are actually bidding.
How writes work: preview, then confirm
Every write on the Upwork MCP is two steps. The client calls an action such as manage_proposals create and gets back a preview: the exact cover letter, the rate, the Connects cost, and the current boost table. The preview carries an id that expires in 15 minutes. Nothing is sent until a second call, confirm_draft, executes that id.
Three details about this flow bit us, and none of them are in the docs:
- One pending preview per action type. Prepare a second proposal before confirming the first and the first is silently replaced. An agent that "batches" three drafts and then confirms will send one.
- The cover letter is locked after submission. Once a proposal is confirmed, the cover letter cannot be changed through the MCP. The rate on a pending proposal can be edited (
manage_proposals edit_terms), but the text cannot, and a withdrawn proposal cannot be resubmitted. - Boost bids are one-way. A boost placed through the MCP can only be changed on the Upwork website, not through the tool.
So the unit of work is preview, read, confirm, repeat. That is the human-in-the-loop design Upwork wants, and it is worth building your agent around it rather than against it.
The 100-Connect ceiling: what it was, and what replaced it
Current state, as of 10/09/2026: there is no daily Connect limit on the MCP. Proposals go through as long as the account has the Connects to pay for them, boosts included, exactly as on upwork.com. The rest of this section describes the limit as we found it, because it explains the behaviour in older write-ups and because it is the clearest picture of how Upwork thinks about automated spending.
For the first weeks after launch, the MCP server enforced its own spending limit on proposals: 100 Connects per rolling 24 hours, per account, counted across everything submitted through the MCP. Once you crossed it, every further create call failed. The error message described it, verbatim, as "a safety ceiling on automated spending, not an Upwork limit". Three things followed from that sentence, and we confirmed each one at the time:
- Your Connects balance was irrelevant. We had 90 Connects in the account and were refused. Upwork's own rules would have allowed the submission on the website.
- There was no parameter, permission mode, or setting to raise it. The tool-permission and tool-mode controls the MCP exposes did not touch the ceiling.
- The window was rolling, not midnight-based. Capacity came back proposal by proposal, as each earlier submission passed 24 hours old.
The part that made it expensive was that boosts counted toward the ceiling. That is how we burned 122 Connects on 9 proposals: a couple of boosted bids at 20 or 30 Connects each ate most of the day's budget.
After this post went live, Upwork's MCP team told us the ceiling had been removed. We have not hit it since. What remains true is that boosts and base costs still come out of the same balance, so a boosted proposal still costs several plain ones. The budget is now yours to set, not the server's.
Four smaller walls, each worth a paragraph
Bid statistics are behind Freelancer Plus. The MCP can tell you what other applicants bid on a job, but only if the account has Freelancer Plus. On a Basic plan it returns an explicit "unavailable" and instructs the agent not to guess. Good behavior from the tool, but it means a Basic account's agent is pricing blind, and any prompt that asks it to "bid just above the range" will fail or hallucinate.
The boost table can lag the live page by a lot. The preview shows the current winning boost bids so you can pick a position. On one job the MCP showed 15/11/11/10 while the job page on the website showed 21/20/19/15. A proposal that was meant to land first landed fourth. The auction also has a floor: a 1-Connect bid was rejected with error VJ-CONN-3 even though the tool itself had recommended 1. If the boost position matters, check the live page before you confirm, and expect the tool's recommendation to be a suggestion, not a guarantee. Our boosting breakdown covers how the auction and refunds work.
Job activity data from the MCP was wrong on four jobs in one day. The interviewing, hires, and invites counts are the numbers an agent uses to judge whether a job is still live. The MCP reported 0 interviews on jobs where the page showed 1, 3, and 5. Liveness has to come from the job page, or from a feed tool that snapshots it at discovery time, not from the MCP's job read.
Some jobs return a permission error with no explanation. The cause, once we tracked it down, is region locking. The client restricted the post to freelancers in a world region (we hit "Americas"), and the MCP simply refuses the call rather than saying why. Preferred locations are a separate thing: those come back as data (country, states, timezones, and a location_required flag) and the MCP still lets you apply. If your agent sees a bare permission error on a job it can otherwise read, assume a regional lock and move on.
What this means if you are automating Upwork proposals with Claude
Put the limits together and the design intent is clear. The MCP is built to keep a human close:
- Two-step confirmation means every send is a decision.
- One preview at a time means no batching.
- No post-submit edits to the letter means no recovering from a bad boost or a typo.
An agent can do research, drafting, and the submission itself, one confirmed preview at a time. With the daily ceiling gone, the throughput limit on an MCP-based bidding setup is your Connects budget and the one-at-a-time flow, not a server-side cap. That makes the spending discipline your job. Nothing on the server will stop an agent from spending a month of Connects in an afternoon.
A workable design that stays inside the walls
The setup that actually worked for us has four parts:
- A feed that catches the job in its first minutes. The MCP is a question-and-answer surface, and its own activity counts cannot be trusted for liveness. Discovery needs to come from somewhere that watches Upwork continuously and snapshots the job at the moment it appears. This is where UpHunt fits naturally: a real-time feed, an AI score per job with a plain-language reason, and a read-only MCP server of its own that your agent can query for scored jobs and client details without touching the Upwork calls.
- An agent that researches and drafts. Read the client, read the job, write the cover letter, price it. This part the Upwork MCP does well, and the preview step gives you a natural review point before anything is spent. Being early matters more than most people think; our timing data shows why.
- A spending envelope you set yourself, boosts included. The server no longer enforces one, so decide the day's budget before the day starts. Reserve part of it for boosts on the two or three jobs that deserve one, and have the agent refuse the rest rather than drain the balance.
- A human decision on every send. The preview-then-confirm flow is the terms working as intended. Keep a person on the confirm step, and plan for the occasional job that is worth submitting by hand on upwork.com.
If you want proposals going out unattended, the MCP on your own login is not the lane for it under Upwork's terms. UpHunt's hands-off plan runs from a business developer that joins your Agency Plus as a member and submits your proposals for you, so nothing runs on your account and your personal MCP connection stays yours.
FAQ
Is there a daily Connect limit on the Upwork MCP?
Not any more. As of 10/09/2026 there are no daily Connect limits on proposals submitted through the MCP. The only limit is the Connects in your account, the same as on upwork.com. Earlier in September 2026 the MCP enforced a 100-Connect rolling 24-hour ceiling; Upwork has removed it.
What was the 100-Connect limit?
A server-side cap on MCP proposal spending: 100 Connects per rolling 24 hours per account, boosts included, enforced regardless of your balance. The error called it "a safety ceiling on automated spending, not an Upwork limit". It could not be raised by any setting. Upwork removed it after this post was published.
Do boosts count toward an MCP limit?
There is no MCP-specific limit for them to count toward now. Boost bids placed through the MCP come out of the same Connects balance as the proposal itself, so two or three boosted proposals can still consume most of a day's budget if you set one.
Why does the MCP return a permission error on some jobs?
In every case we traced, the client had restricted the job to a world region and the account was outside it. The MCP refuses rather than explaining. Preferred-location jobs are different and remain applyable, with the location data returned as fields.
Can I edit a proposal after confirming it through the MCP?
The cover letter, no. The rate on a pending proposal can be edited with manage_proposals edit_terms. A withdrawn proposal cannot be resubmitted, and a boost bid can only be changed on the website.
Which call actually submits the proposal?
manage_proposals create returns a preview and submits nothing. confirm_draft with the preview id is the call that spends Connects. The preview expires after 15 minutes and only one pending preview per action type is held at a time.
The short version
As of 10/09/2026, Upwork's MCP will let an agent research, draft, and submit proposals on your behalf, one confirmed preview at a time, with no daily Connect limit beyond your balance. Its boost table lags, its activity counts are unreliable, its bid statistics need Freelancer Plus, and region-locked jobs fail silently. Build the agent for those limits, feed it from a source that actually watches Upwork, set your own spending envelope, keep a human on the confirm step, and it works. Expect Upwork to move the details without telling anyone, and check this post's update date before you rely on any of them.
Start free with UpHunt to get the scored, real-time feed your agent is missing, and one-tap apply for the jobs it surfaces.