Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.remoet-labs/remoet-mcp

REMOTE · API.REMOET.DEV · SCANNED SEP 20

Job platform for AI agents. Track tech jobs from companies that match your stack.

Available components

+43 this week 79 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security89
Transport & Reachability100
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7150 tokens (~297/item across 24 items; 24 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
  • Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.remoet-labs/remoet-mcp server?

io.github.remoet-labs/remoet-mcp is a hosted endpoint at https://api.remoet.dev/mcp/oauth, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.remoet.dev

# add to Claude Code
claude mcp add --transport http remoet-labs-remoet-mcp 'https://api.remoet.dev/mcp/oauth'
// .cursor/mcp.json
{
  "mcpServers": {
    "remoet-labs-remoet-mcp": {
      "url": "https://api.remoet.dev/mcp/oauth"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "remoet-labs-remoet-mcp": {
      "type": "http",
      "url": "https://api.remoet.dev/mcp/oauth"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.remoet-labs-remoet-mcp]
url = "https://api.remoet.dev/mcp/oauth"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "remoet-labs-remoet-mcp": {
      "type": "remote",
      "url": "https://api.remoet.dev/mcp/oauth",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add remoet-labs-remoet-mcp --url 'https://api.remoet.dev/mcp/oauth' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  remoet-labs-remoet-mcp:
    url: "https://api.remoet.dev/mcp/oauth"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "remoet-labs-remoet-mcp": {
      "Transport": "http",
      "Url": "https://api.remoet.dev/mcp/oauth"
    }
  }
}
# add to Vellum
assistant mcp add remoet-labs-remoet-mcp -t streamable-http -u 'https://api.remoet.dev/mcp/oauth'
// mcp.json
{
  "mcpServers": {
    "remoet-labs-remoet-mcp": {
      "type": "http",
      "url": "https://api.remoet.dev/mcp/oauth"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 0
    • New prompt “whats_open” functional
  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 0
    • Stability: unverified → 0.03 functional
  • 17 Sept 26 +42
    • Transport: unverified → pass security
    • Injection markers: unverified → pass security
    • First check of Judged manipulation: pass security
    • Authorization: Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. security
    • MCP protocol: unverified → pass functional
    • Schema quality: unverified → 100 functional
    • Tool coverage: unverified → 100 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 100 functional
    • First check of Tool coverage: 100 functional
  • 3 Sept 26 +13
    • Transport: fail → unverified security
    • Authorization: unverified → pass security
    • Tool safety: Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools. security
    • Tool coverage: Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools. functional
    • Schema quality: Schema blocked by authentication: the endpoint requires auth we don't have to read it. functional
    • Capabilities: Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. functional
  • 2 Sept 26 −13
    • Transport: unverified → fail security
    • Authorization: pass → unverified security
    • Tool safety: Tool safety not yet verified: we couldn't read the endpoint's tools. security
    • Tool coverage: Tool coverage not yet verified: we couldn't read the endpoint's tools. functional
    • Capabilities: Capabilities not yet verified: we couldn't read the endpoint's capabilities. functional
    • Schema quality: Schema not yet verified: we couldn't read the endpoint's schema. functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://api.remoet.dev/mcp/oauth

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.remoet.dev CN=WE1,O=Google Trust Services,C=US 24 Aug 2026 22 Nov 2026 ECDSA 256 ECDSA-SHA256 f73560c40bd4ad56139ec28cc5ae2a63
SANs: api.remoet.dev
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.remoet.dev. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
remoet.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://api.remoet.dev/.well-known/oauth-protected-resource/mcp/oauth"

Bearer resource_metadata="https://api.remoet.dev/.well-known/oauth-protected-resource/mcp/oauth"

Protected resource metadata

Document https://api.remoet.dev/.well-known/oauth-protected-resource/mcp/oauth
Retrieved Yes
Resource https://api.remoet.dev/mcp/oauth
Authorisation server https://api.remoet.dev/mcp/oauth

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.remoet.dev/mcp/oauth Verified 200
http (plaintext) http://api.remoet.dev/mcp/oauth HTTPS enforced 301 https://api.remoet.dev/mcp/oauth
MCP tools · 24 exposed · ~6,658 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
apply_to_job ~237

Apply to a job on behalf of the user, or get its application link. Two outcomes by job type: internal jobs (posted directly through Remoet's partner system) are applied to end-to-end and return the created application; scraped jobs (most of the platform) return applicationType "external" with the applicationUrl where the user applies on the company's site. Share that link with the user; Remoet cannot submit external applications for them. IMPORTANT: Before applying, confirm with the user that they want to apply. Review the job details (use search_jobs, get_starred_jobs, or get_listing) and cross-reference against the user's profile. Flag any gaps between the job requirements and the user's skills, e.g. "This role asks for Go experience which isn't on your profile. Still want to apply?" This helps the user make informed decisions and avoids wasting applications. Do NOT apply to jobs without the user's explicit consent. Internal jobs must be published and not expired, and the user can only apply once per job: duplicate applications are rejected.

NameTypeReqDescription
jobIdstringyesThe ID of the job to apply to

No output schema declared.

No examples provided.

create_linktree ~230

Create a link tree page: a shareable page with the user's links (social media, portfolio, GitHub, etc.). Each account can create up to 10. The slug becomes the public URL. Slug rules: 5-20 characters, lowercase letters, numbers, and hyphens only, cannot start/end with a hyphen. Must be unique. Use the user's name or handle as a base for the slug. Pull links from the user's profile (get_profile): githubUrl, linkedinUrl, twitterUrl, url, etc. TIP: Suggest the user adds their link tree URL to their CV or job applications. Remoet tracks views and link clicks, so they can see if a recruiter has opened it.

NameTypeReqDescription
descriptionyesShort description for the page
linksarrayyesArray of links to display on the page (max 50)
slugstringyesURL slug (5-20 chars, lowercase, hyphens allowed, must be unique)
titlestringyesPage title (e.g. "Carl Igelström: Links")

No output schema declared.

No examples provided.

delete_linktree ~47

Delete a link tree page. Use get_linktrees to find the ID first. Confirm with the user before deleting.

NameTypeReqDescription
idstringyesThe ID of the link tree to delete

No output schema declared.

No examples provided.

delete_profile_item ~102

Delete a profile item: a work experience entry, a project, or an education entry (set type accordingly). Use this to clean up duplicates, placeholder/test entries, or clearly wrong data. Get the id from get_profile. Always confirm with the user before deleting anything that could be real.

NameTypeReqDescription
idstringyesThe ID of the item to delete (get its id from get_profile)
typestringyesWhich kind of profile item to delete

No output schema declared.

No examples provided.

get_account ~177

The user's account status in one call: every budget the platform enforces (active stars vs cap, unstars used vs the 30-day unstar budget, MCP requests today vs daily cap, REST API requests today vs daily cap, each with a resetsAt), the remaining limits (link-tree cap), and any over-cap/grace state. Calling this is free and never counts against a cap, so check eagerly: when the user asks "how close am I to my limit?" or "when does X reset?", when a limit is hit (to show them where they stand), or before firing several write tools in a row so you can pace. Every limit is a plain number. Remoet is free. There is nothing to upgrade to and nothing to sell: if the user is at a limit, help them work within it.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_apps ~146

List approved apps built on the Remoet platform. These are community and official apps that extend Remoet's functionality. Each app has a repo URL for deployment and a demo URL to try it out. Use this to help users discover tools that complement their Remoet workflow, e.g. portfolio sites, CV generators, job trackers, etc. You can filter by category or tag.

NameTypeReqDescription
categorystringFilter by category
pagenumberPage number, starting from 1 (default: 1)
pageSizenumberResults per page, max 50 (default: 20)
tagstringFilter by tag

No output schema declared.

No examples provided.

get_digests ~204

HISTORICAL ONLY: the user's archived job digests, the email summaries Remoet used to send about new jobs from their starred companies. No new digest has been generated since 2026-07-06, when the feed roundup replaced that pipeline, so this returns nothing at all for an account created since then. What carries new roles now is get_feed (the composed dashboard stream, and what the roundup emails are built from); for searching, use get_starred_jobs or search_jobs. Reach for this tool only when the user asks about their old email summaries by name. Without an id: the 20 most recent as lightweight summaries (id, title, frequency, jobCount, createdAt). With an id: that digest's full markdown body (each job's title, application URL, salary, remote policy, experience level, tech stack).

NameTypeReqDescription
idstringFetch one digest in full by id. Omit to list recent digests.

No output schema declared.

No examples provided.

get_feed ~219

The user's dashboard feed as ONE composed stream, chronological newest first. Each entry has a kind: 'item' (per-company job items from their starred companies - the company, when it landed, role snapshots with job id/title/application URL/salary/remote policy/experience level/tech stack, and per-role flags isActive, savedJobId, matchesFilters, plus per-item isStarred: false means the user unstarred that company since), 'job_of_the_day' (one daily editorial pick from anywhere on the platform - a discovery candidate worth surfacing), 'blog' and 'broadcast' (platform content; usually skim). Poll this on the user's schedule to act as their notification layer: check what landed, save interesting roles via save_job, brief the user. Pass nextCursor back to page deeper; omit it for the newest page.

NameTypeReqDescription
cursorstringnextCursor from the previous page. Omit for the newest page.
pageSizeintegerItems per page (default 20, max 50).

No output schema declared.

No examples provided.

get_linktrees ~142

The user's link tree pages: shareable single-page URLs for a CV, email signature, or job application, with per-link view/click tracking so recruiter engagement is measurable. Without a slug: all of the user's link trees (each with its id and slug). With a slug: that page's content plus its engagement data (views, clicks per link), which answers "has anyone looked at my link tree?". If the user has none, suggest creating one via create_linktree pulling their profile links.

NameTypeReqDescription
slugstringFetch one link tree in full by its public slug (with engagement data). Omit to list all of the user's link trees.

No output schema declared.

No examples provided.

get_listing ~202

Works without a Remoet account. Get detailed information about a specific company listing by its slug. Use this to review a company before deciding whether to star it. Returns the company's full description, perks, job count, and URLs. NOTE: the tech stack is a small preview unless the company is starred. Starring unlocks the full stack (techStackCount shows the true total, e.g. a 3-tag preview of 147). Pass checkTechStack with the user's technologies to verify overlap against the FULL stack. Matched ones come back in matchedTechStack and lead the preview, same contract as search_listings. Pair with get_account to check budget before starring.

NameTypeReqDescription
checkTechStackarrayTechnologies to verify against the company's full stack (auto-normalized, max 50); matches are returned in matchedTechStack
slugstringyesThe URL slug of the listing (e.g. "digital-ocean", "stripe")

No output schema declared.

No examples provided.

get_profile ~335

The user's complete Remoet profile in one call: profile core (summary, links, location, avatar), workExperience, projects, and education (each section entry carries an id for update/delete) plus the current visibility setting. Always read this before changing anything. After reading, run a quick gap analysis and offer to fix what you find, ranked by impact (be encouraging, not critical): - SUMMARY (highest impact, the first thing companies read): flag if empty, under ~100 chars, or missing tech stack / years of experience / a differentiator. See update_profile for the pattern. - VISIBILITY: if NONE, suggest STARRED via update_profile so companies the user has starred can discover them. - PROJECTS (#1 gap for junior/mid devs): flag zero projects (ask about side projects, OSS, hackathons, scripts, blogs), or projects missing a URL, description, or technologies. - WORK HISTORY: flag missing descriptions, empty technologies arrays (they feed job matching), or descriptions without measurable impact ("Built React frontend" -> "...serving 50K users, 40% faster"). - BASICS: flag a missing avatar, a vague location (needs city + country for timezone/jurisdiction), or missing GitHub/LinkedIn. - EDUCATION: flag if empty (degrees, bootcamps, notable certifications). If the user shares a CV, resume, or website, populate the whole profile (update_profile, save_work_experience, save_project, save_education), then search companies by their stack, surface jobs with search_jobs, and suggest stars for the genuine fits.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_saved_jobs ~228

Get the user's saved jobs list. This is the user's job search memory: shows all jobs they've bookmarked across sessions, with notes and job details. Includes both AI-extracted jobs and internal partner jobs (see jobType field). IMPORTANT: Always call this before get_starred_jobs or search_jobs when helping with job search. It shows the user's existing pipeline so you can avoid re-recommending jobs they've already saved or dismissed. Paginated, newest saves first. Each saved job includes isActive and deactivatedAt fields. If isActive is false, the job is no longer appearing on the company's careers page. This usually means it was filled or expired, but could also be a temporary scraper issue (there is a grace period before deactivation). If job is null, the listing was deleted entirely. Suggest the user check the company's careers page directly if a saved job they care about gets deactivated.

NameTypeReqDescription
pagenumberPage number, starting from 1 (default: 1)
pageSizenumberResults per page, max 50 (default: 20)

No output schema declared.

No examples provided.

get_starred_jobs ~569

Get job postings from the user's starred companies. This is the user's own curated feed. If the user has no stars, this returns nothing. In that case, use search_jobs instead: it reads the public catalogue. Supports filtering by search query, location, tech stack, remote policy, experience level, and minimum salary. Results are paginated. Same-title postings from one company are grouped into a single row: postingCount and postingLocations show how many raw postings it represents and where (boards often post one role per location). Use save_job to bookmark good matches so the user doesn't lose them. SEARCH STRATEGY: For job recommendations, run multiple searches and merge results: first a broad search (no filters) to see what's available, then targeted searches by the user's technologies. This ensures comprehensive coverage. A single filtered query can miss good roles. The techStack filter uses OR logic: specifying ["React", "TypeScript", "Node.js"] returns jobs matching AT LEAST ONE of them (technologies are auto-normalized and matched across spelling variants), so filter by the technologies that genuinely matter and judge each job's fit from its own techStack field. Use searchQuery for role-based searches ("senior engineer", "frontend", "platform") and techStack for technology-based filtering. OVER-CAP WARNING: if the response includes a "starsOverCap" field, the user has more starred companies than the limit allows and the surplus is scheduled for PERMANENT deletion on the given date. Proactively tell the user (count + date) and let them choose which companies to unstar down to the limit. NEVER unstar companies on the user's behalf just to get under the limit unless they explicitly ask you to.

NameTypeReqDescription
experienceLevelarrayFilter by experience level: "junior", "mid", or "senior"
locationQuerystringFilter by location or remote restrictions
pagenumberPage number, starting from 1
pageSizenumberResults per page (max 50, default 20)
remotePolicyarrayFilter by remote policy: "remote", "hybrid", "onsite", or "remote-restricted"
salaryMinnumberMinimum salary filter
searchQuerystringSearch keywords for job title, summary, or tech stack
sortBystringSort field (default: createdAt)
sortOrderstringSort direction (default: desc)
techStackarrayFilter by technologies (e.g. ["React", "Node.js"])
techStackMatchstringHow techStack combines: "any" (default, at least one technology) or "all" (every technology required)

No output schema declared.

No examples provided.

save_education ~253

Add or update an education entry (upsert). Omit id to create (institution is required); pass an id (from get_profile) to update, changing only the fields you send. Ask about degrees, bootcamps, and notable certifications. Confirm approximate dates with the user rather than guessing; don't fabricate. Check get_profile first to avoid duplicates.

NameTypeReqDescription
descriptionDescription of studies, achievements, etc.
endDateEnd date (ISO 8601)
fieldOfStudyField of study (e.g. "Computer Science")
idstringPresent: update this education entry (only the fields you pass change). Omit: create a new one (institution is required to create).
institutionstringInstitution name (e.g. "MIT", "Lund University")
institutionUrlInstitution website URL
isCurrentbooleanWhether you are currently studying here (default false on create)
startDateStart date (ISO 8601)
studyLevelLevel of study: HIGH_SCHOOL, ASSOCIATE, BACHELOR, MASTER, DOCTORATE, BOOTCAMP, or OTHER

No output schema declared.

No examples provided.

save_job ~155

Save a job to the user's list for later. Supports both AI-extracted jobs (from search_jobs or get_starred_jobs) and internal partner jobs. This gives the agent memory across sessions. Saved jobs persist so the user doesn't lose track of interesting roles. Optionally attach a note (e.g. "Great fit for React skills", "Follow up next week"). Each job can only be saved once.

NameTypeReqDescription
jobIdstringyesThe ID of the job to save
jobTypestringType of job: "ai_job" (from search_jobs or get_starred_jobs, default) or "listing_job" (internal partner job)
noteOptional note about why this job is interesting

No output schema declared.

No examples provided.

save_project ~296

Add or update a portfolio project (upsert). Omit id to create (title and shortDescription are required); pass an id (from get_profile) to update, changing only the fields you send. Projects are the #1 differentiator for junior/mid developers. Help the user recognize work they might not think of: side projects, open-source contributions, hackathon entries, internal tools, time-saving scripts, blogs, personal apps. Check get_profile first to avoid duplicates; don't fabricate or embellish.

NameTypeReqDescription
demoUrlLive demo URL
descriptionFull project description
endDateEnd date (ISO 8601)
idstringPresent: update this project (only the fields you pass change). Omit: create a new one (title and shortDescription are required to create).
isCurrentbooleanWhether this is an ongoing project (default false on create)
isOpenSourcebooleanWhether this is open source (default false on create)
isRemotebooleanWhether this was remote work (default false on create)
repoUrlRepository URL
roleYour role in the project
shortDescriptionstringA one-line summary of the project
startDateStart date (ISO 8601)
technologiesarrayTechnologies used
titlestringProject title

No output schema declared.

No examples provided.

save_work_experience ~326

Add or update a work experience entry (upsert). Omit id to create a new entry (title and startDate are required); pass an id (from get_profile) to update an existing one, changing only the fields you send. Every description should cover WHAT was built, HOW (technologies), IMPACT (users served, performance gains, revenue, uptime), and SCOPE (team size, scale). Push for measurable outcomes ("Built React frontend" -> "...serving 50K users, 40% faster"). Always populate technologies; they feed job matching. Check get_profile first to avoid duplicates, and don't fabricate. Ask the user to confirm vague dates or fill real gaps.

NameTypeReqDescription
companyNameCompany name
companyUrlCompany website URL
descriptionJob description
endDateEnd date (ISO 8601), or null if current
idstringPresent: update this work-experience entry (only the fields you pass change). Omit: create a new one (title and startDate are required to create).
isCurrentbooleanWhether this is your current job (default false on create)
isRemotebooleanWhether this job is remote (default false on create)
startDatestringStart date (ISO 8601, e.g. "2024-01-15")
technologiesarrayTechnologies used (e.g. ["React", "Node.js"]). They feed job matching
titlestringJob title

No output schema declared.

No examples provided.

search_jobs ~1,252

Works without a Remoet account. Search Remoet's PUBLIC job catalogue: every role on the open board at remoet.dev/jobs, across all companies, not just the ones the user has starred. No star is needed and none is consumed. Use this to answer "what is out there" for any technology, title or company; use get_starred_jobs instead for the user's own curated feed. Each result carries the role's public Remoet URL, which is a real page anyone can open, plus applyUrl (the employer's own posting, where an application actually happens) and companySlug (the same slug get_listing takes, for company detail). Roles that Remoet is not permitted to publish never appear here. Duplicate postings of one role at a company are collapsed into a single result, so totalCount is the number of distinct roles, not raw postings. duplicateCount is how many postings collapsed into it; boards usually duplicate a role per location, but nothing guarantees that, so do NOT report it as a number of locations. firstSeenAt is when Remoet first saw the role, not when the employer posted it, and lastVerifiedAt is the last time Remoet confirmed it was still open. Filters are searchQuery (title, Remoet summary and tech stack), techStack (ANY of the given technologies, or EVERY one under techStackMatch: "all", which is how you express a must-have stack), companySlug, location, remotePolicy, experienceLevel and salaryMin. A salaryMin floor drops every role Remoet holds no numeric salary for, which is roughly 45% of the board, so use it when salary is a hard requirement and leave it off otherwise. location matches the canonical places Remoet stores per role rather than the free-text location string, so a country also finds roles that name only one of its cities; searchQuery does NOT read location, so filter by place with location and not by typing the place into searchQuery. When a search returns nothing, the hint says which filter emptied it and how many roles dropping that one filter would return, so act…

NameTypeReqDescription
companySlugstringRestrict to one company by its Remoet slug (the same slug get_listing takes, e.g. "stripe"). An unknown or delisted company returns an empty page, not an error.
experienceLevelarrayMatch roles at ANY of these experience levels: "junior", "mid" or "senior" (max 5).
locationarrayMatch roles in ANY of these places (max 5), e.g. ["Berlin"] or ["Germany", "Netherlands"]. Matched against the canonical place names Remoet stores per role, not the free-text location string, so a co…
pagenumberPage number, starting from 1 (default: 1). Without a Remoet account the first 10 pages are available; connect an account to page deeper.
pageSizenumberResults per page, max 20 without a Remoet account (default: 20)
remotePolicyarrayMatch roles with ANY of these remote policies: "remote", "hybrid", "onsite" or "remote-restricted" (max 5).
salaryMinnumberMinimum salary, against the role's normalized salaryEnriched.from. Roles Remoet holds no numeric salary for are EXCLUDED by this filter, so a floor narrows the board to the ~55% of roles that publish…
searchQuerystringFree text, matched against the job title, Remoet's own summary of the role and its tech stack. Comma-separate keywords to require ALL of them (e.g. "react, typescript").
sortBystringSort field: "newest" (default) or "salary". Under "salary", roles with no known salary sort LAST whichever direction is asked for, so they never head the list.
sortOrderstringSort direction (default: desc)
techStackarrayMatch roles carrying ANY of these technologies (e.g. ["React", "Go"]), or EVERY one of them under techStackMatch: "all". Matched case-insensitively against the exact stored technology, so use whole n…
techStackMatchstringHow techStack combines: "any" (default, at least one technology) or "all" (every technology required ON THE SAME ROLE; use for a must-have stack). Spelling variants stay grouped per technology, so "a…

No output schema declared.

No examples provided.

search_listings ~644

Search companies on Remoet, or list the user's starred companies (starred: true). Returns a summary per result. Use get_listing with a slug for full detail (description, perks, URLs). Job boards and aggregators are excluded; talent networks that post direct roles (e.g. Toptal) appear as companies. CRITICAL, star quality: only star companies whose tech stack OVERLAPS the user's skills (a JavaScript dev should not star a Go/Rust-only shop). Stars are the user's job-feed noise filter, so an irrelevant star pollutes their feed with jobs they can't use. Judge overlap by each result's matchedTechStack: the technologies from your techStack filter that the company actually uses, checked against its FULL stack (not the capped preview), so do NOT skip a company just because the visible preview omits the user's skills. An empty matchedTechStack means the result matched on text, not tags. techStackCount is the company's true tag total; the full stack unlocks on starring. techStack matches AT LEAST ONE filtered technology by default; set techStackMatch:"all" to require every one. Typical flow: read get_profile for the user's stack and seniority, search filtered by their real technologies (and experienceLevel when seniority matters), then star the genuine fits. Use starred: true to audit existing stars (pass the user's techStack to see matchedTechStack per starred company and flag zero-overlap stars). If the user's interests aren't clear, ask before searching. Example: search_listings({ searchQuery: "payments", techStack: ["TypeScript", "React"], experienceLevel: ["mid"] }).

NameTypeReqDescription
experienceLevelarrayOnly companies with at least one open role at any of these seniorities (e.g. ["junior"] for entry-level-friendly companies). Each result's experienceLevels field shows its per-seniority role counts;…
pagenumberPage number, starting from 1 (default: 1)
pageSizenumberResults per page, max 100 (default: 20)
searchQuerystringSearch keyword: matches company name, description, and about text
sortBystringSort results by: stars (most popular), jobCount (most active hiring), or name (alphabetical). Default: relevance when searching/filtering, stars when browsing
starredbooleanSet true to list the user's STARRED companies instead of searching the full catalog. In this mode searchQuery/experienceLevel/sort/pagination are ignored; pass techStack to get a matchedTechStack per…
techStackarrayFilter by technologies (e.g. ["React", "Node.js", "TypeScript"]). Each result's matchedTechStack shows which matched. Technologies are auto-normalized.
techStackMatchstringHow techStack combines: "any" (default, at least one technology) or "all" (every technology required; use for must-have stacks)

No output schema declared.

No examples provided.

star_listing ~218

Star/save a company listing. Starring subscribes you to their job postings. Starred company jobs appear in get_starred_jobs. Starring also unlocks the company's FULL tech stack (unstarred listings only show a small preview). Starring is FREE. It does not consume budget. However, there is a limit on how many active stars you can have at once. Call get_account to check remaining star slots. CRITICAL: Only star companies where the user's tech stack genuinely overlaps with the company's tech stack. A React/Node developer should NOT star a company that only uses Go or Java. Irrelevant stars pollute the job feed with noise. Every star must be a deliberate, high-quality match. A company returned by a techStack-filtered search_listings call confirms the technologies in its matchedTechStack field (the filter checks the full stack, including the part hidden from the preview), so judge overlap by matchedTechStack, not the visible preview.

NameTypeReqDescription
listingIdstringyesThe ID of the listing to star

No output schema declared.

No examples provided.

unsave_job ~55

Remove a job from the user's saved list. Use get_saved_jobs first to find the saved job ID. Confirm with the user before removing.

NameTypeReqDescription
savedJobIdstringyesThe ID of the saved job entry to remove

No output schema declared.

No examples provided.

unstar_listing ~135

Remove a star from a company listing. WARNING: Unstarring consumes from your unstar budget (per 30-day period), EXCEPT when the user is over their star cap (then trimming back to the limit is free). This prevents unlimited cycling of stars. Call get_account first to check your remaining unstar budget. Only unstar if the company is truly not relevant. Do NOT mass-unstar to get a user under their cap unless they explicitly ask. If they are over cap, surface the choice and let them decide which to keep.

NameTypeReqDescription
listingIdstringyesThe ID of the listing to unstar

No output schema declared.

No examples provided.

update_profile ~412

Update the user's Remoet profile core and/or their visibility. Only provide the fields you want to change. Omitted fields are left as-is; pass null to clear a field. Always read the current profile first with get_profile. If the source data (CV, website, etc.) is missing a field, ask the user rather than guessing. Never copy placeholder text like "lorem ipsum". VISIBILITY: pass visibility to control who can see the profile in company candidate lists: NONE (hidden), STARRED (only companies the user has starred, the recommended two-way match), or ALL (every company). Explain the trade-off before changing it. SUMMARY WRITING GUIDE: the summary is the most important field, the first thing companies read. Pattern: [Role] with [X years] experience in [core tech stack]. [One differentiator or achievement]. Example: "Senior Full-Stack Developer with 8 years of experience in React, Node.js, and AWS. Built and scaled a SaaS platform serving 200K users." Under 500 characters. Avoid generic fluff like "passionate developer". Be specific and quantifiable.

NameTypeReqDescription
avatarUrlYour avatar/photo URL
emailUpdate your email address
facebookUrlYour Facebook profile URL
githubUrlYour GitHub profile URL
linkedinUrlYour LinkedIn profile URL
locationYour location
nameYour full name
phoneYour phone number
slugYour public profile URL slug (must be unique)
summaryA brief professional summary or bio
twitterUrlYour Twitter/X profile URL
urlYour personal website URL
visibilitystringWho can see the profile in company candidate lists: NONE (hidden), STARRED (only companies the user has starred, recommended), ALL (every company). Explain the trade-off before changing.
youtubeUrlYour YouTube channel URL

No output schema declared.

No examples provided.

update_saved_job_note ~74

Update the note on a saved job. Use this to add context, track application status, or record follow-up reminders. Pass null to clear the note.

NameTypeReqDescription
noteyesUpdated note, or null to clear
savedJobIdstringyesThe ID of the saved job entry (not the job ID)

No output schema declared.

No examples provided.

Common questions

What is the io.github.remoet-labs/remoet-mcp server?

io.github.remoet-labs/remoet-mcp is listed in the public MCP registry as io.github.remoet-labs/remoet-mcp. Job platform for AI agents. Track tech jobs from companies that match your stack. This page covers its hosted endpoint (https://api.remoet.dev/mcp/oauth).

Is the io.github.remoet-labs/remoet-mcp server safe to use?

io.github.remoet-labs/remoet-mcp scores 79 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.remoet-labs/remoet-mcp server expose?

io.github.remoet-labs/remoet-mcp exposes 24 tools: get_profile, update_profile, save_work_experience, save_project, save_education, and 19 more. Their descriptions and schemas cost roughly 6,658 tokens of context every time the server is loaded.

Does the io.github.remoet-labs/remoet-mcp server require authentication?

Yes. io.github.remoet-labs/remoet-mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the io.github.remoet-labs/remoet-mcp server still maintained?

io.github.remoet-labs/remoet-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.