Skip to main content
Glama

Moxlade — Upwork buyer intelligence

Whether the client actually pays

get_buyer_quality
Read-onlyIdempotent

Whether the client behind a posting actually pays, and how much of that we can honestly claim to know. Call it before spending connects.

upwork_id is the posting's id. ask is your intended HOURLY rate; give it and you also get how many of their past hourly contracts cleared it. It does not affect the fixed-price model, whose threshold is fixed.

READ coverage FIRST: how many of their contracts the answer used, beside their own public counters. A small sample of a big history is a sample, not a summary — when coverage.thin is true, say so when you relay it.

models is keyed by contract type, 'fixed' and 'hourly'; primary names the one this posting's engagement type selects. Each entry answers the single yes/no question written out in its own asks sentence, at its threshold: p is the probability, prior the population base rate for that same question, and lift is p / prior — 1.0 is average, BELOW 1 means knowing about this client is worse news than knowing nothing. p is NULL, never 0, when known is false: "never paid that" and "no record" are different.

tier = WHICH EVIDENCE it rests on: 'own-history' their own past contracts, 'cohort' what the freelancers they hired charge, 'both', 'none'. cohort.anchor = WHOSE RATE the cohort median is: 'paid' what this client actually paid them, 'listed' those freelancers' own asking rates (only when we hold no paid rate for any hire), 'none'. How p is computed stays private; what these fields mean does not. The answer repeats the value sets in legend; describe_fields("get_buyer_quality") documents every field here.

Feed-scoped: answers for postings this corpus has shown you — your own search results and saved-search matches. Any other id is refused, with how to bring it into reach.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
askNoyour intended hourly rate in USD. Must not be negative.
upwork_idYesa posting id as search_jobs returns it. Not a URL, and without the leading '~'.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoPresent when no buyer is linked.
foundNoFalse when the corpus holds no such posting.
tasteNoWhat this buyer tends to hire — see Taste. Absent — not null — when `found` is false, or when `buyer_record_known` is false; `note` says which of the two happened.
legendNoWhat the closed-value fields mean, carried WITH the answer: the four verdict values and their cut points, the four tier values, and the anchor values. Here because a tool description is truncated by some clients and outputSchema is a validation contract the spec does not ask clients to show a model — the response is the only channel with neither limit.
modelsNoOne entry per contract type, keyed 'fixed' and 'hourly', each answering one question about their next contract. The estimation method stays withheld; the vocabulary is documented — see ModelAnswer. Absent — not null — when `found` is false, or when `buyer_record_known` is false; `note` says which of the two happened.
recordNoTheir contract history as the corpus holds it — see Record. Absent — not null — when `found` is false, or when `buyer_record_known` is false; `note` says which of the two happened.
primaryNoThe headline judgement, naming which contract type it is about — the same vocabulary as ModelAnswer.model. Absent — not null — when `found` is false, or when `buyer_record_known` is false; `note` says which of the two happened.
coverageNoThe denominator behind everything above. A verdict without it is a claim you cannot check.
upwork_idNoThe posting.
ask_vs_recordNoGiven your `ask`, how many of their past hourly contracts cleared it — see AskVsRecord. The most useful line before quoting. Absent — not null — when `found` is false, or when `buyer_record_known` is false; `note` says which of the two happened. Present with `known: false` when you passed no `ask` — that object is the answer "you did not ask", not missing data.
identity_knownNoA company NAME resolved — exactly what get_buyer.company being non-null means. The two tools cannot disagree.
rate_by_categoryNoWhat their past contracts cleared, by category — see RateByCategory. Absent — not null — when `found` is false, or when `buyer_record_known` is false; `note` says which of the two happened.
buyer_record_knownNoA buyer is linked to this posting, so a contract history is computable. Does NOT mean we know who they are.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint and idempotentHint. Description adds extensive transparency about how p is computed (private), NULL vs 0 semantics, lift interpretation, coverage meaning, and tier/cohort fields. It does not contradict annotations and provides substantial context beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and dense but front-loads the essential purpose. It uses clear sectioning and backtick formatting for field names. While it goes into deep detail about response fields, given the complexity of the tool's semantics, each sentence appears purposeful. Slightly verbose but well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, so the description must cover all return fields. It thoroughly explains p, known, tier, cohort, anchor, coverage, and lift, including edge cases like NULL vs 0 and 'never paid' vs 'no record'. It also mentions describe_fields for further documentation, making it complete for correct invocation and interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The description adds only minimal extra: confirms 'upwork_id' is posting id and 'ask' is hourly rate, which is already in schema. Since schema coverage is full, the description doesn't significantly add value beyond it, warranting a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool's function: 'Whether the client behind a posting actually pays, and how much of that we can honestly claim to know. Call it before spending connects.' Uses specific verb 'get' and resource 'buyer quality', and distinguishes itself by feed-scoped constraint and refusal of other IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises to call before spending connects, and states feed-scoped limitation and refusal of non-feed IDs. Also notes when to use describe_fields for documentation. It clearly outlines when to invoke the tool, even though it doesn't name a specific sibling to contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.8/5.0
Disambiguation5/5

Each tool serves a distinct, well-scoped function with no overlap. Even related tools like get_buyer and get_buyer_quality are clearly separated by their purposes and descriptions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using clear, descriptive verbs (check, delete, describe, get, list, save, search, rate). No mixed cases or conventions.

Tool Count5/5

15 tools is appropriate for the server's purpose, covering search, filtering, saved searches, buyer intelligence, job details, rate benchmarks, skill demand, and plan management without being excessive.

Completeness5/5

The set covers all core operations for Upwork buyer intelligence: searching, validating filters, saving searches, buyer analysis, job scoring, rate benchmarks, skill demand, and plan management. No significant gaps are apparent.

Resources