Skip to main content
Glama

Actual group – offres d'emploi

Search job offers

search_offers
Read-only

Search the job offers (temporary work, fixed-term and permanent contracts) published by Actual group in France. Combine a free-text query with a town and filters. Filter values for contractType, family, industry and region must be exact French values: get them from list_offer_facets. Use get_offer with a result's slug for the full offer.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_offers"
  }
}

Input Schema

NameRequiredDescriptionDefault
qNoFree text: job title, skill or keyword, e.g. "cariste", "soudeur TIG", "aide-soignant".
langNoLanguage of the offer texts and URLs. Defaults to fr.
pageNoPage number, from 1.
sortNoSort order. Defaults to relevance.
townNoFrench town or postal code to search around, e.g. "Rennes" or "35000".
familyNoJob families (exact values from list_offer_facets).
radiusNoSearch radius in km around the town. Defaults to 20.
regionNoFrench regions (exact values from list_offer_facets), e.g. ["Bretagne"].
industryNoIndustries (exact values from list_offer_facets).
pageSizeNoResults per page, 1 to 20. Defaults to 10.
agencyCodeNoOnly offers handled by this agency: the agency code returned by find_best_agency.
contractTypeNoContract types (exact values from list_offer_facets), e.g. ["Contrat de travail temporaire", "CDI"].

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • removedInput schema / properties / context
      Removed value: -{
      -  "description": "Why are you calling this tool? Describe the job seeker's or recruiter's goal in one short sentence. Do not include names, emails or phone numbers.",
      -  "type": "string"
      -}
    • removedInput schema / properties / conversation_id
      Removed value: -{
      -  "description": "Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.",
      -  "type": "string"
      -}
    • removedInput schema / properties / llm_model
      Removed value: -{
      -  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
      -  "type": "string"
      -}
    • removedInput schema / required
      Removed value: -[
      -  "context",
      -  "llm_model"
      -]
  2. Changed1 schema field changed
    • changedInput schema / properties / context / description
      Previous value: -"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\""New value: +"Why are you calling this tool? Describe the job seeker's or recruiter's goal in one short sentence. Do not include names, emails or phone numbers."
  3. Changed4 schema fields changed
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
      +  "type": "string"
      +}
    • addedInput schema / properties / conversation_id
      Added value: +{
      +  "description": "Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.",
      +  "type": "string"
      +}
    • addedInput schema / properties / llm_model
      Added value: +{
      +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[
      +  "context",
      +  "llm_model"
      +]
  4. Changed1 schema field changed
    • addedInput schema / properties / agencyCode
      Added value: +{
      +  "description": "Only offers handled by this agency: the agency code returned by find_best_agency.",
      +  "type": "string"
      +}
  5. First observed

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the read-only, closed-domain nature is covered. The description adds the geographic and employer scope plus the contract types covered, but says nothing about result volume, pagination behavior, or rate limits beyond what the schema states.

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?

Three sentences, front-loaded with what is searched and where, followed by how to build filters and what to call next. No redundant or filler wording.

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?

For a 12-parameter, optional-only search tool with no output schema, the description covers purpose, filter sourcing, and the handoff to get_offer, and even hints that results carry a slug. It leaves defaults (lang, sort, pageSize, radius) to the schema, which is acceptable given full schema coverage.

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 every one of the 12 parameters is already documented in the schema, including the list_offer_facets and find_best_agency dependencies. The description adds only the emphasis that filter values must be exact French values, which the schema largely already conveys; 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 (search), resource (job offers), and scope (temporary, fixed-term, permanent contracts published by Actual group in France). It is clearly distinguishable from get_offer, which it explicitly names as the follow-up for a single result.

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?

Tells the agent to combine free-text query with town and filters, that facet values must come from list_offer_facets, that agencyCode comes from find_best_agency, and that get_offer with a result's slug yields the full offer. Both prerequisites and the natural next step are explicit.

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