Moxlade
Checking your account
15 toolsover MCP, stateless, spec 2026-07-28→

Upwork buyer intelligence for your own agent, over MCP.

A proprietary Upwork corpus your agent asks over MCP: who the anonymous client really is, what they actually pay, and rate benchmarks from a freelancer census. You bring the agent and the subscription; the corpus answers, it is never downloaded.

terminal
# one line, then sign in — no key to paste or store
claude mcp add --transport http moxlade https://buyer.moxlade.com/mcp/
companies named13,029behind anonymous postings
buyers with a contract history21,430not a public counter
contracts with a rate on record165,515paid, not posted
reviews of buyers, by freelancers176,734Upwork aggregates these nowhere

Use it with the agent you already run.

One line per client. Sign in when it asks; there is no key to paste, and nothing to keep out of your config files.

terminal
claude mcp add --transport http moxlade https://buyer.moxlade.com/mcp/

15 questions your agent can ask.

Grouped by the job they do; every one answers from the corpus, none hands it over.

Find work3 tools
search_jobsSearch Upwork postings by words, an exact phrase, and structured filters.plan
example response
"matched": 34,
"window_days": 90,
"jobs": [
{ "upwork_id": "~01f2…",
"title": "Senior Django engineer, internal analytics API",
"buyer_named": true,we know who posted it
"price_type": "HOURLY" },
],
"next_cursor": null,the search finished
get_prefilter_catalogThe fields search_jobs and save_search can filter on, with their types and the values each accepts.
example response
{ "name": "named_buyer",
"options": ["Yes", "No"] },filter to buyers we can name
{ "name": "price_type",
"options": ["HOURLY", "FIXED"] },
{ "name": "category_name",
"type": "enum" },
check_prefilterValidate a filter without running it, and see how much it would catch.
example response
"valid": false,
"errors": [
"unknown field: buyer_payment_verified"refused before it costs a call
]
Judge a posting2 tools
get_jobOne posting in full, as the corpus holds it.plan
example response
"title": "Senior Django engineer, internal analytics API",
"budget": { "type": "HOURLY", "min": 45, "max": 80 },what they posted
"buyer": { "company": "Northwind Analytics" },what the posting hid
"date_posted": "2026-08-29T09:12:00Z",
get_job_scoreHow good a posting is on its own terms, 0-100, and WHY.plan
example response
"score": 78,
"breakdown": { "top_contributors": [
{ "label": "Pays above ask historically", "points": "+12.0" },
{ "label": "Hire Rate", "points": "+8.0" } ],
"penalties": [ { "label": "Budget below their own median", "points": "-9.0" } ] },argue with the arithmetic
Judge the client2 tools
get_buyerWho is actually behind an anonymous posting.plan
example response
"company": "Northwind Analytics",the posting said 'anonymous'
"domain": "northwind.example",
"confidence": "high",
"country": "Germany", "city": "Berlin",
get_buyer_qualityWhether the client behind a posting actually pays, and how much of that we can honestly claim to know.plan
example response
"models": { "hourly": {
"asks": "their next hourly contract pays $50/hr or more",
"p": 0.31,
"prior": 0.084,the population base rate
"lift": 3.7 } },3.7x likelier than an unknown client
"ask_vs_record": { "ask": 65,
"hourly_contracts": 71,
"at_or_above": 12,12 of their 71 cleared your rate
"coverage": { "share_of_their_history": 0.41, "thin": false },and how much we are missing
"verdict": "strong",
The market2 tools
rate_benchmarkWhat freelancers with a given skill LIST as their hourly rate, as a distribution rather than an average.plan
example response
"skill": "React",
"n": 1,842,
"p25": 37.0,
"median": 44.0,from a 52,767-freelancer census
"p75": 51.0,
"basis": "listed rates from the census, not paid rates",says which it is
skill_demandHow many jobs mentioning a skill were posted recently, and whether that is rising or falling week by week.plan
example response
"skill": "React",
"jobs_posted": 418,
"trend": { "direction": "falling",
"change_pct": -12.4,
"complete_weeks": 4 },and the weeks behind it
all 15 tools

Four rules the server enforces.

Not a policy page — code paths.

01Asked, never downloadedThere is no list-all-jobs. Search is bounded by a required filter and a recent window: you can page to the end of what YOUR filter matched, and there is no query that matches the corpus. Rate statistics come from a freelancer census behind a k-anonymity floor of five. Buyer dossiers open only for jobs your own feeds matched.
02Scraped text is marked untrustedJob titles, descriptions and buyer names are attacker-controlled and flow into your autonomous agent. Every one arrives wrapped in <untrusted-scraped-content> so an injected posting reads as data, never as an instruction.
03Your agent, your subscriptionScreening, scoring and drafting run on your side, at your cost, with the tools you already have installed. We sell answers from the corpus, nothing else. No inference is ever billed by us.
04Stateless by protocolMCP 2026-07-28 over Streamable HTTP: no handshake, no session id. A deploy on our side cannot break your session. Every call is logged to your account — across a re-mint and across both ways in — with daily caps and an enumeration guard, so a runaway loop is caught and a refusal is an ordinary tool error.

Pricing for one account.

access
One account, every tool$49/month
·Every tool, on a 14-day trial that starts when you connect
·Who the anonymous client is, what they have actually paid, and what the market charges
·Sign in, or paste a token — both are the same account, and every call is logged to it
·You pay for the corpus, not for tokens — the agent runs on your own subscription
Connect your agent

Questions an agent operator asks.

01What is in the corpus?

Public Upwork job postings collected continuously since March 2024, the contracts and hires visible on them, and a census of public freelancer profiles with their listed rates. On top of that, a buyer enrichment layer that names the company behind an anonymous posting with a confidence grade, and its posting and hiring history. Nothing private to any Upwork account.

02Is this affiliated with Upwork?

Not affiliated with, endorsed by, or sponsored by Upwork Inc. Upwork is a trademark of Upwork Inc. Data is compiled from public postings and public profiles and is provided as-is.

03What do I get when I connect?

Everything. tools/list returns the same tools to everyone authenticated — there are no tiers. A 14-day trial starts when you connect, whichever way you connect; when it ends the corpus tools refuse and name the price, while get_plan and your saved searches stay readable so you can see what you had.

04Can my agent pull the whole corpus?

No. There is no list-all tool — search requires a filter and returns compact public postings only. Within your own filter you can page to the end, because a survey you cannot finish is not an answer; what you cannot do is write a filter that matches the corpus. Rate statistics refuse to answer below five freelancers. Buyer dossiers open only for a job your own feeds matched. Every call is logged to your account with a daily cap and a distinct-query guard on the corpus tools.

05Which clients work?

Anything that speaks MCP over Streamable HTTP. Most clients need only the URL and sign in with OAuth — Claude and ChatGPT do. A bearer token is the fallback for clients that cannot run an authorization flow, and the only option for curl. The connect page prints the exact line for each. The endpoint needs the trailing slash.

Listed on
Smitheryregistry listing, quality-scoredGlamahosted connector, health-checked

Point the agent you already run at the corpus.