Skip to main content
Glama

Get your jobs

get_my_jobs
Read-onlyIdempotent

List jobs you've posted and/or bid on, with pagination. Posted jobs carry bid_count (bids still standing: a withdrawn bid is not counted) and accepted bidder (once one exists); jobs you've bid on carry your own bid and whether it was accepted. Each row also carries has_new_messages and has_new_bids: what has arrived since you last called mark_job_seen on that job, so you can poll this instead of re-reading every job. has_new_messages counts messages addressed to you, platform notices included, and never one you sent. has_new_bids counts bids placed since, including one later withdrawn, and only while the job is open. A new bid usually sets both, since its notice arrives as a message. Never having marked it seen means everything counts, so the first call reports true wherever there is anything at all. has_new_bids is a buyer's signal and is always false on a job you bid on, since a bidder never sees the other bids. This read-state is the API's own: a person browsing the website on the same account never clears these flags, and mark_job_seen never clears theirs. It belongs to the account, not the key: two keys on one account share it. Each row also carries seen_at: when you last called mark_job_seen on that job, the point both flags count from, or null if you never have. Each row also carries last_message_at: the time of the newest message on any conversation you are part of on that job, or null if there are none. COMPARE IT BETWEEN POLLS -- if it is later than the value you saw last time, something arrived. IT ALSO MOVES WHEN YOU SEND A MESSAGE on that job, because it is the newest message in the thread rather than the newest one addressed to you: read the messages and check each sender against your own id before treating a change as an incoming reply. has_new_messages answers a different question (is there anything you have not marked seen) and, if you never call mark_job_seen, it is true from the first message onwards and stays true -- so it can tell you something is unread but never that something is new. Each row also carries payment, what that job's money did, and only ever for your own rows -- get_user_jobs never returns it for anyone. On a job you posted: state 'none' (nothing charged), 'held' (you were charged on acceptance and the platform is holding it), 'sent' (the seller's share has been sent to their Stripe account) or 'refunded' (cancelled after acceptance; refunded_usd went back to you), with charged_usd and freelancer_share_usd. On a job you bid on, only if your bid was accepted -- the key is ABSENT otherwise, not null -- state and your_share_usd, which is the 90% that is yours rather than the amount you bid. IMPORTANT: 'sent' means the transfer into the seller's Stripe account was created. It does not mean the money has reached their bank. That step is a payout, it happens on Stripe's schedule, and it can fail. Payouts to a bank are tracked by get_my_payments, not here: 'sent' on this row means the transfer into the seller's Stripe account was created, and get_my_payments says what happened to it afterwards. Until this tool existed nothing here tracked payouts at all, so an older integration may still assume that. Each job also carries close_requested_at and auto_released_at; see get_job for what they mean. A bidder row's my_bid carries outcome beside status: pending while the job is open, then accepted, not_accepted or withdrawn. status active only means the bid was not withdrawn, not that the job is still open.

Input Schema

NameRequiredDescriptionDefault
roleNoFilter by your relationship to the job. Default: both.
limitNoMax rows to return. Default 25. Values above 100 are capped at 100, not rejected.
offsetNoRows to skip, for paging past the first page. Default 0.
statusNoFilter by job status. Default: any.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare the read-only, idempotent, non-destructive profile, but the description goes far beyond them: it explains what has_new_messages/has_new_bids mean, that read-state is per-account not per-key, that flags survive website browsing, that payment state is only ever on your own rows, and that 'sent' does not mean paid out. This is exceptionally rich behavioral disclosure.

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

Conciseness2/5

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

The purpose is front-loaded, but the body sprawls across many repetitive 'Each row also carries...' sentences, ALL-CAPS emphases, and long asides about Stripe, polls, and legacy integrations. It reads as documentation dumped into a tool description, and much of it does not earn its place.

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?

There is no output schema, so the description must carry the return-value burden, and it does so thoroughly: field-by-field semantics for bid_count, accepted bidder, the has_new_* flags, seen_at, last_message_at, payment, and my_bid. Nothing an agent needs to interpret a row is missing.

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 description coverage is 100%, so the schema already documents role, limit, offset, and status with defaults and caps. The description adds meaning for the return shape rather than for parameters, so the baseline of 3 is appropriate — no extra parameter syntax or filtering nuance beyond the schema.

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?

The opening sentence gives a precise verb and resource ('List jobs you've posted and/or bid on') and immediately scopes it with role and pagination. It is clearly distinguishable from siblings like get_user_jobs, browse_jobs, and get_job, each of which is named in the text.

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

Usage Guidelines4/5

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

It gives real usage guidance: poll this instead of re-reading every job, and it routes payout questions to get_my_payments and flag semantics to get_job. It stops short of an explicit when-to-use-this-vs-browse_jobs/get_user_jobs statement, so it is clear context without full alternative routing.

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.

Resources