MCP App Store

Overview

FoundRole helps you search for relevant jobs and manage your applications in one workflow. Find openings by role, location, and salary, review job details, and save roles to your personal tracker. Move applications through stages (Saved → Applied → Interviewing → Offered), add notes and contacts, set follow-up reminders, and manage job alerts. Built for job seekers who want a faster, more organized way to track progress from discovery to follow-up. Currently, job search results are available for U.S.-based roles only.

Tools

job_alert_list

ChatGPT
Lists the authenticated user's job alerts across all subscription sources (regular, company page, MCP). Input: - status: Filter by status — one of pending, active, unsubscribed (optional, default: all statuses) - limit: Number of results to return (default 20, max 50) - offset: Number of results to skip (default 0) Output: Returns the user's job alerts with pagination info and a summary of the underlying job search (query, location, company where available). Each response includes a system_instruction describing how to present the results for the current client.

job_alert_list

ChatGPT
Lists the authenticated user's job alerts across all subscription sources (regular, company page, MCP). Input: - status: Filter by status — one of pending, active, unsubscribed (optional, default: all statuses) - limit: Number of results to return (default 20, max 50) - offset: Number of results to skip (default 0) Output: Returns the user's job alerts with pagination info and a summary of the underlying job search (query, location, company where available). Each response includes a system_instruction describing how to present the results for the current client.

job_alert_subscribe

ChatGPT
Subscribes the authenticated user to job alerts for a specific saved job search. Input: - job_search_id: The job search identifier to subscribe to (required). Accepts either the job search UUID or the composite job ID returned by jobs_search / jobs_details (format: "seo_id--job_search_id"). - frequency: Alert frequency — one of daily, weekly, monthly (optional, defaults to "weekly") Output: Returns the created or updated job alert with id, status, and frequency. Idempotent: calling this tool for an already-subscribed search updates the existing alert without creating a duplicate.

job_alert_subscribe

ChatGPT
Subscribes the authenticated user to job alerts for a specific saved job search. Input: - job_search_id: The job search identifier to subscribe to (required). Accepts either the job search UUID or the composite job ID returned by jobs_search / jobs_details (format: "seo_id--job_search_id"). - frequency: Alert frequency — one of daily, weekly, monthly (optional, defaults to "weekly") Output: Returns the created or updated job alert with id, status, and frequency. Idempotent: calling this tool for an already-subscribed search updates the existing alert without creating a duplicate.

job_alert_unsubscribe

ChatGPT
Unsubscribes the authenticated user from job alerts for a specific job search. Input: - job_search_id: The job search identifier to unsubscribe from (required). Accepts either the job search UUID or the composite job ID returned by jobs_search / jobs_details (format: "seo_id--job_search_id"). Output: Confirms the alert has been unsubscribed. Idempotent: returns success even when the user was not subscribed or is already unsubscribed.

job_alert_unsubscribe

ChatGPT
Unsubscribes the authenticated user from job alerts for a specific job search. Input: - job_search_id: The job search identifier to unsubscribe from (required). Accepts either the job search UUID or the composite job ID returned by jobs_search / jobs_details (format: "seo_id--job_search_id"). Output: Confirms the alert has been unsubscribed. Idempotent: returns success even when the user was not subscribed or is already unsubscribed.

job_alert_unsubscribe_all

ChatGPT
Unsubscribes the authenticated user from ALL of their job alerts at once, across every subscription source (regular, company page, MCP). Input: - confirm: Must be true to execute. The call is rejected when omitted or not true — this guards against an unintended bulk unsubscribe. Output: Confirms how many alerts were unsubscribed. Idempotent: returns success even when the user has no active alerts.

job_alert_unsubscribe_all

ChatGPT
Unsubscribes the authenticated user from ALL of their job alerts at once, across every subscription source (regular, company page, MCP). Input: - confirm: Must be true to execute. The call is rejected when omitted or not true — this guards against an unintended bulk unsubscribe. Output: Confirms how many alerts were unsubscribed. Idempotent: returns success even when the user has no active alerts.

jobs_details

ChatGPT
Fetches full details for one job by the id returned from jobs_search — the deeper view behind a search result. Input: - job_id: The exact ID string from the id field of a jobs_search result. Output: Complete job details: description, skills, benefits, requirements, salary, and application link.

