MCP Server
Nico exposes a Model Context Protocol (MCP) server that lets AI assistants like Claude interact with Nico directly.What can the MCP server do?
The MCP server provides 12 tools in three groups: job posting search (job_posting_*, discover openings in Nico’s index), job application management (job_application_*, your own tracked applications), and interviews (schedule and manage interviews on your applications).
Job posting search (
job_posting_search, job_posting_get) searches Nico’s shared posting index — not your own applications. To check “have I already saved this?”, use job_application_search. Posting search requires job search to be enabled for your account.Connecting your AI assistant
The server URL for all assistants is:Claude (Desktop and claude.ai)
- Go to Settings → Connectors and choose Add custom connector.
- Enter a name (e.g. “Nico”) and the server URL above. Leave the advanced OAuth fields blank.
- Click Connect and approve access on Nico’s consent screen.
ChatGPT
Custom MCP connectors in ChatGPT require developer mode, which is available on paid plans (Plus, Pro, Business/Enterprise).- Enable developer mode: go to Settings → Apps & Connectors → Advanced settings and turn on Developer mode.
- Go back to Apps & Connectors and choose Create to add a custom connector.
- Enter a name (e.g. “Nico”), the server URL above, and select OAuth as the authentication method. Leave the client ID and secret blank — ChatGPT registers itself automatically.
- Complete the connection and approve access on Nico’s consent screen.
The MCP server requires OAuth authentication with the
mcp scope — the connector requests it automatically. See OAuth for details on the flow, scopes, and revoking access.Job posting search
job_posting_search
Search Nico’s job postings index — the same data behind the in-app job search at/jobs. Returns the most recent matching postings, newest-first, in compact form (no application URL or description — fetch those with job_posting_get).
Parameters:
City radius search:
Pass
city together with country_code (plus region for US/CA) to filter postings within radius_km of that city. Cities are resolved by exact, case-insensitive match against Nico’s existing geocoded-locations index — there is no live geocoding fallback, so unknown or ambiguous names return an error rather than a best-guess match.
url and description to stay compact. Take a result’s id and call job_posting_get to retrieve the application URL and the full description.
Errors:
The tool returns a single-key error object when the request can’t proceed:
country_code is required—country_codeis mandatory on every call.region (state/province) is required for city search in US(orCA) —regionmust be set whencityis given and the country isUSorCA.Location not found: <city>— the city wasn’t found in Nico’s geocoded locations index.Ambiguous location: multiple matches for <city> — please refine— more than one row matched; narrow withregion.Unknown employer: <name>— a name inemployersdidn’t match any employer.Ambiguous employer: multiple matches for <name> — please refine— a name inemployersmatched more than one employer; refine the spelling.Job search is not enabled for this account— the calling account doesn’t have job search enabled.
job_posting_get
Get one job posting by theid returned from job_posting_search. Returns the same fields as a search result, plus the external application url and the full description (the two fields the search list omits).
Parameters:
Example response:
{ "error": "Job posting not found" } for an unknown id. Same feature-flag gate as job_posting_search.
Job application management
job_application_search
Search your job applications by URL (exact match) or company name (case-insensitive). Parameters:
*At least one of
url or company_name is required.
Example response (search by URL):
job_application_list
List your job applications with optional filtering and pagination. Parameters:
Example response:
job_application_get
Get the full details of one job application, including its notes and interviews. Parameters:
Example response:
{ "error": "Job application not found" } for an unknown id.
job_application_parse_url
Extract structured job data from a job posting URL. Nico automatically detects the job board and parses the posting. Parameters:
Example response:
job_application_create
Create a new job application inproposed status. The account owner must approve it before it moves forward.
Parameters:
Idempotency: If an application with the same
url already exists, the tool returns { "error": "A job application with this URL already exists", "existing_job_application_id": "<id>" } instead of creating a duplicate.
Example response:
job_application_add_note
Add a note to an existing job application. Notes are visible to all team members. Parameters:
Example response: