Comprehensive Model Context Protocol server for managing Home Assistant through AI assistants.
Refine Job Search is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Job search management: applications, interviews, offers, recruiter email, and company openings.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http refine-job-search-mcp https://mcp.getrefine.co/mcp
# 2 — ask your agent for something these tools do
# jobs.list, jobs.get, jobs.add and 52 more
Refine Job Search costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http refine-job-search-mcp https://mcp.getrefine.co/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
55 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List jobs in your journey
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page | string | no | Pagination cursor returned as meta.next_page |
| limit | integer | no | Maximum records to return |
Get details of a specific job
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
Add a new job to your journey
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Job title |
| company | string | yes | Company name |
| url | string | no | URL of the job posting |
| location | string | no | Job location |
| source | string | no | Where this job came from |
| compensation_text | string | no | Compensation text from the posting |
| description | string | no | Job description |
| qualifications | string | no | Job qualifications |
Update a job in your journey
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| title | string | no | Job title |
| company | string | no | Company name |
| location | string | no | Job location |
| url | string | no | URL of the job posting |
| source | string | no | Where this job came from |
| compensation_text | string | no | Compensation text from the posting |
| description | string | no | Job description |
| qualifications | string | no | Job qualifications |
| notes | string | no | Markdown notes about this application |
Permanently delete a job and its application from the board. Confirm with the user first; it cannot be undone. To hide a job without recording a rejection or closure, use jobs.archive instead.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| confirmed | boolean | yes | Must be true after the user confirms permanent deletion |
Queue a job posting to be re-scraped. The returned job may remain pending; use jobs.get later to inspect the refreshed state.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
Mark a job as applied
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
Hide a job from the active board without recording a rejection or closing the application
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
Restore an archived job to the active board
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
Log an interview for a job
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| name | string | yes | Interview name, e.g. phone screen, technical, behavioral, onsite |
| scheduled_at | string | no | ISO 8601 date/time with timezone |
| location | string | no | Location or meeting link |
| notes | string | no | Notes or debrief from the interview |
Update an existing interview
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| interview_id | string | yes | Interview id |
| name | string | no | Interview name, e.g. phone screen, technical, onsite |
| notes | string | no | Notes or debrief from the interview |
| scheduled_at | string | no | ISO 8601 date/time with timezone |
| completed_at | string | no | Completion date in YYYY-MM-DD format |
| cancelled_at | string | no | ISO 8601 cancellation time with timezone |
| cancelled_reason | string | no | Why the interview was cancelled |
| location | string | no | Location or meeting link |
| outcome | string | no | Interview outcome |
| rating | integer | no | Your rating of the interview, 1 to 5 |
| next_action | string | no | The next step after this interview |
| feedback | string | no | Feedback received or given |
| interviewers | string | no | Names or roles of the interviewers |
Permanently delete an interview from a job. Confirm with the user first; it cannot be undone.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| interview_id | string | yes | Interview id |
| confirmed | boolean | yes | Must be true after the user confirms permanent deletion |
Record a job offer with compensation details
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| base_salary_cents | integer | no | Base salary in cents (e.g. 15000000 for $150k) |
| currency | string | no | Supported currency code |
| rsu_text | string | no | RSU details as text |
| equity_text | string | no | Equity details as text |
| bonus_cents | integer | no | Bonus in cents |
| deadline_at | string | no | ISO 8601 offer deadline with timezone |
| next_action | string | no | The next step on this offer |
| notes | string | no | Notes about the offer |
| initial_salary_cents | integer | no | The originally offered base salary in cents |
| initial_equity_text | string | no | The originally offered equity as text |
| initial_rsu_text | string | no | The originally offered RSUs as text |
| initial_bonus_cents | integer | no | The originally offered bonus in cents |
| target_salary_cents | integer | no | The base salary you are negotiating toward, in cents |
| target_rsu_text | string | no | The RSUs you are negotiating toward, as text |
| target_equity_text | string | no | The equity you are negotiating toward, as text |
| target_bonus_cents | integer | no | The bonus you are negotiating toward, in cents |
Update the offer recorded for a job
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| base_salary_cents | integer | no | Base salary in cents (e.g. 15000000 for $150k) |
| currency | string | no | Supported currency code |
| rsu_text | string | no | RSU details as text |
| equity_text | string | no | Equity details as text |
| bonus_cents | integer | no | Bonus in cents |
| deadline_at | string | no | ISO 8601 offer deadline with timezone |
| next_action | string | no | The next step on this offer |
| notes | string | no | Notes about the offer |
| initial_salary_cents | integer | no | The originally offered base salary in cents |
| initial_equity_text | string | no | The originally offered equity as text |
| initial_rsu_text | string | no | The originally offered RSUs as text |
| initial_bonus_cents | integer | no | The originally offered bonus in cents |
| target_salary_cents | integer | no | The base salary you are negotiating toward, in cents |
| target_rsu_text | string | no | The RSUs you are negotiating toward, as text |
| target_equity_text | string | no | The equity you are negotiating toward, as text |
| target_bonus_cents | integer | no | The bonus you are negotiating toward, in cents |
Permanently delete the offer recorded for a job (the job stays). Use only to fix a mistake, and confirm with the user first; it cannot be undone.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| confirmed | boolean | yes | Must be true after the user confirms permanent deletion |
Accept the offer for a job. This is a major state change that closes out the search for this role; confirm with the user before calling. It does not email the employer.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| confirmed | boolean | yes | Must be true after the user confirms accepting the offer |
Decline the offer for a job, a major state change; confirm with the user first. It does not email the employer.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| confirmed | boolean | yes | Must be true after the user confirms declining the offer |
Log a negotiation event on an offer (counter-offer, update, etc.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| event_type | string | yes | Whether the event records an employer offer or your counter |
| event_date | string | no | Event date in YYYY-MM-DD format |
| salary_cents | integer | no | Salary in cents (e.g. 15000000 for $150k) |
| equity_text | string | no | Equity details (e.g. "0.05% over 4 years") |
| bonus_cents | integer | no | Signing bonus in cents |
| notes | string | no | Notes about this negotiation event |
Remove a negotiation event from an offer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Job id |
| event_id | integer | yes | Negotiation event id |
| confirmed | boolean | yes | Must be true after the user confirms deletion |
List companies you are tracking
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page | string | no | Pagination cursor returned as meta.next_page |
| limit | integer | no | Maximum records to return |
Start tracking a company for new job openings
| Parameter | Type | Required | Notes |
|---|---|---|---|
| company_name | string | yes | Name of the company |
| careers_url | string | yes | URL of the company careers page |
| departments | array | no | Departments to filter by |
| locations | array | no | Locations to filter by; use "remote" for remote roles |
| include_keywords | array | no | Keywords that must appear in the role |
| exclude_keywords | array | no | Keywords to exclude |
| seniority_levels | array | no | Seniority levels to include |
| sync_frequency | string | no | How often Refine should refresh this company |
Update filters on a tracked company
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_id | string | yes | Signal (tracked company) id |
| departments | array | no | Departments to filter by |
| locations | array | no | Locations to filter by; use "remote" for remote roles |
| include_keywords | array | no | Keywords that must appear in the role |
| exclude_keywords | array | no | Keywords to exclude |
| seniority_levels | array | no | Seniority levels to include |
| sync_frequency | string | no | How often Refine should refresh this company |
Stop tracking a company and delete its signal. Confirm with the user first; they stop getting new openings from it. To stop notifications temporarily instead, use signals.pause.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_id | string | yes | Signal (tracked company) id |
| confirmed | boolean | yes | Must be true after the user confirms they want to stop tracking the company |
Pause tracking for a company
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_id | string | yes | Signal (tracked company) id |
Resume tracking for a company
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_id | string | yes | Signal (tracked company) id |
Save a matched opening returned by signals.openings.list to your job journey
| Parameter | Type | Required | Notes |
|---|---|---|---|
| opening_id | string | yes | Matched opening id from signals.openings.list |
List jobs in your journey that came from a tracked company
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_id | string | yes | Signal (tracked company) id |
| page | string | no | Pagination cursor returned as meta.next_page |
| limit | integer | no | Maximum records to return |
List signal notifications (new openings at tracked companies)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page | string | no | Pagination cursor returned as meta.next_page |
| limit | integer | no | Maximum records to return |
| tab | string | no | Use new for unread notifications |
| tracker_id | string | no | Filter notifications to one signal tracker |
| q | string | no | Free-text search over opening titles |
| location | string | no | Exact location facet; use "remote" for remote roles |
| department | string | no | Exact department facet |
| matches | boolean | no | Only openings that score as a match for your persona |
Mark one opening notification returned by signals.openings.list as read
| Parameter | Type | Required | Notes |
|---|---|---|---|
| notification_id | string | yes | Notification id from signals.openings.list |
Mark every unread opening notification as read after the user confirms the bulk action
| Parameter | Type | Required | Notes |
|---|---|---|---|
| confirmed | boolean | yes | Must be true after the user confirms marking all openings read |
List email conversations Refine matched to your job search (applications, interviews, recruiter outreach)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tab | string | no | Which inbox tab to list; defaults to applications |
| status | string | no | pending needs a decision, auto was auto-applied, active has an open conversation, handled is done |
| unread | boolean | no | With status=active: only conversations with (or without) an unread reply |
| account | string | no | Filter to one connected Google account id |
| shelf | string | no | For the outreach tab: show the low-signal shelf instead of the main feed |
| page | string | no | Pagination cursor returned as meta.next_page |
| limit | integer | no | Maximum records to return |
Get one inbox item with its related job and application
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
Fetch the full email thread for an inbox item
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
Generate an AI reply draft for an inbox item. Returns HTML for review; it does not send anything.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
| kind | string | yes | decline politely passes; interested asks to continue the conversation |
Send an email reply through the user's Gmail. This emails a real person from the user's address. Only call after the user has seen the exact message body and explicitly approved sending it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
| body | string | yes | HTML body of the reply, exactly as approved by the user |
| draft_kind | string | no | Set when the body came from inbox.draft_reply |
| confirmed | boolean | yes | Must be true, and only after the user explicitly approved sending this exact message |
Apply an inbox item's suggested action, such as adding an application to the board or recording a rejection. Confirm the specific action with the user first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
| confirmed | boolean | yes | Must be true after the user confirms applying this suggestion |
Undo an auto-applied inbox action. This can delete a board record that the automatic action created, so confirm with the user first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
| confirmed | boolean | yes | Must be true after the user confirms undoing the automatic action |
Clear an inbox item's unread-reply flag
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
Unsubscribe the user from this sender's mailing list via one-click list-unsubscribe. This changes the user's real email subscriptions; confirm with them before calling. Use it for unwanted bulk senders, not for a person you can simply decline.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| item_id | string | yes | Inbox item id |
| confirmed | boolean | yes | Must be true, and only after the user explicitly approved unsubscribing from this sender |
Dismiss inbox items you are not acting on (also marks the mail read in Gmail)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | Inbox item ids to dismiss |
| confirmed | boolean | yes | Must be true after the user confirms dismissing these items and marking their mail read |
Keep auto-applied inbox items as-is and finalize the automatic action. Confirm the specific items with the user first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | Inbox item ids to acknowledge |
| confirmed | boolean | yes | Must be true after the user confirms keeping these automatic actions |
Queue decline replies to recruiter outreach. Depending on the user's preference this SENDS email from their address. Only call after the user explicitly approved declining these specific conversations.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | Inbox item ids to decline |
| preference | string | no | Send preference to apply; omit to use the saved preference |
| remember | boolean | no | Save the preference for future declines |
| confirmed | boolean | yes | Must be true, and only after the user explicitly approved declining these conversations |
Check Gmail for new mail now; returns per-account sync status
No parameter schema on file.
Per-account Gmail synchronization status, including current progress and last sync time
No parameter schema on file.
Get the user's persona: inferred job-search preferences and traits with an understanding score. Use it to tailor advice and searches.
No parameter schema on file.
List companies recommended from one company you track. Get signal_id from signals.list.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_id | string | yes | Tracked-company id from signals.list |
| page | string | no | Pagination cursor returned as meta.next_page |
| limit | integer | no | Maximum records to return |
Get one recommended company with sources and persona fit
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recommendation_id | string | yes | Recommendation id |
Start tracking a recommended company (converts it into a signal)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recommendation_id | string | yes | Recommendation id |
Dismiss a recommended company
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recommendation_id | string | yes | Recommendation id |
| reason | string | no | Why it was dismissed; sharpens future recommendations |
Dismiss a recommended company and block it from future recommendations
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recommendation_id | string | yes | Recommendation id |
Restore a dismissed or blocked recommendation
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recommendation_id | string | yes | Recommendation id |
Record why a recommendation was or was not a fit; this sharpens future recommendations and the persona
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recommendation_id | string | yes | Recommendation id |
| feedback_types | array | yes | One or more supported feedback tags |
| interaction_source | string | no | Where the feedback came from in the UI or agent flow |
Get upcoming interviews and action items
No parameter schema on file.
List connected Google accounts and their grant status. To connect a new account, use integrations.connect_google.
No parameter schema on file.
Get a link for the user to connect Gmail to Refine or approve a missing Gmail permission. Refine selects the permission needed for the connected account. The connection happens in the browser with no Refine sign-in required. Share the link only with the owner of this Refine account.
No parameter schema on file.
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Refine Job Search or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.5.2.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Refine Job Search can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.