jobs_details

ChatGPT
Fetches full details for one job by the id returned from jobs_search — the deeper view behind a search result. Input: - job_id: The exact ID string from the id field of a jobs_search result. Output: Complete job details: description, skills, benefits, requirements, salary, and application link.

reminder_delete

ChatGPT
Deletes a reminder from a tracked job. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) Output: Returns the updated tracked job with reminderAt cleared.

reminder_delete

ChatGPT
Deletes a reminder from a tracked job. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) Output: Returns the updated tracked job with reminderAt cleared.

reminder_list

ChatGPT
Lists tracked jobs that have reminders set, ordered by reminder time (soonest first). Input: - limit: Number of results to return (default 20, max 50) Output: Returns a list of tracked jobs with active reminders.

reminder_list

ChatGPT
Lists tracked jobs that have reminders set, ordered by reminder time (soonest first). Input: - limit: Number of results to return (default 20, max 50) Output: Returns a list of tracked jobs with active reminders.

reminder_set

ChatGPT
Sets a reminder for a tracked job. Sends a confirmation email with .ics calendar attachment. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) - remind_at: Reminder date/time in ISO 8601 format, e.g. "2025-03-15T10:00:00Z" (required, must be in the future) Output: Returns the updated tracked job with reminderAt field.

reminder_set

ChatGPT
Sets a reminder for a tracked job. Sends a confirmation email with .ics calendar attachment. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) - remind_at: Reminder date/time in ISO 8601 format, e.g. "2025-03-15T10:00:00Z" (required, must be in the future) Output: Returns the updated tracked job with reminderAt field.

tracker_add

ChatGPT
Tracks a job from jobs_search results in the user's job tracker, identified by its job_id. For a job found elsewhere on the open web (with a URL but no jobs_search job_id), tracker_add_external is the right tool instead. Fields: - job_id: the job ID from jobs_search results (required) - status: initial status (saved, applied, interviewing, offered, archived); defaults to "saved" - sub_status: sub-status within the main status - notes: notes about the job Returns the tracked job with its details, or an error if it is already tracked. A job that was previously removed from the tracker is restored with its earlier status and notes.

tracker_add

ChatGPT
Tracks a job from jobs_search results in the user's job tracker, identified by its job_id. For a job found elsewhere on the open web (with a URL but no jobs_search job_id), tracker_add_external is the right tool instead. Fields: - job_id: the job ID from jobs_search results (required) - status: initial status (saved, applied, interviewing, offered, archived); defaults to "saved" - sub_status: sub-status within the main status - notes: notes about the job Returns the tracked job with its details, or an error if it is already tracked. A job that was previously removed from the tracker is restored with its earlier status and notes.

tracker_add_external

ChatGPT
Saves a job posting found anywhere on the open web into the user's tracker. For jobs that came from jobs_search results, tracker_add (which takes a job_id) is the right tool instead. A job seen elsewhere in the conversation needs no prior jobs_search call — its URL and details from the conversation are sufficient input. url, company_name, title_name, location_name, and description identify the posting; the url is the posting's own page (a company homepage is not accepted) and the description is the posting's description as the source result provides it — a short summary from the result card is acceptable when no fuller text is available. The remaining structured fields describe the posting's salary, employment type, work-location type, education, and experience; each is optional and any that the posting states can be supplied. Skills, benefits, and bonuses are derived from the description and are not accepted as inputs. Fields: - url: the job posting's direct URL (required; not a company homepage) - company_name: company name - title_name: job title - location_name: location, e.g. "New York, NY" - description: the posting's description from the source result; a short summary is acceptable (required) - salary_min_value / salary_max_value: salary range bounds (numbers) - salary_value: a single salary figure when there is no range (number) - salary_type: one of year, month, week, day, hour - employment_type: array of full_time, part_time, contractor, temporary, intern, volunteer, per_diem, other - work_location_type: one of on_site, remote, hybrid - education_requirements: array of no_requirements, high_school, associate_degree, bachelor_degree, professional_certificate, postgraduate_degree - experience_months: minimum required experience in months (number) - status: initial tracking status (saved, applied, interviewing, offered, archived); defaults to "saved" - sub_status: sub-status within the main status - notes: notes about the job Returns the tracked job, or an error if it is already tracked.

tracker_add_external

