MCP App Store
by KeenEthics

Overview

FoundRole is an AI job search and job application tracker. Search live openings from company career pages by job title, location, salary, and date posted, and narrow them to remote, hybrid, or on-site work. Save the roles you want to your tracker without leaving the conversation. Every job comes with data to judge it by: pay against market rates, a ghost-job risk grade for how likely the posting is still open, the employer's visa sponsorship record from public H-1B filings, and E-Verify status. Complete your FoundRole profile or add your resume, and each job also shows a match score and the skills you're missing. Found a role on LinkedIn or a company careers page? Paste it to get the same analysis, then compare two to four jobs side by side. The resume scanner shows how hiring software reads your resume: which sections, skills, and dates it recognized, and what it missed. Track applications through Saved, Applied, Interviewing, and Offered, keep notes, contacts, and offer details on each one, and set follow-up reminders that arrive with a calendar invite. Subscribe to daily, weekly, or monthly job alerts, get recommendations matched to your profile, and ask career questions answered from FoundRole's own guides on resumes, interviews, and salary. Requires a free FoundRole account; you sign in once when you connect. Filters such as a salary floor, visa sponsors only, and hiding likely ghost jobs work on every account: free accounts see the first matching jobs and how many more there are, while FoundRole Pro shows the whole list, every missing skill ranked, and year-by-year sponsorship history. Everything stays in sync with the FoundRole website.

Tools

job_alert_disable

ChatGPT
Unsubscribes the authenticated user from job alerts for a saved job search and returns only a success confirmation, without rendering an alerts widget. FoundRole widgets call it for in-place alert toggles; conversation-driven unsubscribes go through job_alert_unsubscribe, which renders the alerts UI. It takes the same job_search_id input, the status flip is reversible with job_alert_enable, and repeated calls stay successful.

job_alert_enable

ChatGPT
Subscribes the authenticated user to job alerts for a saved job search and returns only the job alert, without rendering an alerts widget. FoundRole widgets call it for the in-place "Get alerts for this search" bar and alert toggles; conversation-driven subscriptions go through job_alert_subscribe, which renders the alerts UI. It takes the same input: job_search_id (UUID or composite job id) plus optional frequency and delivery, and repeated calls update the existing alert.

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_data

ChatGPT
Lists the authenticated user's job alerts and returns only the data, without rendering an alerts widget. FoundRole widgets call it to populate and refresh an already rendered panel in place; conversation-driven listing goes through job_alert_list, which renders the alerts UI. It takes the same input.

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_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_analyze_external

ChatGPT
Analyzes one job found outside FoundRole using the authenticated user's FoundRole profile and the same signals used for FoundRole jobs: resume match, missing skills, H-1B sponsorship history, E-Verify, ghost-job risk, posted compensation, and market salary estimates. Use tracker_add_external only when the user asks to save without analysis. The input represents the direct posting URL and all job content already available in the conversation. The five text identity fields are required; every structured fact field is optional, with a fact the source does not state simply omitted (or null). The optional client_extraction object carries evidence-backed skills, technology, benefits, bonuses, seniority, industry, management, clearance, visa, and remote-scope labels when source excerpts for them exist. FoundRole validates the evidence, stores the client extraction separately, derives missing deterministic facts, and reports which values were provided, derived, accepted, rejected, or remain unknown. The output includes comparisonRef; retain it exactly for a later jobs_compare call. The analysis is a decision aid, not a guarantee about sponsorship, legitimacy, compensation, or hiring outcome.

jobs_compare

ChatGPT
Compares 2 to 4 jobs side by side using the same FoundRole analysis fields: resume match, missing skills, H-1B and E-Verify signals, ghost-job risk, posted pay, and market salary estimates. comparison_refs accepts exact FoundRole job IDs returned by jobs_search and exact external comparisonRef URLs returned by jobs_analyze_external. Analyze each outside job first; a bare URL that has not been analyzed cannot be compared because FoundRole does not have its posting facts. Preserve every reference exactly, keep the user's requested order, and do not send duplicates.

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_recommendations

ChatGPT
Returns the authenticated user's personalized job recommendations built from their resume, skills, target roles, and preferred location. Results are ranked by fit, may include related roles, and carry the same salary, match, H-1B, and job-trust insight payload used by job search. The search filters and sort parameters apply to this personalized feed too. One call returns one answer: there is no next page, and the response links to the same feed on the FoundRole website. An explicit query for a different or unrecognized profession uses the same general job search as jobs_search, preserving the query and filters instead of substituting the profile's target roles. A processing status means the personalized feed is still being prepared; a later call returns the completed feed.

jobs_recommendations_data

