Live probe refreshed Nov 2, 2026 · Endpoint host api.binary.so
Showing 25 of 57
Showing 25 of 57 tools from the public preview. Connect the server to inspect the full live tool list.
Change job status
change_job_statusChange whether a job takes applications: published (open), paused or closed. Only a published job accepts applications through its public link and can appear on the careers page or LinkedIn. Candidates can still be added to a paused or closed job. A draft job can only be published, which also shows it on the careers page. Confirm with the user before calling it.
Open in StudioConnect Binary ATS to any MCP client in minutes
https://api.binary.so/mcpThis server may ask you to sign in when your AI client connects.
Operate Binary ATS? You can take over the listing's metadata.
Request removal from the MCPBundles directory. We stop publishing this listing on mcpbundles.com.
Connect your ATS with your agent and run hiring like a pro. Create job forms and careers page, collect applications, screen candidates, schedule interviews and add interview feedback. Ask any question about your hiring database and get an instant answer. A Binary account is required.
https://api.binary.so/mcpThis server may ask you to sign in when your AI client connects.
Opens MCPBundles Studio with this server selected. After sign-in, chat and run tools from the same thread.
Browse all tools[
{
"name": "change_job_status",
"title": "Change job status",
"annotations": {
"readOnlyHint": false
},
"description": "Change whether a job takes applications: published (open), paused or closed. Only a published job accepts applications through its public link and can appear on the careers page or LinkedIn. Candidates can still be added to a paused or closed job. A draft job can only be published, which also shows it on the careers page. Confirm with the user before calling it."
},
{
"name": "upload_file",
"title": "Upload file",
"annotations": {
"readOnlyHint": false
},
"description": "Get a link to upload one file (resume, attachment) or video for a file or video field of a job's candidates. Step 1: call this with the job, the field id (the column parameter), and the file name. Step 2: POST the raw file bytes to upload_url, e.g. curl -X POST --data-binary @resume.pdf -H 'Content-Type: application/pdf' '<upload_url>' (not a multipart form). Step 3: pass {\"upload_id\": \"<upload_id>\"} as that field's value in add_candidate or update_candidate. The link is valid for 1 hour and onl"
},
{
"name": "schedule_interview",
"title": "Schedule interview",
"annotations": {
"readOnlyHint": false
},
"description": "Schedule an interview with ONE candidate at a set time, exactly as the app's Schedule now does: a Google Calendar event with a Google Meet link is created on the user's calendar and Google emails the invite to the candidate and every interviewer straight away. Before calling, confirm with the user the candidate, date, time AND timezone, length and interviewers, and tell them the candidate will get the invite. To find a time everyone is free, call check_interviewer_availability first; to let the "
},
{
"name": "update_job_settings",
"title": "Update job settings",
"annotations": {
"readOnlyHint": false
},
"description": "Change a job's settings: the closing date (after it passes the job stops accepting applications), whether someone may apply more than once, whether their email is verified, and the messages candidates see after applying or when the job is closed, where the job is (locations) and which widgets its public page shows. Only what you pass changes; widgets and locations each replace the whole list, so include what should stay (describe_hiring_form shows the current ones). Candidates see these straight"
},
{
"name": "get_workspace_usage",
"title": "Get workspace usage",
"annotations": {
"readOnlyHint": true
},
"description": "The workspace's plan and this month's usage: dollars used, total and remaining, when it resets, the plan's free usage credits, any extra usage bought on top (and any scheduled change to it), and roughly how many emails, AI reviews and LinkedIn lookups the remaining balance still covers. Usage is real US dollars, shared by the whole workspace. Use it only when the user asks about their usage or plan, or after a call returns limit_reached; don't check it before doing work. Say \"free usage credits\""
},
{
"name": "ask_to_connect_calendar",
"title": "Ask to connect calendar",
"annotations": {
"readOnlyHint": false
},
"description": "Email an interviewer asking them to connect their Google Calendar, as the app's \"Nudge\" in the scheduling form does. Only offer it while setting up an interview with a candidate, when create_booking_link or check_interviewer_availability says an interviewer's calendar isn't connected; never on its own, and never for the user's own calendar (they connect it themselves at the link in that message). candidate_id is the candidate the interview is for. If the person already has it connected, nothing "
},
{
"name": "manage_feedback_templates",
"title": "Manage feedback forms",
"annotations": {
"readOnlyHint": false
},
"description": "Create, edit or delete a job's feedback form, or make one the job's default, as the app's feedback template editor does. A form is a name plus extra questions, each rating, short_text or long_text, optionally required; the title, overall rating and notes are always added. On update, questions is the full new list: keep an existing question by passing its question_id (from list_feedback_templates), so feedback already given keeps its answers; questions without one are new. make_default also works"
},
{
"name": "describe_hiring_form",
"title": "Describe hiring form",
"annotations": {
"readOnlyHint": true
},
"description": "Describe a job's hiring form: the public page candidates fill in. Returns its name, description (the editor's HTML), questions (question_id, text, type, required, options) in the order they are asked, the job's settings (closing date, email verification, repeat applications, the messages candidates see), its stages and the public link. This is the form, not the candidate table: use describe_job_candidates to read or filter candidates."
},
{
"name": "update_job_visibility",
"title": "Update job visibility",
"annotations": {
"readOnlyHint": false
},
"description": "Show or hide a job on the workspace's careers page, and turn LinkedIn posting on or off. Only a published job appears in either. LinkedIn also needs the workspace connected to LinkedIn, a paid plan and a job description; the result says whether it will post and, if not, why. LinkedIn picks changes up within about 4 hours. These are public: ask the user and confirm before calling it."
},
{
"name": "change_stage",
"title": "Change stage",
"annotations": {
"readOnlyHint": false
},
"description": "Move ONE candidate to a stage of their job (stage names come from describe_job_candidates; matching is case-insensitive). Works exactly like moving the candidate in the app: the stage history records the change as the user. Returns previous_stage and stage; changed is false if the candidate was already there. This is a write that the candidate may see reflected in their application status: confirm with the user before calling it, and call once per candidate. It does not send the candidate a mess"
},
{
"name": "get_linkedin_profile",
"title": "Get LinkedIn profile",
"annotations": {
"readOnlyHint": false
},
"description": "Get one candidate's LinkedIn profile (headline, experience, education, skills, ...). Every tool reports the same linkedin block with a status: no_linkedin_url, not_found_on_linkedin, not_fetched or fetched. Fetch profiles whenever they help the task. If a candidate has no profile (no URL, or not found), answer from their resume and form answers instead, without asking. If the call is refused with limit_reached, stop the batch and follow what it says. A fetch takes a few seconds."
},
{
"name": "edit_feedback",
"title": "Edit feedback",
"annotations": {
"readOnlyHint": false
},
"description": "Change feedback written by the member this connection acts as (get_candidates with include [\"feedback\"] marks it mine: true). Pass only what changes: title, rating, notes, or answers by question_id (null clears an answer); everything else is kept. The candidate's average rating updates. Confirm with the user before calling it."
},
{
"name": "request_feedback",
"title": "Request feedback",
"annotations": {
"readOnlyHint": false
},
"description": "Ask members of the candidate's job to write feedback on ONE candidate. Each member gets an email from the member this connection acts as, with a link to the candidate. Only members of that job can be asked; an error lists who can. Candidates are never emailed. Useful after checking who owes feedback (get_candidates with include [\"interviews\", \"feedback\"], or analytics). This sends email: confirm the names with the user before calling it."
},
{
"name": "get_analytics_details",
"title": "Get analytics details",
"annotations": {
"readOnlyHint": true
},
"description": "List the records behind a number from run_analytics_query: WHO applied, which interviews lack feedback, who hasn't submitted an assignment or signed an offer. Pass the SAME single-metric query (one SELECT item, keep its WHERE / TIME / job scope). For a grouped result, pick one cell with drill_into (e.g. {\"job\": \"<job_id>\"} or {\"period\": \"2026-06-01\"}). Returns entity (candidate | interview | feedback | assignment | offer) and exactly one list, capped at 50 (total, returned, truncated). Candidate"
},
{
"name": "set_my_working_hours",
"title": "Set my working hours",
"annotations": {
"readOnlyHint": false
},
"description": "Set the user's own working hours in this workspace: the hours booking links offer them for interviews, as in the app's availability settings. Give only the days to change, by name, each a list of {start, end} times like 09:00 and 17:30, or [] for a day off; other days keep their hours. timezone (IANA) is needed the first time. Returns the whole week. Only the user's own hours can be set; confirm the change first."
},
{
"name": "add_comment",
"title": "Add comment",
"annotations": {
"readOnlyHint": false
},
"description": "Add a comment to ONE candidate, visible to the members of the job, never to the candidate (for messaging a candidate, see the product docs). Plain text; line breaks are kept. Optional mentions: emails of workspace members to notify. The comment is authored by the user. Returns the comment_id, which edit_comment needs. Confirm with the user before calling it."
},
{
"name": "manage_stages",
"title": "Manage stages",
"annotations": {
"readOnlyHint": false
},
"description": "List a job's stages or change them: add a stage, rename one, reorder them, or remove one. Use it to match another ATS's pipeline before importing. New, Shortlisted and Archived are built in: they cannot be renamed or removed. A stage that still has candidates cannot be removed; move them first with change_stage. Confirm with the user before changing stages, since everyone on the job sees them."
},
{
"name": "manage_assignments",
"title": "Manage assignments",
"annotations": {
"readOnlyHint": false
},
"description": "Create, edit or delete a job's take-home assignment, as the app's assignment editor does: a name, a description (the editor's HTML) and the fields a candidate fills, each with a type: short_text, long_text, number, date, single_select, multi_select, dropdown (these three need options), file (the candidate uploads any file, e.g. a finished video, a deck or a design), link, phone or video (the candidate records up to 60 seconds on camera in the browser; it can't take an uploaded file). Removing a "
},
{
"name": "update_hiring_form",
"title": "Update hiring form",
"annotations": {
"readOnlyHint": false
},
"description": "Change a job's hiring form: its name, description, and questions one at a time (add, edit, remove, reorder). Question ids come from describe_hiring_form; everything you don't mention is left as it is. Name and email are always asked and cannot be removed. A removed question disappears from the form but its existing answers stay on the candidates. On a live job this changes what applicants see right away: show the user the change and confirm first."
},
{
"name": "create_job",
"title": "Create job",
"annotations": {
"readOnlyHint": false
},
"description": "Create a new job. Every job asks for name and email; add questions for anything else you need, typed to fit (a resume is a file question, a LinkedIn profile a linkedin question), since they become the job's columns. Check search_jobs first in case the role already exists. By default the job is a DRAFT: nobody outside the workspace can see it, and it cannot hold candidates — say so and ask before publishing. Pass accept_candidates_now: true only to add or import candidates straight away, which pu"
},
{
"name": "list_feedback_templates",
"title": "List feedback forms",
"annotations": {
"readOnlyHint": true
},
"description": "A job's feedback forms (templates interviewers fill after an interview): the built-in Basic one and the job's own, which one is the default, and each form's extra questions (every form also asks for a title, an overall rating and notes). Use it before manage_feedback_templates. Changes nothing."
},
{
"name": "check_interviewer_availability",
"title": "Check interviewer availability",
"annotations": {
"readOnlyHint": true
},
"description": "Check when interviewers are free before scheduling with ONE candidate, for a set time or a booking link. For each interviewer: whether their Google Calendar is connected, their working hours, and their busy times from Google over the next days (up to 7, from from_date, default today). When every interviewer's calendar is connected it also returns open_slots: times of duration_minutes (default 60) inside everyone's working hours when all are free, which are the times a booking link would offer. E"
},
{
"name": "add_field",
"title": "Add field",
"annotations": {
"readOnlyHint": false
},
"description": "Add a field to a job's candidates, for example to hold your own review result. Only the team sees it: it never appears on the application form. Types: short_text, long_text, number, date, single_select, multi_select, dropdown (select types need options). The name must not match an existing field. Returns the new field with its id, which you then use in update_candidate and search_candidates. A field you fill holds the candidates you reviewed; people who apply afterwards stay empty until it runs "
},
{
"name": "search_docs",
"title": "Search docs",
"annotations": {
"readOnlyHint": true
},
"description": "Search Binary's product documentation to learn how to use Binary: how the web app works, where things are, what a feature does, plans and limits. Use it for \"how do I ...\" questions, and whenever the user wants something no tool here can do (e.g. export a CSV, connect Google Calendar, set up AI review): find the page and tell them how to do it in the Binary web app, with the link, instead of saying it can't be done. Returns slug, title, description and url per page; read one with read_doc. Not f"
},
{
"name": "get_writing_guide",
"title": "Get writing guide",
"annotations": {
"readOnlyHint": true
},
"description": "How to write a job description or an assignment's description: the exact HTML the Binary editor uses (so it renders with proper spacing) and how a job description is structured. Read it once before writing or rewriting one with create_job, update_hiring_form or manage_assignments. Changes nothing."
}
]Connect your ATS with your agent and run hiring like a pro. Create job forms and careers page, collect applications, screen candidates, schedule interviews and add interview feedback. Ask any question about your hiring database and get an instant answer. A Binary account is required. It provides MCP tools that your client discovers when it connects (this page may not list every tool name) that AI agents can use through the Model Context Protocol (MCP).
Add the MCPBundles server URL to your MCP client configuration (Claude Desktop, Cursor, VS Code, etc.). The URL format is: https://mcp.mcpbundles.com/bundle/binary. Authentication is handled automatically.
© 2026 ThinkChain Inc. All rights reserved.
Previewing 25 of 57 tools
Usage on MCPBundles
Binary ATS is a remote MCP server. The live tool list is supplied by the server when your MCP client connects, so the count is not fixed on this public page. After you connect in MCPBundles Studio or your client, you will see the tools your session can call.
Binary ATS uses One-click sign in. Binary ATS requires credentials. Connect via MCPBundles and authentication is handled automatically.
MCPBundles is an independent platform built on the open Model Context Protocol standard. MCPBundles is not affiliated with, sponsored by, or endorsed by Anthropic PBC.
Other MCP servers in this category from the directory index