Hiring

Post a job

hiring_create_job · Changes data · Markdown

Posts a job with its own page and application form on the careers page.

$0.01 a call

From your agent’s balance. A call that fails costs nothing.

An example

Post a job for a bike mechanic in our Portland workshop, full time, $24 to $30 an hour, and ask how many years they've worked in a shop.

Your agent callshiring_create_job$0.01 a call

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "title": "Bike mechanic",
  "department": "Workshop",
  "location": "Portland, OR",
  "workplace": "on_site",
  "employment_type": "full_time",
  "description": "We build, tune and repair city, gravel and cargo bikes in our Portland workshop. You work the stand with two other mechanics: tune-ups, brake bleeds, wheel builds and e-bike checks.\n\n**You have** two years or more in a bike shop, and your own basic tools.\n\n**We offer** paid time off, health insurance and a staff discount on bikes and parts.",
  "salary": {
    "min": 24,
    "max": 30,
    "currency": "USD",
    "period": "hour"
  },
  "questions": [
    {
      "label": "How many years have you worked as a bike mechanic?",
      "type": "number",
      "required": true
    },
    {
      "label": "Can you lift 50 lb?",
      "type": "yes_no",
      "required_answer": true
    }
  ],
  "criteria": [
    {
      "text": "Two years as a mechanic in a bike shop",
      "required": true
    },
    {
      "text": "Has built wheels",
      "required": false
    }
  ],
  "open": true
}
What comes back
{
  "job": {
    "job": "bike-mechanic",
    "title": "Bike mechanic",
    "department": "Workshop",
    "location": "Portland, OR",
    "workplace": "on_site",
    "employment_type": "full_time",
    "salary": {
      "min": 24,
      "max": 30,
      "currency": "USD",
      "period": "hour"
    },
    "salary_text": "$24 to $30 an hour",
    "description": "We build, tune and repair city, gravel and cargo bikes in our Portland workshop. You work the stand with two other mechanics: tune-ups, brake bleeds, wheel builds and e-bike checks.\n\n**You have** two years or more in a bike shop, and your own basic tools.\n\n**We offer** paid time off, health insurance and a staff discount on bikes and parts.",
    "questions": [
      {
        "id": "q1",
        "label": "How many years have you worked as a bike mechanic?",
        "type": "number",
        "required": true
      },
      {
        "id": "q2",
        "label": "Can you lift 50 lb?",
        "type": "yes_no",
        "required": false,
        "required_answer": true
      }
    ],
    "criteria": [
      {
        "id": "c1",
        "text": "Two years as a mechanic in a bike shop",
        "required": true,
        "weight": 3
      },
      {
        "id": "c2",
        "text": "Has built wheels",
        "required": false,
        "weight": 3
      }
    ],
    "filter": null,
    "job_id": 4101,
    "status": "open",
    "stages": [
      "Applied",
      "Screen"
    ],
    "page_url": "https://cncto.co/j/halverson-cycle-repair/bike-mechanic",
    "applicants": {
      "Applied": 0,
      "Screen": 0,
      "Interview": 0,
      "Offer": 0,
      "Hired": 0,
      "Rejected": 0
    },
    "opened_at": "2026-10-14T08:00:00+00:00",
    "closed_at": null
  },
  "careers_url": "https://cncto.co/j/halverson-cycle-repair"
}

Use it when

The business is hiring for a role.

What it does

A job with its own page and application form on the careers page (cncto.co/j/<name>/<job>): name, email, phone, links, a résumé (PDF or Word), a cover letter and your questions. A draft unless open is true. Each application costs $0.50; posting is $0.01.

What comes back

job: its slug, title, status, page URL, salary text, questions, criteria, filter, stages and applicant counts; and the careers page URL. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
titleRequiredstringe.g. "Bike mechanic". 2 to 160 characters.
descriptionRequiredstringMarkdown: the role, what they will do, what you look for, what you offer. 20 to 20,000 characters.
departmentstringUp to 80 characters.
locationstringe.g. "Portland, OR". Up to 160 characters.
workplacestringOne of: on_site,hybrid,remote.
employment_typestringOne of: full_time,part_time,contract,internship,temporary.
salaryobject{"min": 52000, "max": 60000, "currency": "USD", "period": "year"} (period: hour, month or year).
questionsarray of objectsExtra questions on the application form: [{"label", "type", "required", "help"}]. type: short_text, long_text, yes_no, choice, multi_choice (both with "options": ["...", "..."]), number, date or url. A yes_no question can set "required_answer": true or false; any other answer flags the applicant (never an automatic no). A date question can take include_time (a time too), range (a first and a last day), and earliest and latest ("2026-11-01", or "today", "today+7", "today-30"). Up to 10 items.
criteriaarray of objectsWhat a screening checks: [{"text": "Three years in customer support", "required": true, "weight": 3}]. weight, 1 to 5, is how much it counts in the match score; a required one a screening does not find is named. Give a criterion's id (from hiring_list_jobs) when rewording it, so past screenings stay attached. Used by hiring_screen_queue and hiring_record_screening. Up to 10 items.
stagesarray of stringsThe steps between Applied and Hired/Rejected; default Screen, Interview, Offer. Up to 8 items.
filterobject or nullWho the hiring team hears about: {"min_match": 70, "required": true, "max_risk": "minor"} (the lowest match score, every required criterion shown, the most risk the checks may find). With a filter, the team is told about a candidate once your screening (hiring_record_screening) passes it, in your words: by email to the careers page's notify address and as the event hiring.candidate_passed; not about every application as it arrives. null: no filter.
filter.min_matchinteger0 to 100.
filter.requiredboolean
filter.max_riskstringOne of: none,minor,high.
openbooleanTake applications now. Default: false.

The call

Over MCP, call hiring_create_job on https://api.conecto.chat/mcp/hiring. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/hiring_create_job \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Bike mechanic","department":"Workshop","location":"Portland, OR","workplace":"on_site","employment_type":"full_time","description":"We build, tune and repair city, gravel and cargo bikes in our Portland workshop. You work the stand with two other mechanics: tune-ups, brake bleeds, wheel builds and e-bike checks.\n\n**You have** two years or more in a bike shop, and your own basic tools.\n\n**We offer** paid time off, health insurance and a staff discount on bikes and parts.","salary":{"min":24,"max":30,"currency":"USD","period":"hour"},"questions":[{"label":"How many years have you worked as a bike mechanic?","type":"number","required":true},{"label":"Can you lift 50 lb?","type":"yes_no","required_answer":true}],"criteria":[{"text":"Two years as a mechanic in a bike shop","required":true},{"text":"Has built wheels","required":false}],"open":true}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_set_up404The business has no careers page yet.Run hiring_setup_careers first.
invalid_input400A question, criterion, filter or salary is not valid.Fix what the message names.
conflict409A job with that title exists already.Change it with hiring_update_job.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md