Skip to main content
Glama

AnywhereRoles remote jobs

Search remote jobs

search_jobs
Read-onlyIdempotent

Search open remote job listings aggregated from many job boards and company career pages, deduplicated. Use eligibleFrom to keep only jobs open to applicants in a given country, and overlapWith to rank by working-hours overlap with the applicant's time zone. Reposts by other job aggregators are hidden by default. Returns title, company, location, salary, eligibility and the URL of the original posting (apply there).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 0-indexed
sizeNoResults per page, 1-50 (default 10)
queryNoKeywords, e.g. 'react', 'customer support', 'data engineer'
sourceNoOnly jobs from this source board name
salaryMaxNoMaximum annual salary in USD
salaryMinNoMinimum annual salary in USD
categoryIdNoCategory ID from list_categories
fourDayWeekNoOnly jobs offering a four-day week
overlapWithNoApplicant time zone, IANA name ('Europe/Madrid') or UTC offset ('+02:00'); adds working-hours overlap
eligibleFromNoISO 3166-1 alpha-2 country the applicant can legally work from, e.g. 'ES', 'BR', 'DE'
publishedAfterNoISO date (YYYY-MM-DD); only jobs published on or after it
minOverlapHoursNoWith overlapWith: minimum overlapping working hours
visaSponsorshipNoOnly jobs that say they sponsor visas
employerOfRecordNoOnly jobs hiring through an employer of record (hire from many countries)
includeAggregatorRepostsNoInclude reposts by other job aggregators (hidden by default)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changed
    • changedInput schema / properties / categoryId / description
      Previous value: -"Filter by category ID"New value: +"Category ID from list_categories"
    • addedInput schema / properties / categoryId / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / categoryId / minimum
      Added value: +-9007199254740991
    • changedInput schema / properties / categoryId / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / eligibleFrom
      Added value: +{
      +  "description": "ISO 3166-1 alpha-2 country the applicant can legally work from, e.g. 'ES', 'BR', 'DE'",
      +  "maxLength": 2,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / employerOfRecord
      Added value: +{
      +  "description": "Only jobs hiring through an employer of record (hire from many countries)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / fourDayWeek
      Added value: +{
      +  "description": "Only jobs offering a four-day week",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / includeAggregatorReposts
      Added value: +{
      +  "description": "Include reposts by other job aggregators (hidden by default)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / minOverlapHours
      Added value: +{
      +  "description": "With overlapWith: minimum overlapping working hours",
      +  "maximum": 12,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / overlapWith
      Added value: +{
      +  "description": "Applicant time zone, IANA name ('Europe/Madrid') or UTC offset ('+02:00'); adds working-hours overlap",
      +  "type": "string"
      +}
    • changedInput schema / properties / page / description
      Previous value: -"Page number (0-indexed)"New value: +"Page number, 0-indexed"
    • addedInput schema / properties / page / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / page / minimum
      Added value: +0
    • changedInput schema / properties / page / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / publishedAfter
      Added value: +{
      +  "description": "ISO date (YYYY-MM-DD); only jobs published on or after it",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Keyword search query"New value: +"Keywords, e.g. 'react', 'customer support', 'data engineer'"
    • changedInput schema / properties / salaryMax / description
      Previous value: -"Maximum salary in USD"New value: +"Maximum annual salary in USD"
    • changedInput schema / properties / salaryMin / description
      Previous value: -"Minimum salary in USD"New value: +"Minimum annual salary in USD"
    • changedInput schema / properties / size / description
      Previous value: -"Page size (default 10)"New value: +"Results per page, 1-50 (default 10)"
    • addedInput schema / properties / size / maximum
      Added value: +50
    • addedInput schema / properties / size / minimum
      Added value: +1
    • changedInput schema / properties / size / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / source / description
      Previous value: -"Filter by active source name, for example Himalayas or Remote OK"New value: +"Only jobs from this source board name"
    • addedInput schema / properties / visaSponsorship
      Added value: +{
      +  "description": "Only jobs that say they sponsor visas",
      +  "type": "boolean"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive semantics, and the description adds behavior not in those annotations: deduplication across sources, reposts hidden by default, and that results point to the original posting URL where the user applies. This is meaningful operational context beyond the annotation set.

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

Conciseness5/5

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

A single tight paragraph, front-loaded with what the tool searches, followed by the two parameters worth explaining and the return shape. No filler sentences.

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

Completeness4/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 helpfully enumerates return fields (title, company, location, salary, eligibility, original URL) and covers default hiding of reposts. For a 15-parameter tool it doesn't touch pagination behavior or most boolean filters, but the schema documents those fully, so coverage is adequate.

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; however the description adds semantics the schema lacks, explaining that overlapWith ranks by working-hours overlap and that eligibleFrom restricts to country-eligible jobs, which clarifies the intent of those two parameters rather than merely restating them.

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?

States a specific verb (search) and resource (open remote job listings) with scope: aggregated from many boards, deduplicated. The aggregate/deduplicated framing distinguishes it from get_job and list_companies explicitly enough for an agent to route correctly.

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?

Gives concrete usage context for eligibleFrom (country eligibility filtering) and overlapWith (time-zone overlap ranking), plus the default behavior on aggregator reposts. It does not name sibling alternatives (e.g. when to prefer list_categories before passing categoryId, or get_job for a single listing), so it stops short of explicit when-not guidance.

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