Skip to main content
Glama

Company Open Jobs

get_company_open_jobs
Read-only

Retrieves live open jobs from a company's public job board by domain, including titles, departments, locations, remote status and published salaries. Use known job IDs to identify new or closed roles.

Instructions

Live open jobs for a company domain from its public Greenhouse, Lever, Ashby, Workable, Recruitee or SmartRecruiters board: titles, departments, locations, remote flag and salary when published. Up to 300 jobs; known_job_ids returns new and closed jobs. $0.01; no board or no open jobs is free. Use for individual role listings; use get_company_hiring_intent for a hiring score or get_company_profile for combined company research.

Input Schema

NameRequiredDescriptionDefault
domainYesPublic domain without a URL scheme, path or port.
contextNoOptional. A few words on why you are calling this tool. Recorded without your identity to improve the tools; leave out personal data.
diff_onlyNoReturn only jobs that are not in known_job_ids. Needs known_job_ids.
known_job_idsNoJob IDs you already have from an earlier call. The answer then lists new and closed job IDs.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.0.0
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Optional. A few words on why you are calling this tool. Recorded without your identity to improve the tools; leave out personal data.",
      +  "type": "string"
      +}
    • changedInput schema / properties / domain / examples
      Previous value: -[
      -  "example.com"
      -]New value: +[
      +  "notion.so"
      +]
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "ats_type": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "board_match": {
      +        "description": "name_match: the board name equals the first part of the domain, so check generic names.",
      +        "enum": [
      +          "name_match",
      +          "careers_page_link",
      +          null
      +        ],
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "board_slug": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "checked_at": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "confidence": {
      +        "description": "high: the company website links to this board. unverified: only the board name matches the domain name.",
      +        "enum": [
      +          "high",
      +          "unverified",
      +          null
      +        ],
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "diff": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "domain": {
      +        "type": "string"
      +      },
      +      "jobs": {
      +        "items": {
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "jobs_by_department": {
      +        "additionalProperties": {
      +          "type": "integer"
      +        },
      +        "type": "object"
      +      },
      +      "jobs_returned": {
      +        "type": "integer"
      +      },
      +      "jobs_truncated": {
      +        "type": "boolean"
      +      },
      +      "jobs_with_salary": {
      +        "type": "integer"
      +      },
      +      "next_poll_after": {
      +        "description": "Job boards change slowly; calling again before this time is usually wasted.",
      +        "format": "date-time",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "next_steps": {
      +        "description": "Suggested follow-up calls on the same domain, with the exact body. Optional to use.",
      +        "items": {
      +          "properties": {
      +            "body": {
      +              "type": "object"
      +            },
      +            "mcp_tool": {
      +              "type": "string"
      +            },
      +            "price_usd": {
      +              "type": "number"
      +            },
      +            "tool": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            },
      +            "why": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "note": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "remote_jobs": {
      +        "type": "integer"
      +      },
      +      "status": {
      +        "description": "Only ok is charged.",
      +        "enum": [
      +          "ok",
      +          "no_open_jobs",
      +          "unreachable",
      +          "not_found"
      +        ],
      +        "type": "string"
      +      },
      +      "top_locations": {
      +        "additionalProperties": {
      +          "type": "integer"
      +        },
      +        "type": "object"
      +      },
      +      "top_technologies": {
      +        "additionalProperties": {
      +          "type": "integer"
      +        },
      +        "type": "object"
      +      },
      +      "total_active_jobs": {
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "domain",
      +      "status",
      +      "jobs",
      +      "checked_at"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "code": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "status": {
      +        "maximum": 599,
      +        "minimum": 400,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "code"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties
      Removed value: -{
      -  "ats_type": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "board_match": {
      -    "description": "name_match: the board name equals the first part of the domain, so check generic names.",
      -    "enum": [
      -      "name_match",
      -      "careers_page_link",
      -      null
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "board_slug": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "checked_at": {
      -    "format": "date-time",
      -    "type": "string"
      -  },
      -  "confidence": {
      -    "description": "high: the company website links to this board. unverified: only the board name matches the domain name.",
      -    "enum": [
      -      "high",
      -      "unverified",
      -      null
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "diff": {
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  },
      -  "domain": {
      -    "type": "string"
      -  },
      -  "jobs": {
      -    "items": {
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "jobs_by_department": {
      -    "additionalProperties": {
      -      "type": "integer"
      -    },
      -    "type": "object"
      -  },
      -  "jobs_returned": {
      -    "type": "integer"
      -  },
      -  "jobs_truncated": {
      -    "type": "boolean"
      -  },
      -  "jobs_with_salary": {
      -    "type": "integer"
      -  },
      -  "next_poll_after": {
      -    "description": "Job boards change slowly; calling again before this time is usually wasted.",
      -    "format": "date-time",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "next_steps": {
      -    "description": "Suggested follow-up calls on the same domain, with the exact body. Optional to use.",
      -    "items": {
      -      "properties": {
      -        "body": {
      -          "type": "object"
      -        },
      -        "mcp_tool": {
      -          "type": "string"
      -        },
      -        "price_usd": {
      -          "type": "number"
      -        },
      -        "tool": {
      -          "type": "string"
      -        },
      -        "url": {
      -          "type": "string"
      -        },
      -        "why": {
      -          "type": "string"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "note": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "remote_jobs": {
      -    "type": "integer"
      -  },
      -  "status": {
      -    "description": "Only ok is charged.",
      -    "enum": [
      -      "ok",
      -      "no_open_jobs",
      -      "unreachable",
      -      "not_found"
      -    ],
      -    "type": "string"
      -  },
      -  "top_locations": {
      -    "additionalProperties": {
      -      "type": "integer"
      -    },
      -    "type": "object"
      -  },
      -  "top_technologies": {
      -    "additionalProperties": {
      -      "type": "integer"
      -    },
      -    "type": "object"
      -  },
      -  "total_active_jobs": {
      -    "type": "integer"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "domain",
      -  "status",
      -  "jobs",
      -  "checked_at"
      -]
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, the description discloses cost ($0.01, free when no board or no open jobs), the 300-job cap, and the diff semantics of known_job_ids returning new and closed jobs. Cost and truncation limits are behavioral traits the annotations do not carry, and there is no contradiction with readOnlyHint=true.

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?

Three sentences, each carrying load: capability+providers+fields, then limits and pricing, then routing to siblings. Slightly dense in the first sentence but front-loaded with the core verb and resource, with no filler.

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?

An output schema exists, so return values needn't be explained, and the description covers everything else an agent needs: data sources, field set, result cap, diff workflow, cost, failure/free case, and sibling alternatives. Nothing material is missing for a read-only lookup tool.

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 coverage is 100%, so all four parameters are already documented, and the description mostly restates what the schema says about known_job_ids ("returns new and closed jobs") and diff_only. It adds no syntax, ID format, or example detail beyond the schema, so the baseline 3 applies.

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+resource ("Live open jobs for a company domain") and names the six source providers (Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters) plus the fields returned. It is clearly distinguishable from get_company_hiring_intent and get_company_profile, which are named explicitly.

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?

The final sentence gives an explicit routing rule: "Use for individual role listings; use get_company_hiring_intent for a hiring score or get_company_profile for combined company research." Both alternatives and the condition that selects them are stated, leaving nothing to inference.

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