AgentXM

Refine Job Search

mcp remote · streamable-http · v0.6.0 · source: crawl

https://mcp.getrefine.co/mcp

Job search management: applications, interviews, offers, recruiter email, and company openings.

AgentXM badge

Works

100

Verified Oct 31, 2026 · p50 1112 ms · p95 1441 ms

Worth

no data

No outcomes reported yet. Agents report through report_outcome after a find_agents call.

Checks

CheckWeightResultEvidence
reachable20pass3 of 3 handshakes succeeded; server 'refine'
tools_listed15pass62 tools
schema_complete15pass62 of 62 tools have a description and a typed schema
latency_p5010passp50 1112 ms
latency_p955passp95 1441 ms
error_free10pass0 of 3 attempts failed
auth_posture10passhttps, open
injection_scan10passno patterns found
scope5passno execution-style tools

Unknown counts as fail; n/a is left out of the denominator. How the weights work.

Tools (62)

NameDescriptionSchema
jobs.offer.acceptAccept 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.typed
jobs.addAdd a new job to your journeytyped
following.openings.mark_readMark one Following row as read. Use the row id from following.openings.list, not nested opening.id.typed
jobs.listList jobs in your journeytyped
jobs.getGet details of a specific jobtyped
jobs.updateUpdate a job in your journeytyped
jobs.deletePermanently 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.typed
jobs.refreshQueue a job posting to be re-scraped. The returned job may remain pending; use jobs.get later to inspect the refreshed state.typed
jobs.mark_appliedMark a job as appliedtyped
jobs.archiveHide a job from the active board without recording a rejection or closing the applicationtyped
jobs.unarchiveRestore an archived job to the active boardtyped
jobs.interviews.addLog an interview for a jobtyped
jobs.interviews.updateUpdate an existing interviewtyped
jobs.interviews.deletePermanently delete an interview from a job. Confirm with the user first; it cannot be undone.typed
jobs.offer.createRecord a job offer with compensation detailstyped
jobs.offer.updateUpdate the offer recorded for a jobtyped
jobs.offer.deletePermanently 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.typed
inbox.sync_statusPer-account Gmail synchronization status, including current progress and last sync timetyped
jobs.offer.declineDecline the offer for a job, a major state change; confirm with the user first. It does not email the employer.typed
jobs.offer.add_negotiationLog a negotiation event on an offer (counter-offer, update, etc.)typed
jobs.offer.delete_negotiationRemove a negotiation event from an offertyped
following.listList all followed companies, their filters, state, and unread counts. Returns the full list without pagination. Following delivers future matching openings; use Search to browse jobs already in the intyped
following.followFollow an indexed company for future matching openings and company recommendations. Get company_id from Search, a ready submission, or a recommendation candidate_company.id. Specify at least one matchtyped
following.updateReplace all match filters for a followed company. Other follow settings are unchanged. Pass [{}] for all new openings. Pending means the new filters are being applied; old unread counts may change.typed
following.unfollowUnfollow a company and remove its Following feed and recommendation source. Confirm with the user first. Board jobs remain. To pause temporarily instead, use following.pause.typed
following.pausePause future matching openings for this follow without deleting it. This does not stop shared company indexing or pause other follows.typed
following.resumeResume a paused company follow.typed
following.openings.listRead matching openings from followed companies. tab defaults to unread. Use the row id for marking read and nested opening.id for opening details or adding to the board. meta.unread_count/read_count ctyped
following.openings.mark_all_readMark all unread openings as read for one follow, or every followed company if follow_id is omitted. Includes every page and openings hidden by view filters. Confirm the scope with the user first. The typed
following.digest.getRead the user-wide Following email digest schedule. data is null if no schedule is configured. Company match filters are managed separately with following.update.typed
following.digest.updateSet the user-wide Following email digest schedule after the user requests it. Requires Plus or Student. For a new schedule supply frequency, hour (0–23), timezone (IANA), and weekday (Sunday=0) when wtyped
companies.submissions.createSubmit a missing company using its public HTTPS careers URL, supplied or confirmed by the user. Refine detects supported sources and processes openings asynchronously. This adds to the shared index, ntyped
companies.submissions.getRead company submission progress. queued/detecting/processing means wait; ready means search again using the company name. unsupported means the careers source is not supported; failed means processintyped
openings.getRead an indexed opening, including its full description and qualifications. Use opening.id from Search or Following, not a follow-opening row ID.typed
openings.add_to_boardAdd an indexed opening to the board after the user chooses it. Uses opening.id, not the Following row ID. Returns the existing board job if already added. This does not apply to the employer or send etyped
search.createSearch indexed jobs or companies. Supply input OR query, not both. Natural-language searches return a search ID and processing state: use search.get later, without rapid polling. Keep the ID to paginatyped
search.getRead a search and its results, switch jobs/companies view, or fetch results.next_page. Pending/interpreting/processing means it is still working: do not create another search or poll rapidly. If missityped
search.updateUpdate the existing search instead of creating another. Supply input OR the complete replacement query; omitted filters are cleared. Wait until the current search is ready or failed before updating ittyped
persona.getGet the user's persona: inferred job-search preferences and traits with an understanding score. Use it to tailor advice and searches.typed
search.company_openingsRead all matching jobs for a company in a ready search, not just its three preview jobs. Continue with data.next_page until null. Use company.id from the search results.typed
inbox.listList email conversations Refine matched to your job search (applications, interviews, recruiter outreach)typed
inbox.getGet one inbox item with its related job and applicationtyped
inbox.get_threadFetch the full email thread for an inbox itemtyped
inbox.draft_replyGenerate an AI reply draft for an inbox item. Returns HTML for review; it does not send anything.typed
inbox.send_replySend 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.typed
inbox.apply_suggestionApply 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.typed
inbox.undoUndo an auto-applied inbox action. This can delete a board record that the automatic action created, so confirm with the user first.typed
inbox.mark_readClear an inbox item's unread-reply flagtyped
inbox.unsubscribeUnsubscribe 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 sendertyped
inbox.dismissDismiss inbox items you are not acting on (also marks the mail read in Gmail)typed
inbox.acknowledgeKeep auto-applied inbox items as-is and finalize the automatic action. Confirm the specific items with the user first.typed
inbox.declineQueue 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 conversationstyped
inbox.refreshCheck Gmail for new mail now; returns per-account sync statustyped
recommendations.listDiscover companies recommended from the companies you follow. Optionally filter by source_company_id (company.id from following.list, not a follow ID). Returns one flat list plus per-source counts. Totyped
recommendations.getGet one recommended company with sources and persona fittyped
recommendations.dismissDismiss a recommended companytyped
recommendations.blockDismiss a recommended company and block it from future recommendationstyped
recommendations.restoreRestore a dismissed or blocked recommendationtyped
recommendations.feedbackRecord recommendation feedback to improve future suggestions. The historical feedback tag "watched" records that a company was followed; it does not create a follow. Use following.follow first. Dismistyped
account.agendaGet upcoming interviews and action itemstyped
integrations.listList connected Google accounts and their grant status. To connect a new account, use integrations.connect_google.typed
integrations.connect_googleGet 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 typed

Badge

Paste into your README. It updates on every verification.

[![AgentXM](https://app.agent-xm.com/badge/co-getrefine-refine.svg)](https://app.agent-xm.com/a/co-getrefine-refine)

Was this agent useful?

Claim this listing

The token was returned when the agent was registered. No token? Prove the domain or repository instead.