# Pinpoint MCP connector

The Pinpoint connector brings candidates, applications, interviews, departments and hiring team users into Claude, ChatGPT, Cursor and any MCP client, so recruiters can ask about their pipeline and update records inside their own Pinpoint access.

Source: https://elaichi.ai/connectors/pinpoint/

## Facts

| | |
| --- | --- |
| Application | Pinpoint |
| Category | ATS |
| AI tools | 89 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 89 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Pinpoint is connected

- Show applications created in Pinpoint this week
- Which Pinpoint access groups include hiring managers?
- Summarize answers on the senior engineer application

## Connect Pinpoint in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Pinpoint.
2. Optionally set Share with, then press Connect.
3. Paste a Pinpoint API key. One person generates a token in Pinpoint and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Pinpoint tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Pinpoint to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Pinpoint to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Pinpoint to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Pinpoint to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Pinpoint tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Pinpoint through Elaichi

### Catch a candidate record up after a screen

Recruiting. Ask for the candidate by name, then update their details and add or edit the answers to screening questions while the call is still fresh.

### See every application for an open role

Recruiting. Pull the list of applications for a job in Pinpoint and ask which ones are new, which have stalled, and which are ready for the hiring manager.

### Check the week's interview schedule

Hiring managers. List upcoming interviews across your open roles and ask who is interviewing whom, without opening Pinpoint or chasing the recruiter.

### Move a candidate into a new application

People. When a strong candidate fits a different role, create the new application in Pinpoint and remove the old one so the pipeline stays honest.

### Keep departments tidy as the org changes

People operations. Create, rename or remove departments in Pinpoint when teams reorganize, so every open role sits under the right part of the business.

### Onboard a new recruiter with the right access

HR admin. Add a new user to Pinpoint, check which access group they belong to, and remove users who have moved on, all from a plain request.

## Frequently asked questions

### How do I connect Pinpoint to Claude?

Two steps. First, connect Pinpoint in Elaichi by pasting a Pinpoint API key from your Pinpoint account; there is no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Sign in with your Elaichi account and Pinpoint is available in the conversation.

### Does Pinpoint work with ChatGPT and Cursor as well as Claude?

Yes. Once Pinpoint is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Pinpoint once and every client you use picks it up.

### What can an AI agent actually do with my Pinpoint data?

With Pinpoint connected, an agent can look up candidates and update their details, list and create applications for open roles, record or edit screening answers, show upcoming interviews, and manage departments, users and access groups. Because Pinpoint offers a large set of actions, short concrete asks such as "list interviews this week" work better than long paragraphs. Ask in plain language and the agent finds the right action in Pinpoint.

### Does connecting Pinpoint give the AI access to every candidate and role?

No. Every request to Pinpoint runs inside the access of the person who signed in, so an agent sees only the candidates, applications and departments that person can already see in Pinpoint. Elaichi can narrow that further with restrictions, and it can never widen it beyond what Pinpoint itself allows.

### Can my team share one Pinpoint connection?

Yes. One person connects Pinpoint in Elaichi and shares the connection with a team, and nobody else ever handles the Pinpoint API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person behind every change to a candidate or application in Pinpoint.

### Can I stop an agent from deleting or changing things in Pinpoint?

Yes. Restrictions in Elaichi work per action, so you can allow reading candidates and interviews in Pinpoint while blocking deletes of applications, departments or users. A blocked action is never shown to Claude, ChatGPT or any other client, so no prompt, however worded, can reach it.

### What happens to a Pinpoint connection when someone leaves?

Offboarding a person in Elaichi ends their access to Pinpoint through every client at once, and their past actions stay in the audit log. A shared Pinpoint connection keeps working for everyone else on the team. If you ever want to remove Pinpoint entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client.

## All 89 Pinpoint tools

Every tool below is callable through https://api.elaichi.ai/mcp once Pinpoint is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Pinpoint users** (List). List users in Pinpoint. Returns id, created_at, email, first_name, last_name, time_zone, and updated_at fields for each user in the response.
- **Get single Pinpoint user by ID** (Get). Get details for a specific user in Pinpoint. Requires id. Returns fields such as id, created_at, email, first_name, last_name, time_zone, and updated_at in the response.
- **Delete a Pinpoint user by ID** (Delete). Delete a user in Pinpoint. Requires id. Returns meta information about the deletion in the response.
- **Create a Pinpoint user** (Create). Create a user in Pinpoint. Requires first_name, last_name, email, and user_type. Returns user id, type, created_at, updated_at, email, first_name, last_name, and time_zone in the response.
- **List all Pinpoint access groups** (List). List all access groups in Pinpoint. Returns id, type, created_at, description, create_as_referral, name, number_of_roles, updated_at, wizard_enabled, wizard_requirements, and roles relationships in the response.
- **Get single Pinpoint access group by ID** (Get). Get details for a specific access group in Pinpoint using id. Returns id, type, attributes (created_at, description, create_as_referral, name, number_of_roles, updated_at, wizard_enabled, wizard_requirements), and relationships (roles).
- **Get single Pinpoint answer by ID** (Get). Get an answer in Pinpoint by id. Returns fields such as id, title, additional_information, boolean_answer, number_answer, question_type, date_answer, url_answer, multiple_choice_answer, created_at, updated_at, relationships, and more.
- **Create a Pinpoint answer** (Create). Create an answer in Pinpoint. Requires answerable and question relationships, plus required attributes depending on question type. Returns id, attributes such as title, boolean_answer, number_answer, text_answer, date_answer, url_answer, date_from_answer, date_to_answer, multiple_choice_answer, document_answer, attachments, question_type, and created_at/updated_at.
- **Update a Pinpoint answer by ID** (Update). Update an answer in Pinpoint by id. The fields returned in the response include id, type, attributes (such as title, boolean_answer, number_answer, date_answer, url_answer, text_answer, created_at, updated_at), and relationships. answerable and question cannot be updated via this endpoint.
- **Delete a Pinpoint answer by ID** (Delete). Delete an answer in Pinpoint by id. Returns meta-information in the response.
- **List all Pinpoint applications** (List). List applications in Pinpoint. Returns id, type, attributes (such as created_at, candidate_id, hired_at, internal_candidate, job_id, stage_id, contact details, and more), and relationships (job, stage, candidate, offers, etc.). Confidential jobs are excluded unless 'confidential' is included in the filter[job_visibility] parameter.
- **Get single Pinpoint application by ID** (Get). Get application details in Pinpoint using id. Returns fields such as created_at, updated_at, candidate_id, job_id, full_name, status dates, tags, and related resources in response. Confidential jobs are excluded by default.
- **Create a Pinpoint application** (Create). Create an application in Pinpoint. Requires first_name, last_name, email, and job relationship. Returns id, candidate_id, job_id, stage_id, and created_at fields in the response.
- **Update a Pinpoint application by ID** (Update). Update an existing application in Pinpoint using its id. Returns updated fields such as first_name, last_name, email, phone, date_of_birth, linkedin_url, locale, and relationships like stage and candidate. Summary, résumé, job, and answers cannot be modified.
- **Delete a Pinpoint application by ID** (Delete). Delete an existing application in Pinpoint using the required id. Returns meta information confirming the deletion in the response.
- **List all Pinpoint candidates** (List). List candidates in Pinpoint. Returns id, address1, address2, country, date_of_birth, email, first_name, full_name, last_name, middle_name, locale, phone, phone_iso2, postcode, town, created_at, updated_at, and relationships in the response.
- **Get single Pinpoint candidate by ID** (Get). Get a specific candidate in Pinpoint by id. Returns candidate fields including id, full_name, email, address, date_of_birth, created_at, updated_at, and key relationships such as applications and skills.
- **Update a Pinpoint candidate by ID** (Update). Update a candidate in Pinpoint using id. Allows adding or updating custom_attributes and attaching documents via documents_base64. Returns candidate details including address, email, name, and related applications, skills, and custom_attributes.
- **List all Pinpoint departments** (List). List departments in Pinpoint. Returns a list of departments with key fields: id, name, created_at, updated_at in the response.
- **Get single Pinpoint department by ID** (Get). Get information about a specific department in Pinpoint using id. Returns id, type, and attributes including created_at, name, and updated_at.
- **Create a Pinpoint department** (Create). Create a new department in Pinpoint. Requires name. Returns id, name, created_at, and updated_at in the response.
- **Update a Pinpoint department by ID** (Update). Update a department in Pinpoint using id. Returns department details with fields id, name, created_at, and updated_at.
- **Delete a Pinpoint department by ID** (Delete). Delete a specific department in Pinpoint using id. Returns meta object containing non-standard metadata about the operation result.
- **List all Pinpoint interviews** (List). List interviews in Pinpoint. Returns for each interview: id, start_at, end_at, interviewable_id, interviewable_type, created_at, updated_at, status, summary, presence, and their relationships.
- **Get single Pinpoint interview by ID** (Get). Get interview details in Pinpoint. Requires id. Returns fields such as id, start_at, end_at, interviewable_id, interviewable_type, created_at, updated_at, status, summary, presence, and related resource objects in response.
- **Update a Pinpoint interview by ID** (Update). Update an existing interview in Pinpoint by id. Only the summary field can be updated and must be in HTML format using specific allowed elements. Returns interview details including start_at, end_at, status, and summary.
- **List all Pinpoint jobs** (List). List jobs in Pinpoint. Returns id, type, attributes (such as title, description, compensation, status), and relationships fields for each job. Confidential jobs are excluded by default unless 'confidential' is specified in filter[visibility].
- **Get single Pinpoint job by ID** (Get). Get details about a specific job in Pinpoint using id. Returns key job fields such as title, description, compensation, status, required candidate information, responsibilities, benefits, and relationships.
- **Create a Pinpoint job** (Create). Create a new job in Pinpoint. Requires title, status, selected_hiring_workflow_id, and structure_link. Returns job id, title, status, visibility, employment_type, and created_at in the response.
- **Update a Pinpoint job by ID** (Update). Update a specific job in Pinpoint using job id. Returns job attributes including title, description, employment_type, compensation details, and relationships such as department, division, and location.
- **Delete a Pinpoint job by ID** (Delete). Delete a specific job in Pinpoint. Requires id. Returns meta object in the response with non-standard meta-information about the deletion result.
- **List all Pinpoint job seekers** (List). List job seekers in Pinpoint. Returns id, candidate_id, first_name, last_name, full_name, email, phone, date_of_birth, summary, created_at, updated_at, locale, channel, channel_source, pipeline_source, address1, address2, town, country, postcode, and key relationships in the response.
- **Get single Pinpoint job seeker by ID** (Get). Get a specific job-seekers resource in Pinpoint using id. Returns job seeker fields such as candidate_id, first_name, last_name, email, phone, summary, created_at, as well as relationships to answers, candidate, comments, custom_attributes, and structured_section_responses.
- **List all Pinpoint requisitions** (List). List requisitions in Pinpoint. Returns an array with fields such as id, name, requisition_template_id, identifier, job_id, creator_id, status, created_at, and updated_at in the response.
- **Get single Pinpoint requisition by ID** (Get). Get requisition details in Pinpoint by id. Returns fields such as id, requisition_template_id, name, identifier, job_id, creator_id, status, created_at, updated_at, and relationship data in the response.
- **Create a Pinpoint requisition** (Create). Create a new requisition in Pinpoint. Requires a relationship to requisition_template. Returns id, name, identifier, status, creator_id, requisition_template_id, and timestamps. Created requisitions are auto-approved and cannot extend job headcount.
- **Update a Pinpoint requisition by ID** (Update). Archive a specific requisition in Pinpoint. Requires id. Archives requisition by setting 'archive': true. Returns requisition details including id, name, identifier, status, creator_id, and timestamps.
- **Delete a Pinpoint requisition by ID** (Delete). Delete a specific requisition in Pinpoint by id. Returns a meta object confirming the deletion. Requires id.
- **List all Pinpoint positions** (List). List positions in Pinpoint. Returns id, type, attributes such as archived_at, discarded_at, identifier, name, parent_position_id, created_at, updated_at, and related relationships like position_openings, current_position_opening, child_positions, parent_position, and custom_attributes for each position.
- **Get single Pinpoint position by ID** (Get). Get information about a specific position in Pinpoint. Requires id. Returns fields such as archived_at, discarded_at, identifier, name, parent_position_id, created_at, updated_at, and key relationships.
- **List all Pinpoint locations** (List). List locations in Pinpoint. Returns id, type, attributes (city, country_code, created_at, name, postal_code, province, street_address, updated_at), and relationships for each location in the response.
- **Get single Pinpoint location by ID** (Get). Get location in Pinpoint by id. Returns id, type, attributes (city, country_code, created_at, name, postal_code, province, street_address, updated_at), and relationships (equality_monitoring_template) in the response.
- **Create a Pinpoint location** (Create). Create a new location in Pinpoint. Requires name and country_code. Returns id, name, country_code, city, province, postal_code, street_address, created_at, and updated_at in the response.
- **Update a Pinpoint location by ID** (Update). Update a specific location in Pinpoint using id. Returns location fields including city, country_code, name, postal_code, province, street_address, created_at, and updated_at.
- **Delete a Pinpoint location by ID** (Delete). Delete a specific location in Pinpoint using id. Returns meta information confirming the deletion.
- **List all Pinpoint divisions** (List). List divisions in Pinpoint. Returns id, type, and attributes (created_at, name, updated_at) for each division in the response.
- **Get single Pinpoint division by ID** (Get). Get a specific division in Pinpoint by id. Returns id, type, created_at, name, and updated_at fields in the response.
- **Create a Pinpoint division** (Create). Create a new division in Pinpoint. Returns id, type, and attributes including name, created_at, and updated_at in the response.
- **Update a Pinpoint division by ID** (Update). Update a specific division in Pinpoint. Requires id. Returns division fields including id, name, created_at, and updated_at for tracking and identification.
- **Delete a Pinpoint division by ID** (Delete). Delete a specific division in Pinpoint using id. Requires a valid id. Returns meta information confirming the deletion status in the response.
- **List all Pinpoint scorecards** (List). List scorecards in Pinpoint. Returns id, name, interview_guidance, is_active, scorecardable_id, scorecardable_type, updated_at, created_at, and relationships: scorecard_notes, scorecard_sections, stages for each scorecard.
- **Get single Pinpoint scorecard by ID** (Get). Get a specific scorecard in Pinpoint by id. Returns fields including id, name, interview_guidance, is_active, scorecardable_id, scorecardable_type, updated_at, created_at, as well as relationships to scorecard_notes, scorecard_sections, and stages.
- **List all Pinpoint candidate surveys** (List). List Candidate Surveys in Pinpoint. Returns surveys sent to candidates, including key fields such as rating, comment, responded_at, created_at, and updated_at. Response also includes related application data if requested.
- **Get single Pinpoint candidate survey by ID** (Get). Get a specific candidate-survey in Pinpoint by id. Returns key fields including rating, comment, responded_at, created_at, and updated_at, as well as associated application data when included.
- **List all Pinpoint comments** (List). List Comments in Pinpoint. Returns each comment's id, body_text, commentable_id, commentable_type, created_at, private_comment, updated_at, and user_id.
- **Get single Pinpoint comment by ID** (Get). Get a specific comment in Pinpoint using id. Returns fields such as body_text, commentable_id, commentable_type, created_at, private_comment, updated_at, and user_id in the response.
- **Create a Pinpoint comment** (Create). Create a new comment in Pinpoint. Requires body_text and commentable relationship (applications, job_seekers, or candidates). Returns id, body_text, commentable_id, commentable_type, created_at, updated_at, and user_id in the response.
- **List all Pinpoint custom attributes** (List). List all Custom Attributes in Pinpoint for a specific object by providing custom_attributable_id and custom_attributable_type. Returns id, value, field_name, option_value, option_label, created_at, and updated_at fields in the response.
- **Get single Pinpoint custom attribute by ID** (Get). Get a specific custom attribute in Pinpoint using id. Returns fields including value, field_name, option_value, option_label, created_at, and updated_at, along with relationships to custom_field and custom_attributable.
- **Create a Pinpoint custom attribute** (Create). Create a new custom attribute in Pinpoint. Requires custom_attributable_type, custom_attributable_id, and custom_field_id. Returns id, field_name, option_value, option_label, created_at, and updated_at for the new custom attribute.
- **Update a Pinpoint custom attribute by ID** (Update). Update a specific custom attribute in Pinpoint using id. You can modify only the _value field matching the field_type of the associated custom field. The response returns id, field_name, value, option_value, option_label, created_at, and updated_at.
- **Delete a Pinpoint custom attribute by ID** (Delete). Delete a specific custom attribute in Pinpoint using id. Returns a meta object in the response confirming successful deletion.
- **List all Pinpoint custom fields** (List). List all custom fields in Pinpoint. Returns id, name, description, field_type, required, position, created_at, updated_at, and relationships to custom_field_options in the response.
- **Get single Pinpoint custom field by ID** (Get). Get details about a specific custom field in Pinpoint. Requires id. Returns attributes like name, field_type, description, options, required, resource_type, created_at, and updated_at.
- **Create a Pinpoint custom field** (Create). Create a new custom field in Pinpoint. Requires name, field_type, resource_type, and sample_value. Returns id, field_type, name, resource_type, required, created_at, and updated_at in the response.
- **Update a Pinpoint custom field by ID** (Update). Update a custom field in Pinpoint using its id. Cannot modify field_type or resource_type. Returns id, name, description, position, required, sample_value, and timestamps.
- **Delete a Pinpoint custom field by ID** (Delete). Delete a specific custom field in Pinpoint using id. Returns meta object confirming deletion.
- **List all Pinpoint equality monitoring categories** (List). List equality-monitoring-categories in Pinpoint. Returns id, name, enabled, created_at, and updated_at fields along with related equality_monitoring_options if included.
- **Get single Pinpoint equality monitoring category by ID** (Get). Get details of an equality monitoring category in Pinpoint using id. Returns created_at, enabled, name, and updated_at attributes, along with related equality_monitoring_options if included.
- **List all Pinpoint hiring workflows** (List). List all hiring workflows in Pinpoint. Returns each workflow's id, name, creation date, update date, and related stages in the response.
- **Get single Pinpoint hiring workflow by ID** (Get). Get details for a specific hiring-workflow in Pinpoint using id. Returns attributes such as created_at, name, and updated_at, and relationships including stages for the workflow.
- **List all Pinpoint job templates** (List). List job templates in Pinpoint. Returns an array of job templates with id, title, created_at, and updated_at fields in the response.
- **List all Pinpoint onboarding applications** (List). List Onboarding Applications in Pinpoint. Returns a collection of onboarding applications with fields id, created_at, start_at, status, and updated_at, as well as related application and onboarding_answers data.
- **Get single Pinpoint onboarding application by ID** (Get). Get a specific onboarding application in Pinpoint using id. Returns key fields including created_at, start_at, status, and updated_at, along with related onboarding_answers and applications if included.
- **List all Pinpoint questions** (List). List questions in Pinpoint. Returns id, banked, created_at, updated_at, additional_information, num_required_answer_options, max_num_required_answer_options, question_type, required, title, and multiple_choice_options for each question.
- **List all Pinpoint requisition templates** (List). List Requisition Templates in Pinpoint. Returns id, name, enforced_maximum_headcount, has_enforced_maximum_headcount, created_at, and updated_at fields for each requisition template.
- **Get single Pinpoint requisition template by ID** (Get). Get a specific requisition template in Pinpoint using id. Returns fields such as name, enforced_maximum_headcount, has_enforced_maximum_headcount, created_at, updated_at, and related requisition_template_fields.
- **List all Pinpoint structure custom group ones** (List). List Structure Custom Group Ones in Pinpoint. Returns id, name, title, created_at, updated_at, and related jobs for each structure_custom_group_one.
- **Get single Pinpoint structure custom group one by ID** (Get). Get a specific structure custom group one in Pinpoint by id. Returns id, name, title, created_at, updated_at, and related jobs in the response.
- **Create a Pinpoint structure custom group one** (Create). Create a structure custom group one in Pinpoint. Requires name. Returns id, name, title, created_at, updated_at, and related jobs in the response.
- **Update a Pinpoint structure custom group one by ID** (Update). Update structure custom group one in Pinpoint using id. Returns id, name, title, created_at, updated_at, and related jobs in the response.
- **Delete a Pinpoint structure custom group one by ID** (Delete). Delete a specific structure custom group one in Pinpoint by id. Requires id. Returns meta information confirming successful deletion in the response.
- **List all Pinpoint structure links** (List). List structure links in Pinpoint. Returns id, created_at, updated_at, division_id, location_id, department_id, structure_custom_group_one_id, accepts_speculative_applications, and optionally names and in_use fields indicating associated structure items and usage status.
- **Get single Pinpoint structure link by ID** (Get). Get a specific structure link in Pinpoint using id. Returns fields such as created_at, updated_at, division_id, location_id, department_id, structure_custom_group_one_id, accepts_speculative_applications, names, and in_use.
- **Create a Pinpoint structure link** (Create). Create a new structure link in Pinpoint. Requires department and location relationships (and division or structure_custom_group_one if applicable). Returns id, created_at, updated_at, and relationship identifiers (division_id, location_id, department_id, structure_custom_group_one_id).
- **Update a Pinpoint structure link by ID** (Update). Update a specific structure link in Pinpoint using id. Only accepts_speculative_applications attribute can be updated. Returns id, type, accepts_speculative_applications, and relationship details in the response.
- **Delete a Pinpoint structure link by ID** (Delete). Delete a specific structure link in Pinpoint by id. Returns meta information in the response. If the structure link is in use (assigned to resources like jobs), the request will return a 409 Conflict and must be disassociated before deletion.
- **List all Pinpoint structured sections** (List). List all structured-sections in Pinpoint. Returns id, title, description, internal_name, created_at, updated_at, and related questions fields in the response.
- **Get single Pinpoint structured section by ID** (Get). Get a specific structured section in Pinpoint by id. Returns title, description, internal_name, created_at, updated_at, and related questions in the response.
