Skip to main content
Glama

Joeb

List saved jobs

list_saved_jobs
Read-only

List the jobs the user has liked, applied to or dismissed, a page at a time, as numbered text rows.

Buckets are views over a job's two independent pieces of state, not stored values:

  • liked: liked, and not applied

  • applied: applied, whatever its liked or dismissed status

  • dismissed: dismissed, applied or not So marking a liked job applied moves it from liked to applied without clearing the like, and a dismissed job the user applied to is in both applied and dismissed. Each row's state says where the job really stands.

Returns limit jobs (default 25, at most 100) starting offset jobs in (default 0): liked and dismissed jobs most recently changed first, applied jobs most recently applied first. One row per job: {rank}. [{id}] {title} — {company} · {place} · {remote|on-site} · {seniority} · {salary} · posted {age} · {state} The state is "liked" or "dismissed", then "applied {age}", then "removed {date}", each only when it holds, and a fact the posting lacks is left out. {rank} is the job's place in the whole list, so it carries on from page to page. The bracketed id is the job's first 12 characters; every tool takes it back, as it takes any unique prefix of 8 or more characters. detail is search_jobs': "brief", one line; "summary" (the default), adding the Smart Digest summary; "digest", adding the company, the day to day, the requirements and the posting's URL. The raw posting text is never included; get_jobs with include_posting=true reads it.

The reply's first line names the list, the rows shown and how many jobs the list holds; an empty list, or an offset past the end, is said instead, with the total. While more remain, the last line gives the offset to list from next. A reply holds at most 40,000 characters: rows that would cross that are left out, and the next offset starts at the first of them.

Acting on a listed job (update_jobs, clear_jobs) reshapes the list: the job leaves the bucket or moves to its top, and every later job shifts. After acting, list again from offset 0 rather than going on from the next offset.

The liked list includes postings the employer has since taken down; their rows end "removed {date}". They are listed on purpose, because the user chose them: mention the removal rather than hiding the job, and don't send the user to apply to one, since the posting is gone from the employer's site.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "bucket": "<bucket>"
    },
    "name": "list_saved_jobs"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoHow many of the list's jobs to return, from 1 to 100.
bucketYes"liked", "applied" or "dismissed".
detailNoHow much of each job its row shows: "brief", one line of facts; "summary", that line and the Smart Digest summary; "digest", the summary plus the company, the day to day, the requirements and the posting's URL.summary
offsetNoHow many of the list's jobs to skip, newest first: 0 for the first page. A reply's last line gives the offset of the next page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description still adds substantial context beyond that: buckets are derived views rather than stored values, the 40,000-character reply cap with truncation and next-offset behavior, and the ordering rule per bucket. It does not discuss auth or rate limits, and the bucket-state crossover rules are dense enough to require careful reading.

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?

Front-loaded with the one-line purpose, then organized into clearly separated blocks (bucket semantics, paging/row format, reply shape, mutation caveat, removed postings). It is long, but the length is largely justified by the absent output schema; the `detail` paragraph does partly restate the schema description and the defaults are repeated.

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?

With no output schema, the description carries the full burden of describing the return value, and it does: the header line, the exact row template, the rank/id prefix rules, empty-list and past-the-end behavior, and the next-offset footer. An agent can call this tool and interpret its response without any further documentation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description genuinely enriches the enum semantics: it explains that liked/applied/dismissed are overlapping views over two independent state pieces, so a job can be in both applied and dismissed. It also clarifies offset continuation via the reply's last line and that rank carries across pages, which the schema does not convey.

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?

Opens with a specific verb and resource ("List the jobs the user has liked, applied to or dismissed") plus scope (paged, numbered text rows). It also explicitly distinguishes itself from siblings by naming search_jobs' `detail` levels and pointing to get_jobs with include_posting=true for raw posting text.

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?

States precisely when to re-list ("After acting, list again from offset 0 rather than going on from the next offset") and routes the agent elsewhere for posting text ("The raw posting text is never included; get_jobs with include_posting=true reads it"). It also gives an explicit directive for removed liked postings: mention the removal, don't tell the user to apply.

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