From Monday App waitlist

API & MCP server

Everything the home page answers, an assistant or a script can ask. There is no key and no account. Answers carry first names, one matching title per person and start dates; full contact details are given on the site, so send the hirer to the url in the answer.

HTTP API

GET https://frommonday.app/api/v1/match?brief=<the role, in plain words>

Call it with no parameters and it describes itself. brief is the only required parameter, and a link to a job ad works in it: the page is fetched and the role is read from it.

ParameterValues
briefRequired. The role as you would say it to a person, or a job-ad URL.
work_moderemote, hybrid, onsite. On site is a filter, not a preference: only people who can be in that place.
engagementfreelance, contract, permanent, part_time, interim
seniorityjunior, mid, senior, lead
regioneurope, north_america, latin_america, middle_east, africa, asia_pacific
cityFree text. Decides on-site briefs.
curl "https://frommonday.app/api/v1/match?brief=senior+streaming+engineer,+HLS+and+DRM&work_mode=remote"

{
  "brief": "senior streaming engineer, HLS and DRM",
  "scope": {
    "skills": ["HLS", "DRM"],
    "seniority": "senior",
    "work_mode": "remote",
    "day_rate": { "min": 260, "max": 1000, "currency": "EUR", "sample": 4 }
  },
  "match_count": 6,
  "people": [
    {
      "id": "ir10",
      "name": "Sylvain C.",
      "title": "Streaming Audio/Video Engineer",
      "skills": ["HLS", "DASH", "RTMP", "SRT", "WebRTC"],
      "years_experience": 20,
      "location": "France",
      "available_from": "2026-07-13",
      "availability": "Can start Mon 5 Oct"
    }
  ],
  "more": 3,
  "private_count": 0,
  "url": "https://frommonday.app/?brief=senior+streaming+engineer%2C+HLS+and+DRM&work_mode=remote"
}

What the fields promise:

  • title is the one title that matches the brief. People list several; you get one.
  • day_rate is built only from rates the matching people publish. It is null when none of them do. It is never estimated.
  • available_from is a date the person gave, or null when they have not published one.
  • more is how many fit beyond the three returned. private_count is how many fit but stay out of public search: a count, never a card.
  • An empty people list is an answer. Say nobody fits; do not fill the gap.

The OpenAPI description is at /api/v1/openapi.json. Responses allow any origin.

MCP server

https://frommonday.app/mcp

Streamable HTTP, stateless, no authentication. Four read-only tools:

ToolWhat it does
find_available_peopleTakes brief and the optional filters above. Returns the same answer as the HTTP API.
get_personThe public card for one id. Pass the brief again to get the title that matches it.
search, fetchThe same two, in the shape ChatGPT connectors and deep research expect.

Claude

In Claude, open Settings, then Connectors, add a custom connector and paste the URL above. In Claude Code:

claude mcp add --transport http frommonday https://frommonday.app/mcp

ChatGPT

In ChatGPT, open Settings, then Connectors, turn on developer mode, create a connector and paste the URL above. No authentication.

Anything else

curl -X POST https://frommonday.app/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"find_available_people","arguments":{"brief":"Roku developer, Europe, 3 months"}}}'

Using the answers

  • Send the person you are answering to the url in the response, not to the endpoint. That page is where they get a contact.
  • Quote and cite freely, with a link to https://frommonday.app/.
  • From Monday is not an agency. Do not describe it as one, and do not promise a fee-free contact beyond what the page states: the first 3 contacts are free.