Moxlade
Checking your account
14 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.

terminalyour token goes here
# one line, then your agent has the corpus
claude mcp add --transport http moxlade https://buyer.moxlade.com/mcp/ \
--header "Authorization: Bearer mxt_…"
bring your own agent and subscription — we never run inference
records since2024-03
k-anonymity floor5
session idnullstateless by protocol
inference billed herenullyou bring the agent

Use it with the agent you already run.

One line per client; the token is the only secret.

terminalyour token goes here
claude mcp add --transport http moxlade https://buyer.moxlade.com/mcp/ \
--header "Authorization: Bearer mxt_…"
where
terminal
status
syntax confirmed against `claude mcp add --help`
one surface this does not reach
The one-click connector panel on claude.ai (web) has no field for a header, so it cannot add this endpoint. Claude Desktop can, through its config file — it is in the list above. ChatGPT we have not tried. The whole picture.

14 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
{ "name": "search_jobs", "arguments": {} }
get_prefilter_catalogThe fields search_jobs and save_search can filter on, with their types and the values each accepts.
example
{ "name": "get_prefilter_catalog", "arguments": {} }
check_prefilterValidate a filter without running it, and see how much it would catch.
example
{ "name": "check_prefilter", "arguments": { "prefilter": "…" } }
Judge a posting2 tools
get_jobOne posting in full, as the corpus holds it.plan
example
{ "name": "get_job", "arguments": { "upwork_id": "~01f2…" } }
get_job_scoreHow good a posting is on its own terms, 0-100, and WHY.plan
example
{ "name": "get_job_score", "arguments": { "upwork_id": "~01f2…" } }
Judge the client2 tools
get_buyerWho is actually behind an anonymous posting.plan
example
{ "name": "get_buyer", "arguments": { "upwork_id": "~01f2…" } }
get_buyer_qualityWhether the client behind a posting actually pays, and how much of that we can honestly claim to know.plan
example
{ "name": "get_buyer_quality", "arguments": { "upwork_id": "~01f2…" } }
The market2 tools
rate_benchmarkWhat freelancers with a given skill LIST as their hourly rate, as a distribution rather than an average.plan
example
{ "name": "rate_benchmark", "arguments": { "skill": "django" } }
skill_demandHow many jobs mentioning a skill were posted recently, and whether that is rising or falling week by week.plan
example
{ "name": "skill_demand", "arguments": { "skill": "django" } }
all 14 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 the pipeline and the corpus. No token 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 per token, with daily caps and an enumeration guard, so a runaway loop is caught and a refusal is an ordinary tool error.

Pricing for one token.

access
One token, one agent$49/month
·Every tool, on a 14-day trial written onto the token when you mint it
·Every corpus tool for a workspace: buyers de-anonymized, missions, the pipeline
·One token per agent, revocable; every call logged to it
·Bring your own agent and subscription — no inference billed here
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 de-anonymization 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 does a token with no workspace get?

Everything. tools/list returns the same tools to every authenticated token — there are no tiers. A 14-day trial is written onto the token when you mint it; 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 per token with a daily cap and a distinct-query guard on the corpus tools.

05Which clients work?

Anything that speaks MCP over Streamable HTTP with a bearer header: Claude Code, Codex CLI, Cursor, VS Code, Gemini CLI, or curl. The connect page prints the exact line for each. The endpoint needs the trailing slash.

06How do I revoke a token?

Write to [email protected] with the token label the connect page showed you. Revocation is immediate; mint a new one any time.

Point the agent you already run at the corpus.