ChatGPT
Saves a job posting found anywhere on the open web into the user's tracker. For jobs that came from jobs_search results, tracker_add (which takes a job_id) is the right tool instead. A job seen elsewhere in the conversation needs no prior jobs_search call — its URL and details from the conversation are sufficient input. url, company_name, title_name, location_name, and description identify the posting; the url is the posting's own page (a company homepage is not accepted) and the description is the posting's description as the source result provides it — a short summary from the result card is acceptable when no fuller text is available. The remaining structured fields describe the posting's salary, employment type, work-location type, education, and experience; each is optional and any that the posting states can be supplied. Skills, benefits, and bonuses are derived from the description and are not accepted as inputs. Fields: - url: the job posting's direct URL (required; not a company homepage) - company_name: company name - title_name: job title - location_name: location, e.g. "New York, NY" - description: the posting's description from the source result; a short summary is acceptable (required) - salary_min_value / salary_max_value: salary range bounds (numbers) - salary_value: a single salary figure when there is no range (number) - salary_type: one of year, month, week, day, hour - employment_type: array of full_time, part_time, contractor, temporary, intern, volunteer, per_diem, other - work_location_type: one of on_site, remote, hybrid - education_requirements: array of no_requirements, high_school, associate_degree, bachelor_degree, professional_certificate, postgraduate_degree - experience_months: minimum required experience in months (number) - status: initial tracking status (saved, applied, interviewing, offered, archived); defaults to "saved" - sub_status: sub-status within the main status - notes: notes about the job Returns the tracked job, or an error if it is already tracked.

tracker_list

ChatGPT
Lists the user's tracked jobs with optional filtering and pagination. Input: - status: Filter by status (saved, applied, interviewing, offered, archived) - limit: Number of results per page (default 20, max 50) - offset: Number of results to skip (default 0) Output: Returns a list of tracked jobs grouped by status with pagination info. Each response includes a system_instruction describing how to present the results for the current client.

tracker_list

ChatGPT
Lists the user's tracked jobs with optional filtering and pagination. Input: - status: Filter by status (saved, applied, interviewing, offered, archived) - limit: Number of results per page (default 20, max 50) - offset: Number of results to skip (default 0) Output: Returns a list of tracked jobs grouped by status with pagination info. Each response includes a system_instruction describing how to present the results for the current client.

tracker_remove

ChatGPT
Removes a job from the user's job tracker. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) Output: Confirms the job was removed from tracking.

tracker_remove

ChatGPT
Removes a job from the user's job tracker. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) Output: Confirms the job was removed from tracking.

tracker_update

ChatGPT
Updates details of a tracked job (notes, deadline, salary, tags). Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) - notes: Updated notes - deadline: Deadline date (ISO 8601 format) - salary_offered: Salary amount - salary_offered_type: Salary type: year, month, week, day, hour - tags: Comma-separated tags (e.g., "remote,startup,tech") - reminder_at: Reminder date/time in ISO 8601 format, e.g. "2025-03-15T10:00:00Z" (must be in the future, or empty to clear) Output: Returns the updated tracked job.

tracker_update

ChatGPT
Updates details of a tracked job (notes, deadline, salary, tags). Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) - notes: Updated notes - deadline: Deadline date (ISO 8601 format) - salary_offered: Salary amount - salary_offered_type: Salary type: year, month, week, day, hour - tags: Comma-separated tags (e.g., "remote,startup,tech") - reminder_at: Reminder date/time in ISO 8601 format, e.g. "2025-03-15T10:00:00Z" (must be in the future, or empty to clear) Output: Returns the updated tracked job.

tracker_update_status

ChatGPT
Updates the status of a tracked job. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) - status: New status: saved, applied, interviewing, offered, archived (required) - sub_status: Sub-status within the main status (optional) Output: Returns the updated tracked job.

tracker_update_status

ChatGPT
Updates the status of a tracked job. Input: - tracked_job_id: The tracked job ID — trackedJobs[].id from tracker_list output, distinct from trackable.id and job.id (required) - status: New status: saved, applied, interviewing, offered, archived (required) - sub_status: Sub-status within the main status (optional) Output: Returns the updated tracked job.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

App Stats

30

Tools

3

Prompts

ChatGPT

Platforms

Category

Job Search

Works with

ChatGPT

Data refreshed daily