ChatGPT
Re-runs personalized recommendations against the caller's current FoundRole profile and returns the refreshed feed without rendering a recommendations widget. FoundRole widgets call it to refresh an already rendered panel in place; conversation-driven requests go through jobs_recommendations, which renders the recommendations UI.

jobs_search_data

ChatGPT
Re-runs a job search with the caller's current FoundRole profile and returns the refreshed results without rendering a search widget. FoundRole widgets call it to refresh an already rendered panel in place; conversation-driven searches go through jobs_search, which renders the search UI.

knowledge_topics

ChatGPT
Lists what FoundRole's published career-guidance blog covers: every category and the most-used tags, each with its published-article count and url, plus the total number of published articles. This is the factual source for questions about the blog's topics or overall coverage. It takes no parameters and reflects the live published corpus. It does not retrieve articles for a specific question; knowledge_search does that.

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_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_data

ChatGPT
Sets or replaces a tracked job's reminder and returns only the result, without rendering a tracker widget. FoundRole widgets call it when saving a deadline from an inline card edit; conversation-driven reminders go through reminder_set, which renders the tracker UI. It takes the same input.

resume_check

ChatGPT
Checks resume text for machine-readable sections, recognized skills, contact channels, a headline, and experience date ranges using FoundRole's deterministic parser. Pass resume_text to check plain text supplied in the conversation. If resume_text is omitted, the tool reads the previously extracted text of the primary resume in the authenticated user's FoundRole account. It returns a readability band (strong, good, partial) and the single biggest loss. Depending on the account it also returns additional findings and the parsed facts (headline, years of experience, sections, contact channels, recognized skill count). Each finding includes a suggested fix. A saved report link is returned only when the account already has access to that report. This is FoundRole's text-readability assessment, not a test against a named ATS, a hiring prediction, or a file-layout check. Pasted text does not preserve the original PDF or DOCX layout. The tool does not upload a file, create a saved resume or report, change the user's profile, submit an application, or fetch URLs found in the text. It may return a FoundRole website link; opening that link and uploading or editing a resume are separate user actions. Operational request records and diagnostics may retain tool inputs; this tool does not promise that submitted text is never stored.

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_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_data

ChatGPT
Lists the authenticated user's tracked jobs and returns only the data, without rendering a tracker widget. FoundRole widgets call it to load more rows and refresh an already rendered panel in place; conversation-driven listing goes through tracker_list, which renders the tracker UI. It takes the same input.

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_data

ChatGPT
Removes a tracked job and returns only the result, without rendering a tracker widget. FoundRole widgets call it for the in-place Remove control; conversation-driven removals go through tracker_remove, which renders the tracker UI. It takes the same input.

tracker_save

ChatGPT
Saves a job from jobs_search results into the user's tracker by its job_id and returns only the saved tracked job, without rendering a tracker widget. FoundRole widgets call it for in-place Save buttons; conversation-driven saves go through tracker_add, which renders the tracker UI. Repeated saves return the existing tracked job.

tracker_save_external

ChatGPT
Saves a job posting found outside FoundRole search into the user's tracker and returns only the saved tracked job, without rendering a tracker widget. FoundRole widgets call it for in-place Save buttons on analyzed external jobs; conversation-driven saves go through tracker_add_external, which renders the tracker UI. It takes the same input as tracker_add_external: url, company_name, title_name, location_name, and description are required, every structured fact field is optional, and repeated saves return the existing 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_data

ChatGPT
Updates a tracked job's notes, deadline, or reminder and returns only the updated record, without rendering a tracker widget. FoundRole widgets call it when saving inline card edits; conversation-driven updates go through tracker_update, which renders the tracker UI. It takes the same input.

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_data

ChatGPT
Changes a tracked job's status or sub-status and returns only the updated record, without rendering a tracker widget. FoundRole widgets call it for the in-place status dropdown; conversation-driven status changes go through tracker_update_status, which renders the tracker UI. It takes the same input.

job_alert_list

Claude

job_alert_subscribe

Claude

job_alert_unsubscribe

Claude

job_alert_unsubscribe_all

Claude

jobs_analyze_external

Claude

jobs_compare

Claude

jobs_details

Claude

jobs_recommendations

Claude

knowledge_topics

Claude

reminder_delete

Claude

reminder_list

Claude

reminder_set

Claude

resume_check

Claude

tracker_add

Claude

tracker_add_external

Claude

tracker_list

Claude

tracker_remove

Claude

tracker_update

Claude

tracker_update_status

Claude

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

App Stats

54

Tools

3

Prompts

ChatGPT, Claude

Platforms

Category

Job Search

Works with

ChatGPT
Claude

Data refreshed daily