remoet
OfficialThis server connects your AI agent to Remoet, a job platform for developers, enabling profile management, company discovery, job search, applications, link trees, and subscription management — all through conversation.
Profile Management
View and update your profile (name, summary, location, avatar, social links, visibility)
Add, update, or delete work experience, projects, and education entries
Control profile visibility (hidden, visible to starred companies only, or visible to all)
Company Discovery
Search companies by name, description, or tech stack
View detailed company info (tech stack, perks, job count, URLs)
Star/unstar companies to curate your job feed; check your star/unstar budget
Job Search & Saving
Browse a personalized job feed from starred companies, filtered by tech stack, location, remote policy, experience level, or salary
Save/unsave jobs with optional notes
View weekly job digests (email summaries of new jobs from starred companies)
Applications
Apply to internal job postings directly through the platform
View and filter applications by status; track the full event timeline
Send/receive messages with hiring teams, add private notes
Accept/reject offers or withdraw applications
Link Trees
Create, view, and delete shareable link tree pages (for CVs, email signatures, etc.)
Track engagement metrics (views and clicks per link)
Platform & Billing
Browse community and official apps built on the Remoet platform
View your subscription plan, usage limits, and daily usage
Get an upgrade link to a paid tier (Pro or Max) via Stripe Checkout
Enables Hermes Agent to utilize Remoet's job platform for searching companies, managing applications, and handling profile tasks via MCP tools.
Remoet MCP server
Connect your AI agent to Remoet, the job platform built for agents. Search the public job catalogue, find tech companies by the stack they actually build on, star the ones you'd work for so their new jobs land in your feed, and manage your developer profile, all through conversation.
This repo ships a local stdio MCP server (Node + TypeScript) plus the metadata MCP clients and directory registries need. The local server advertises Remoet's full tool catalog (snapshotted from the live server) and forwards calls to the hosted MCP at https://api.remoet.dev/mcp with your Bearer key. The hosted server is closed source and remains the source of truth for execution.
Most users connect to the hosted server directly (see Quick install below). The local package is for clients that prefer stdio or build/scan systems that require a runnable local server.
Homepage: https://remoet.dev
Docs: https://docs.remoet.dev
MCP endpoint:
https://api.remoet.dev/mcpGet a free API key: https://remoet.dev/onboarding
What it does
The job catalogue is public. search_jobs reads every role on the open board at remoet.dev/jobs, across all companies, before you star anything.
A star is about delivery, not access. Remoet derives each company's tech stack from the roles it is hiring for right now, not from self-reported adoption lists that go stale, so an agent can match you to companies by the technologies they actually build on today. Star the ones that fit and their new jobs land in your feed, with the company's full stack unlocked. Remoet also keeps your profile, saved jobs, applications and weekly digests on file, all over MCP.
Remoet is free for job seekers. There are no paid plans and no credit card. One set of limits applies to every account, and get_account reports where you stand against them.
See tools.md for the full tool catalog.
Related MCP server: job-pilot
Works with
Claude Code, Claude Desktop, Claude Web, Cursor, VS Code, Windsurf, Codex, and any MCP-compatible client. Also installable as an agentskills.io skill on OpenClaw (via ClawHub) and Hermes Agent. See Quick install.
Auth
Two transports, same tools:
https://api.remoet.dev/mcpexpects an API key as a Bearer header (Authorization: Bearer <key>). Best for CLI and always-on agents.https://api.remoet.dev/mcp/oauthruns OAuth 2.1 with PKCE and dynamic client registration. Best for browser clients like Claude Web and Desktop custom connectors.
Generate a key at remoet.dev/onboarding. The same key works for MCP and the REST API.
Quick install
Claude Code
claude mcp add --transport http --scope user remoet https://api.remoet.dev/mcp --header "Authorization: Bearer YOUR_KEY"Then restart Claude Code (exit and relaunch) so the new server's tools load in a fresh session.
Cursor, VS Code, Windsurf
Add to your client's MCP config (the JSON in .mcp.json works as a template):
{
"mcpServers": {
"remoet": {
"type": "http",
"url": "https://api.remoet.dev/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}Claude Web / Desktop (custom connector)
Add a custom connector pointing at https://api.remoet.dev/mcp/oauth and complete the browser sign-in. No API key to paste.
Remoet also ships as an agentskills.io skill, with one-command installs on Hermes and OpenClaw.
Hermes
hermes skills tap add remoet-labs/agent-skills
hermes skills install remoet-labs/agent-skills/skills/remoetOpenClaw
openclaw skills install remoetFirst prompt to try
I work in Rails, React, and Postgres. Which companies on Remoet hire for that stack?
Run locally (Node + Docker)
If you prefer a local stdio MCP server (or a build/scan system needs one), the same package is runnable directly.
With Node:
npm install
npm run build
REMOET_API_KEY="<your-key>" node dist/index.jsThe server speaks MCP over stdio. Set REMOET_API_KEY to a free-tier key from remoet.dev/onboarding. Optionally override the upstream endpoint with REMOET_MCP_URL (defaults to https://api.remoet.dev/mcp).
With Docker:
docker build -t remoet-mcp .
docker run --rm -i -e REMOET_API_KEY="<your-key>" remoet-mcpThe container's entrypoint runs the stdio server. Pipe MCP JSON-RPC frames into the container; tool calls are forwarded to the hosted server with your Bearer key.
The published tool catalog lives in data/tools.json, generated from the live tools/list. Refresh it whenever the hosted server's tool surface changes:
REMOET_API_KEY="<your-key>" npm run snapshot:toolsThe script rewrites the snapshot and reports any tool that tools.md has fallen out of step with.
License
MIT. The wrapper is open; the Remoet backend it points at is a hosted service.
Available Tools
48 toolsaccept_offerAccept OfferAIdempotentInspect
Accept a job offer. Only works when the application status is "offer_extended". Confirm with the user before accepting.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application with the offer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds critical behavioral details (status dependency, user confirmation) beyond annotations. No contradiction with idempotentHint=true or destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded purpose, no wasted words. Condition and instruction provided concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preconditions and user confirmation. Lacks mention of post-acceptance effect or return value, but adequate for a simple action with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already fully describes applicationId. Description adds no new parameter details; baseline 3 for 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Accept a job offer' with specific verb and resource. Distinguishes from siblings like reject_offer and withdraw_application. Precondition 'offer_extended' adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies the required status 'offer_extended' and instructs to confirm with user. Does not name alternative tools but sibling context implies them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_application_noteAdd Application NoteAInspect
Add a private note to a job application. Notes are only visible to the user (not the company). Use this to help the user track thoughts, prep notes, follow-up reminders, or any context about the application. Max 1000 characters.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application | |
| note | Yes | The note content (max 1000 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read, non-destructive write operation. The description adds that notes are private and only visible to the user, which is valuable context not in annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then usage examples. No unnecessary words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description covers purpose, privacy, character limit, and typical use cases. Could mention error scenarios, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters fully. The description reinforces the privacy aspect for the note parameter, adding meaning beyond the schema's maxLength constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add', the resource 'private note', and the context 'to a job application'. It distinguishes from sibling tools like 'update_saved_job_note' by specifying privacy and application context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases: 'track thoughts, prep notes, follow-up reminders, or any context'. Does not explicitly exclude alternatives, but the context is clear enough for an AI agent to infer when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_to_jobApply to JobAInspect
Apply to an internal job posting on behalf of the user. The job must be published and not expired. The user can only apply once per job — duplicate applications are rejected.
IMPORTANT: Before applying, confirm with the user that they want to apply. Review the job details (use 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.
Only works for internal jobs (applicationType: "internal"). For external jobs, direct the user to the applicationUrl instead.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The ID of the job to apply to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only set readOnlyHint=false, destructiveHint=false. Description adds critical behavioral context: it performs a write operation, rejects duplicates, requires user confirmation, and only works for internal jobs. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with the core action and constraints. The important note is longer but necessary for safe usage. It is well-structured, though slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema), the description covers preconditions, verification steps, and limitations. It lacks explicit mention of success/failure return behavior, but overall it is complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for the single parameter (jobId). The description does not add significant meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies to internal job postings on behalf of the user. It explicitly mentions constraints (published, not expired, no duplicates) and distinguishes from sibling tools by specifying internal vs external jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (internal jobs with user consent), when-not-to-use (duplicate, expired, external), and alternatives (direct user to applicationUrl for external jobs). The important note instructs to verify with user and cross-reference skills.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_educationAdd EducationAInspect
Add an education entry to the user's profile. Before creating, always check existing education with get_education to avoid duplicates. If the source data is incomplete (e.g. missing dates, field of study, or institution URL), ask the user to fill in the gaps. Dates must be accurate — ask the user to confirm approximate dates if the source is vague. Do not fabricate or embellish information.
| Name | Required | Description | Default |
|---|---|---|---|
| institution | Yes | Institution name (e.g. "MIT", "Lund University") | |
| institutionUrl | No | Institution website URL | |
| studyLevel | No | Level of study: HIGH_SCHOOL, ASSOCIATE, BACHELOR, MASTER, DOCTORATE, BOOTCAMP, or OTHER | |
| fieldOfStudy | No | Field of study (e.g. "Computer Science") | |
| startDate | No | Start date (ISO 8601) | |
| endDate | No | End date (ISO 8601) | |
| isCurrent | Yes | Whether you are currently studying here | |
| description | No | Description of studies, achievements, etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral constraints beyond annotations: 'Dates must be accurate' and 'Do not fabricate or embellish information.' Annotations only show readOnlyHint=false and destructiveHint=false, so the description provides useful context about data integrity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: action, pre-check, and data quality. No redundant information; front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 8 parameters and no output schema, the description covers pre-conditions (duplicate check, data completeness) and ethical constraints (no fabrication). It lacks details about success response, but that is acceptable given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 8 parameters. The description adds general context about handling incomplete data but does not significantly enhance individual parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add an education entry to the user's profile' with a specific verb and resource. It distinguishes from sibling tools like get_education, update_education, and delete_education.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to check existing education with get_education to avoid duplicates and to ask the user to fill in missing information if the source is incomplete. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_linktreeCreate Link TreeAInspect
Create a link tree page — a shareable page with the user's links (social media, portfolio, GitHub, etc.). Link tree limits: Free 1, Pro 10, Max unlimited. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | URL slug (5-20 chars, lowercase, hyphens allowed, must be unique) | |
| title | Yes | Page title (e.g. "Carl Igelström — Links") | |
| description | Yes | Short description for the page | |
| links | Yes | Array of links to display on the page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given minimal annotations, the description adds value by detailing slug rules, plan limits, and suggesting data sources (profile links). It does not mention potential errors or side effects, but covers key behavioral constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose first, then constraints, then a tip. It is appropriately sized, though slightly long; every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers creation details well but omits what the tool returns (response object) or any side effects. For a creation tool without an output schema, this is a gap, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning: slug uniqueness and format, suggesting profile links for the links array, and an example for title. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Create) and resource (link tree page), and distinguishes it from siblings like delete_linktree, get_linktree, and get_linktrees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context (limits, pulling links from profile) but does not explicitly state when to use this tool versus alternatives or when not to use it. It implies usage but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectAdd ProjectAInspect
Add a project to the user's portfolio. Before creating, always check existing projects with get_projects to avoid duplicates. If the source data is incomplete (e.g. missing description, technologies, or dates), ask the user to fill in the gaps. Dates must be accurate — ask the user to confirm if unclear. Write clear, professional descriptions. Do not fabricate or embellish information.
PROJECT COACHING: Many users underestimate what counts as a project. Help them recognize work they might not think of: side projects, open-source contributions, hackathon entries, internal tools, scripts that saved time, blogs/tutorials, personal apps, browser extensions, Discord bots. Even small projects demonstrate initiative and practical skills. For junior/mid developers, projects are the #1 differentiator — two candidates with similar job histories are separated by their projects.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Project title | |
| shortDescription | Yes | A one-line summary of the project | |
| description | No | Full project description | |
| role | No | Your role in the project | |
| technologies | Yes | Technologies used | |
| isCurrent | Yes | Whether this is an ongoing project | |
| isRemote | Yes | Whether this was remote work | |
| isOpenSource | Yes | Whether this is open source | |
| startDate | No | Start date (ISO 8601) | |
| endDate | No | End date (ISO 8601) | |
| repoUrl | No | Repository URL | |
| demoUrl | No | Live demo URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (no readOnly, destructive, etc.), so the description carries the burden. It discloses behavioral traits: creation action, need for accuracy, coaching on project recognition, and prohibition of fabrication. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with purpose and key guidelines. The coaching section is verbose but valuable. Every sentence earns its place, though slightly longer than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, 6 required, and no output schema, the description covers the full workflow: duplicate checking, data completeness, date accuracy, professional writing, and coaching. It equips the agent to handle incomplete user input and edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds contextual instructions but no new parameter details beyond the schema. The coaching and guidelines are about usage, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a project to the user's portfolio' and differentiates from siblings like get_projects and update_project. The verb and resource are specific, and the coaching section further clarifies the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: check existing projects first, ask user for missing info, confirm dates, write professional descriptions, and includes coaching on what counts as a project. This helps the agent decide when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_experienceAdd Work ExperienceAInspect
Add a work experience entry to the user's profile. Before creating, always check existing entries with get_work_experience to avoid duplicates. If the source data is incomplete (e.g. missing dates, company name, or description), ask the user to fill in the gaps rather than guessing. Dates must be accurate — ask the user to confirm approximate dates if the source only says something like "2019" or "Summer 2020". Write clear, professional descriptions. Do not fabricate or embellish information.
DESCRIPTION QUALITY: Every job description should answer WHAT (built/designed/led what), HOW (which technologies, methodologies), IMPACT (users served, performance gains, revenue, uptime), and SCOPE (team size, user base). If the user gives a vague description like "Worked on the backend", ask follow-up questions: "What did you build specifically? What tech did you use? How many users or requests did it handle? What was the team size?" Push for measurable outcomes — numbers make descriptions 10x stronger.
TECHNOLOGIES: Always populate the technologies array — it feeds into job matching. If the description mentions technologies not in the array, ask to add them.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Job title | |
| companyName | Yes | Company name | |
| companyUrl | Yes | Company website URL | |
| startDate | Yes | Start date (ISO 8601, e.g. "2024-01-15") | |
| endDate | No | End date (ISO 8601), or null if current | |
| isCurrent | Yes | Whether this is your current job | |
| isRemote | Yes | Whether this job is remote | |
| technologies | Yes | Technologies used (e.g. ["React", "Node.js"]) | |
| description | No | Job description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) indicate a non-destructive write. The description adds behavioral context: no fabrication, require accurate dates, and the importance of avoiding duplicates (consistent with idempotentHint=false). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, and structured into sections (description quality, technologies). Some redundancy (e.g., asking user to fill gaps mentioned twice) could be trimmed, but every sentence is informative. Slightly long but appropriate for complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preprocessing (duplicate check), data quality (ask for missing info, date format), and content guidelines. Lacks output/response details (no output schema), but given the tool's nature, the description is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, baseline 3. Description adds significant meaning: for 'description' provides quality and measurement guidelines; for 'technologies' instructs to always populate; for dates instructs to confirm approximations. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds a work experience entry to the user's profile ('Add a work experience entry'). It distinguishes from sibling tools like get_work_experience by instructing to check for duplicates before creating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides detailed when-to-use and how-to-use guidance: check existing entries with get_work_experience to avoid duplicates, ask for missing or vague data, confirm dates, write professional descriptions with measurable outcomes, and always populate technologies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_educationDelete EducationADestructiveIdempotentInspect
Remove an education entry from the user's profile. Use this to clean up duplicates, placeholder/test entries, or obviously incorrect data. Always confirm with the user before deleting entries that look like they could be real data.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the education entry to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true; description adds important behavioral context about user confirmation, though the core destructive nature is known.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences, front-loaded with the verb and resource, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully adequate for a one-parameter delete operation; covers usage, safety, and behavioral aspects given the annotations and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'id' with schema coverage 100%; description adds no extra meaning beyond the schema's own description, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('education entry'), distinguishing it from sibling tools like update_education and create_education.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (cleanup duplicates, placeholders, incorrect data) and when to exercise caution (confirm with user for real data).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_linktreeDelete Link TreeADestructiveIdempotentInspect
Delete a link tree page. Use get_linktrees to find the ID first. Confirm with the user before deleting.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the link tree to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false; description adds behavioral context about needing user confirmation and prerequisite lookup, going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, each serving a distinct purpose: stating the action and providing prerequisites/cautions. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive tool with no output schema, the description provides sufficient context: what to do, how to prepare, and user confirmation needed. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with description for the 'id' parameter. Description does not add further meaning beyond what schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('delete') and resource ('link tree page'), and distinguishes from siblings by instructing to use get_linktrees to find the ID first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides context: use get_linktrees to find the ID and confirm with the user before deleting, which is essential for a destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectDelete ProjectADestructiveIdempotentInspect
Remove a project from the user's portfolio. Use this to clean up duplicates, placeholder/test entries, or obviously incorrect data. Always confirm with the user before deleting entries that look like they could be real data.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the project to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive (true) and idempotent (true). Description adds user-confirmation advice but lacks details on reversibility or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences, no redundancy, essential information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with no output schema, description adequately covers purpose and usage, though could briefly mention return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter 'id' well-defined. Description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'remove' and resource 'project from portfolio', and distinguishes from siblings like create_project and update_project by specifying cleanup use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (clean duplicates, test entries) and advises user confirmation, but does not directly name alternative tools for similar actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_experienceDelete Work ExperienceADestructiveIdempotentInspect
Remove a work experience entry from the user's profile. Use this to clean up duplicates, placeholder/test entries, or obviously incorrect data. Always confirm with the user before deleting entries that look like they could be real data.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the work experience entry to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true, and the description adds the important behavioral detail of requiring user confirmation for suspected real data, which goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that immediately state the purpose and usage, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, complete annotations), the description covers all essential information: purpose, usage guidelines, and a behavioral note, making it fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the single 'id' parameter. The description does not add extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Remove' and resource 'work experience entry', and specifies use cases like cleaning up duplicates. It effectively distinguishes from sibling tools such as delete_education or delete_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (clean up duplicates, placeholders, test entries) and when to confirm with user (for potentially real data), giving clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_applicationView ApplicationARead-onlyInspect
Get details of a specific job application by ID. Returns the application status, job info, company info, and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds limited behavioral context. It mentions return fields but doesn't disclose additional traits like auth requirements or pagination. Since annotations cover core safety behavior, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with purpose and followed by return details. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is complete. It explains what the tool does, what parameters are needed, and what fields are returned. Annotations cover safety. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter (applicationId) described as 'The ID of the application'. The description does not add extra meaning beyond this, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get details' and the resource 'specific job application by ID'. It lists the specific fields returned (status, job info, company info, timestamps), which helps distinguish it from sibling tools like get_applications and other getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies usage for retrieving a single application, but lacks context about when not to use it or when to prefer siblings. It is adequate for a simple getter but could be more explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_application_eventsView Application TimelineARead-onlyInspect
Get the timeline of events for a job application. Shows status changes, notes, messages sent, interview scheduling, and other milestones. Events are sorted chronologically (oldest first). Public events are visible to both parties; private events (like notes) are only visible to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the annotations: events are sorted chronologically (oldest first), and visibility differs between public and private events. This gives the agent important context about output order and data privacy. A slightly higher score would require mention of pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous words. It front-loads the purpose and efficiently adds behavioral details. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low complexity, the description adequately covers what events are included, sorting order, and visibility. It lacks mention of error conditions or required permissions, but these are partially addressed by the read-only annotation. Overall, it is sufficiently complete for this type of tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter (applicationId) described as 'The ID of the application'. The description does not add new information about the parameter beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves the timeline of events for a job application, listing specific event types (status changes, notes, messages, interview scheduling). This distinguishes it from sibling tools like get_application (which gets the application object) or get_application_messages (messages only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly guide when to use this tool versus alternatives. Implicitly, it is for viewing a chronological event history, but no comparison with siblings or exclusion conditions are provided. The information about public vs. private visibility is useful but does not substitute for clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_application_messagesView Application MessagesARead-onlyInspect
Get the message thread for a job application. Shows all messages between the user and the company, sorted newest first. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application | |
| page | No | Page number, starting from 1 (default: 1) | |
| limit | No | Results per page, max 100 (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, aligning with the read-only nature. The description adds valuable behavioral details: messages are sorted newest first and paginated. However, it does not disclose any further constraints like rate limits or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct (one sentence) yet informative, covering the core functionality, sorting, and pagination. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and read-only nature with annotations, the description covers purpose and basic behavior (sort order, pagination). However, no output schema exists, and the description does not specify the structure of each message, which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage). The description adds no additional meaning beyond the schema, such as clarifying the format or default behavior for page/limit. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the message thread for a job application, specifying verb ('Get'), resource ('message thread'), and context ('between user and company'). It distinguishes from siblings like get_application (application details) and send_application_message (write operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing messages but does not provide explicit guidance on when to use this tool versus alternatives like get_application_events or how it relates to other application-related tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_applicationsView ApplicationsARead-onlyInspect
Get the user's job applications. Returns a paginated list with status, job title, company name, and timestamps. Use this to help the user track their application pipeline. Filter by status to focus on active applications, pending offers, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by application status | |
| page | No | Page number, starting from 1 (default: 1) | |
| limit | No | Results per page, max 100 (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds context about paginated results and return fields, which is useful beyond annotations. No mention of rate limits or auth, but given annotations, the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and return content, second gives usage guidance. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a list endpoint and no output schema, the description covers the return fields and pagination. Sibling tools are diverse, and the description is sufficient for an agent to differentiate and use correctly. Could mention pagination explicitly but schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description reinforces filtering by status but does not add new meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool gets the user's job applications and returns a paginated list with specific fields (status, job title, company, timestamps). It distinguishes from siblings like get_application (singular) and get_application_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage guidance: 'Use this to help the user track their application pipeline. Filter by status...' This helps the agent decide when to call it. Does not explicitly mention when not to use, but the context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_appsBrowse AppsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category | |
| tag | No | Filter by tag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that apps have repo and demo URLs and that filtering is possible, providing some behavioral context beyond annotations, but doesn't detail output format or potential limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a short paragraph of three sentences, front-loaded with the primary action. It is efficient with minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with optional filters and no output schema, the description adequately covers the tool's purpose, parameters, and typical use cases. It does not discuss pagination or ordering, but such details are not critical for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for its two parameters. The description mentions filtering by category or tag, aligning with the schema but adding no new meaning. Baseline 3 per rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (approved apps on the Remoet platform), distinguishing it from sibling tools which focus on jobs, profiles, and other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this to help users discover tools that complement their Remoet workflow' and gives examples. It does not explicitly exclude cases, but the sibling list shows no overlap, so the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_digestView DigestARead-onlyInspect
Get a specific digest by ID. Returns the full digest content — a markdown-formatted summary of jobs found from the user's starred companies during that period. Each job entry includes the title, application URL, salary, remote policy, experience level, and tech stack. Note: Free tier digests are 1 week behind the current scrape — the jobs shown may no longer be open. For real-time jobs, use get_starred_jobs instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the digest to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false. Description adds critical context about stale data on free tier, going beyond annotations to inform the agent of potential staleness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding unique value: main action, content description, usage caveat. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully details the return format (markdown, job entries with fields). Also addresses free tier staleness. Completeness is excellent for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of the single parameter with its description. Description adds no additional parameter details but compensates by describing the return content, which is not part of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get a specific digest by ID' and describes the full content including format and fields. Distinguishes from sibling get_digests and get_starred_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (when you need a specific digest by ID) and when not to (for real-time jobs, use get_starred_jobs). Also mentions free tier limitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_digestsView DigestsARead-onlyInspect
Get the user's job digests — weekly email summaries of new jobs from their starred companies. Returns the 20 most recent digests. For weekly email summaries only. Always use get_starred_jobs for real-time job searching — digests are delayed (free tier is 1 week behind the current scrape) and less interactive. Only use this tool if the user specifically asks about their digests or email summaries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false. The description adds beyond this by stating digests are 'delayed' and 'less interactive' compared to real-time data, giving valuable behavioral traits like staleness and purpose constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, then adds usage guidelines and behavioral notes. It is concise at about three sentences, though the phrase 'For weekly email summaries only' is slightly redundant with the first sentence. Still very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and complete annotations, the description covers all necessary information: purpose, return limit, usage context, and behavioral caveats. It is fully sufficient for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% and no parameter explanation is needed. Baseline is 4, and the description adds no parameter info, which is perfectly acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'user's job digests — weekly email summaries of new jobs from their starred companies' and specifies it returns the '20 most recent digests.' This verb+resource+scope combination distinguishes it well from siblings like get_starred_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use this tool: 'Only use this tool if the user specifically asks about their digests or email summaries.' It contrasts with get_starred_jobs for real-time searching and notes the delay and lesser interactivity of digests, providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_educationView EducationARead-onlyInspect
Get the user's education history (each entry returns its ID for update/delete). Education matters most when a user has limited work history — for senior candidates it's a tiebreaker. Flag: empty education (ask about degrees, bootcamps, notable certifications, MOOCs), entries without dates, entries without field of study. Offer to fix each via create_education.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate a read-only, non-destructive operation. The description adds value by revealing that entries include IDs for later mutation and outlines common data quality issues (missing dates, field of study) without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat verbose but each sentence contributes meaningful guidance. The primary purpose is stated upfront, and the additional instructions are well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the absence of an output schema, the description comprehensively explains what the tool returns, how to use the data, and what to look for. It fully equips the agent to handle the education history appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the input schema is fully covered. The description provides context about the returned data structure and actionable use of IDs, which adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the user's education history and specifies that each entry includes its ID for subsequent update/delete operations. It distinguishes itself from sibling tools like create_education and update_education.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises when education history is most relevant (limited work history) and provides explicit instructions for flagging missing or incomplete entries. It suggests using create_education to fix issues, though it does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linksView LinksARead-onlyInspect
Get the user's social and professional links (GitHub, LinkedIn, Twitter, website, etc.). These are table-stakes for most companies — recruiters click them before reading anything else. After fetching, flag missing critical links: GitHub is mandatory for engineering roles, LinkedIn is expected by most companies, a personal site/portfolio is a strong differentiator. If any are missing, offer to add them via update_profile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true. The description adds context about post-fetch actions (flagging missing links) which is beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences: purpose, importance, post-fetch recommendation, and offer to act. No wasted words, each sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description fully covers what is returned, why it matters, and what to do next. Complete and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. The description adds value by enumerating the types of links returned and their importance, exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets 'social and professional links' and lists examples (GitHub, LinkedIn, Twitter, website). It distinguishes from siblings like get_linktree by naming specific link types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes why links matter ('table-stakes for most companies') and what to do after fetching: flag missing critical links and offer to add via update_profile. Provides clear context and next steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linktreeView Link TreeARead-onlyInspect
Get a specific link tree page by its public slug. Returns the page content plus engagement data (views, clicks per link) — useful if the user asks "has anyone looked at my link tree?". Use get_linktrees first if you need the slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The URL slug of the link tree |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint annotations, description adds that it returns engagement data (views, clicks). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, key information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, description fully covers purpose, usage, and return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers slug with description; description adds that it's a public slug and implies retrieving from get_linktrees.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets a specific link tree page by public slug, distinguishes from get_linktrees which retrieves slugs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use get_linktrees first if slug is needed, and gives a practical use case ('has anyone looked at my link tree?').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linktreesView Link TreesARead-onlyInspect
Get all the user's link tree pages (each returns its ID and slug). Link trees are shareable single-page URLs the user can put on a CV, email signature, or job application — Remoet tracks views and clicks per link, so recruiter engagement is measurable. If the user has none, suggest creating one via create_linktree pulling their social links from the profile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds domain context (tracks views/clicks, use in CVs) but does not disclose additional behavioral traits such as pagination or authentication requirements. Beyond annotations, it provides useful but not critical behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, clear and front-loaded. The first sentence delivers the core action, the second provides domain context, and the third offers conditional guidance. It is not overly verbose, though the third sentence could be seen as slightly tangential for a simple read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a simple read-all tool with no parameters and annotations covering safety, the description is adequately complete. It specifies return format (ID and slug), suggests fallback behavior, and explains domain relevance. It does not cover error conditions or ordering, but these are minor omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is no parameter information to describe. Baseline for 0 parameters is 4, as per guidelines. The description adds no param semantics but does mention the return format (ID and slug), which is marginally beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all the user's link tree pages (each returns its ID and slug)'. It uses a specific verb ('Get') and resource ('link tree pages'), and the plural form distinguishes it from sibling tool 'get_linktree'. The additional context about what link trees are used for reinforces purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to view all link trees) and suggests an alternative action ('suggest creating one via create_linktree') if the result is empty. It does not explicitly exclude use cases for a single link tree, but the plural naming and contextual hints are sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingView Company DetailsARead-onlyInspect
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, tech stack, perks, job count, and URLs. Pair with get_star_count to check budget before starring.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The URL slug of the listing (e.g. "digital-ocean", "stripe") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. Description adds context about return fields (full description, tech stack, etc.), which is useful beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, usage guidance, and return contents. No wasted words, front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and annotation coverage, the description fully covers what the tool does, when to use it, and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'slug' is well-described in the schema. The description does not add extra semantic meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('detailed information about a specific company listing'), distinguishing it from siblings like 'get_star_count' or 'get_applications'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly suggests using the tool to review a company before starring and advises pairing with 'get_star_count' for budget checks. Could be more explicit about when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileView ProfileARead-onlyInspect
Get the user's full Remoet profile. IMPORTANT: Always call this first before making any changes.
PROFILE GAP ANALYSIS: After fetching, run a full evaluation and proactively surface findings ranked by impact. Offer to fix each issue on the spot. Be encouraging, not critical — "Your profile has a solid foundation, here are a few things that could make it stand out."
CHECK 1 — SUMMARY & DISCOVERABILITY (highest impact):
Summary empty or weak? Under 100 chars, no tech stack mentioned, no years of experience, or no differentiator = needs rewriting. See update_profile for guidance. This is the first thing companies read.
Call get_visibility. If NONE, suggest STARRED — creates a two-way match where starred companies can discover the user.
Check get_starred_listings. Zero stars = empty job feed. Help them find and star companies matching their tech stack.
Cross-reference starred companies' tech stacks against the user's skills. Flag mismatches that add noise.
CHECK 2 — PROJECTS (what makes them special?):
Zero projects = #1 gap for junior/mid developers. Projects differentiate candidates with similar job histories. Ask about side projects, open source, personal apps, hackathons, scripts, blogs.
Projects without URLs or descriptions are barely better than no projects.
CHECK 3 — WORK HISTORY (can they do this?):
Zero jobs = critical gap. Walk user through adding experience or importing from CV.
Jobs without descriptions = missed opportunity. Each role should explain what was built, what tech was used, and what impact it had.
Descriptions without measurable impact? Push for specifics: users served, performance gains, revenue impact, team size. "Built React frontend" → "Built React frontend serving 50K monthly users, reducing load time by 40%."
Technologies array empty on jobs with tech in the description? Ask to add them — they feed into job matching.
Remote experience not highlighted? If they've worked remotely, ensure isRemote: true — remote hiring managers look for proof.
CHECK 4 — BASICS (will they even look?):
Avatar missing? Profiles without photos get less engagement.
Location vague? "Europe" is too broad. Companies need timezone and jurisdiction. "Lund, Sweden" is specific.
GitHub/LinkedIn missing? Table stakes for developers.
CHECK 5 — EDUCATION:
Empty education? Ask about degrees, bootcamps, certifications, notable courses.
If the user shares a CV, resume, or website, populate their entire profile (update_profile, create_work_experience, create_project, create_education), then search and star matching companies, and finally surface relevant jobs — all in one go.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no contradiction. It clarifies that the tool returns the profile and implies no side effects, but does not elaborate on return format or pagination. The additional gap analysis instructions are about agent behavior, not tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively long with large blocks of procedural instructions for the agent (checks 1-5) that are not essential for understanding the tool itself. The first sentence is concise, but the rest is verbose and could be condensed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and annotations covering read-only, the basics are covered. However, the description includes extensive workflow instructions that go beyond the tool's function, making it feel over-specified but not necessarily more complete for selecting/invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema description coverage is 100%. Per guidelines, baseline is 4. The description adds no parameter meaning because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the user's full Remoet profile' with a specific verb and resource. It distinguishes from sibling tools like get_projects or get_education by specifying the exact object (profile). The instruction to call this first adds context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Always call this first before making any changes,' providing clear when-to-use guidance. However, it does not mention when not to use or compare to alternatives like other 'get' tools, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectsView ProjectsARead-onlyInspect
Get the user's projects and portfolio items (each entry returns its ID for update/delete). For junior/mid developers, projects are the #1 differentiator — two candidates with similar job histories are separated by what they built. Flag: zero projects (massive gap, ask about side work, OSS, hackathons, scripts, blogs), projects without URLs, projects without technology arrays. Offer to fix each via update_project or create_project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description adds value by noting each returned entry includes an ID for subsequent update/delete operations. No additional behavioral details like pagination are needed for a parameterless list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then provides actionable coaching. Some might consider it verbose, but each sentence serves a clear function (purpose, importance, flags, next steps).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully covers what the tool returns, how to interpret results, and how to act on them via sibling tools. It is complete for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description cannot add parameter meanings. Schema coverage is 100% by default. The description appropriately focuses on output usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'the user's projects and portfolio items' with IDs for later use. The verb 'Get' and resource 'projects/portfolio items' are specific and distinct from siblings like get_education or get_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive context on when to use this tool (evaluating a candidate's projects) and flags issues to look for (zero projects, missing URLs, missing tech stacks). It also directs to use update_project or create_project for fixes. However, it does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_saved_jobsView Saved JobsARead-onlyInspect
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 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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting from 1 (default: 1) | |
| pageSize | No | Results per page, max 50 (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral details beyond annotations: pagination sorted newest first, explanation of isActive/deactivatedAt fields, and handling of null jobs. Annotations already indicate read-only, so description enriches further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with key purpose, then additional context. Every sentence adds value, though the description could be slightly tighter. Good length given richness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Very complete for a read-only list tool: includes pagination details, field explanations, edge cases (null job, deactivation), and actionable advice. No output schema needed due to thorough description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds no extra parameter meaning beyond what schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states 'Get the user's saved jobs list' and clarifies it's the user's job search memory, distinguishing it from siblings like get_starred_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly instructs to call this before get_starred_jobs and explains why (avoid re-recommending saved jobs). Lacks explicit when-not, but given the context, the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_star_countView Star BudgetARead-onlyInspect
Get your star and unstar budget status. Starring is free but capped at maxActiveStars. Unstarring consumes from a per-period unstar budget to prevent unlimited cycling. Returns: currentStars (active stars), maxActiveStars (cap for your plan), starSlotsRemaining (how many more you can star), unstarBudgetUsed (unstars this period), unstarBudgetLimit (max unstars per period, or "unlimited"), unstarBudgetRemaining (unstars left, or "unlimited"), resetsAt (when the unstar budget resets), and plan (your subscription tier). Help the user make every star count — choose companies carefully.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true, destructiveHint=false), the description adds behavioral details: starring is capped, unstarring uses a per-period budget provided to prevent cycling. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and efficiently lists return fields. The final motivational sentence is slightly extraneous but not detrimental.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description thoroughly enumerates all return fields with descriptions, covering the budget context completely for a simple get tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist in the input schema, so the description need not explain them. The baseline of 4 applies as schema coverage is 100% by default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get your star and unstar budget status', specifying a read operation to retrieve budget info. It distinctly differs from sibling tools like star_listing (action) and get_starred_jobs (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the budget system (capped starring, limited unstarring) but does not explicitly state when to use this tool versus alternatives like star_listing or unstar_listing. Usage is implied but not formally guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_starred_jobsView Job FeedARead-onlyInspect
Get job postings from your starred companies. This is the user's main job feed — if the user has no stars, this returns nothing. Quality depends on starring the RIGHT companies (ones whose tech stack matches the user's skills). If results are empty or poor, check get_starred_listings and suggest better stars. Starring is free so they can star more companies to improve their feed. Supports filtering by search query, location, tech stack, remote policy, experience level, and minimum salary. Results are paginated. 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 top 1-2 technologies. This ensures comprehensive coverage — a single filtered query can miss good roles. The techStack filter uses AND logic — specifying ["React", "TypeScript", "Node.js"] only returns jobs matching ALL three, so start with 1-2 core technologies, not the user's entire stack. If results are sparse, drop filters one at a time. Use searchQuery for role-based searches ("senior engineer", "frontend", "platform") and techStack for technology-based filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| searchQuery | No | Search keywords for job title, summary, or tech stack | |
| locationQuery | No | Filter by location or remote restrictions | |
| techStack | No | Filter by technologies (e.g. ["React", "Node.js"]) | |
| remotePolicy | No | Filter by remote policy: "remote", "hybrid", "onsite", or "remote-restricted" | |
| experienceLevel | No | Filter by experience level: "junior", "mid", or "senior" | |
| salaryMin | No | Minimum salary filter | |
| sortBy | No | Sort field (default: createdAt) | |
| sortOrder | No | Sort direction (default: desc) | |
| page | No | Page number, starting from 1 | |
| pageSize | No | Results per page (max 50, default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Clearly explains it returns nothing without stars, results depend on star quality, supports filtering and pagination. No contradiction with annotations (readOnlyHint=true).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with key info front-loaded, but somewhat verbose. However, every sentence adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely covers return behavior, filtering nuances, and provides actionable guidance for poor results. No output schema needed due to thorough description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds significant value beyond schema descriptions, e.g., explaining techStack uses AND logic, recommending starting with 1-2 technologies, and search strategy for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states the tool retrieves job postings from starred companies, calling it the 'main job feed'. It distinguishes from siblings like get_starred_listings by advising to check that tool if results are empty.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides extensive guidance: when to use (main feed), what to do if empty/poor (check stars, suggest better stars), and detailed search strategy including recommended filter usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_starred_listingsView Starred CompaniesARead-onlyInspect
Get the list of companies the user has already starred. Returns a summary per company — use get_listing with the slug for full details. Use this to audit their current stars — if any starred company's tech stack doesn't overlap with the user's skills, suggest unstarring it (but warn that unstarring consumes unstar budget).
STAR QUALITY AUDIT: Cross-reference the user's profile technologies against each starred company's tech stack. Flag companies with zero overlap — e.g. a React/Node developer starring a company that only uses Go and Rust. Suggest companies they should star but haven't — search for companies matching their tech stack and compare against current stars. A curated star list is the foundation of a useful job feed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds context about return format (summary per company) and the audit procedure, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage, but the additional audit block is somewhat verbose. However, it remains useful and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no parameters, the description fully explains what the tool returns and how to act on it, making it complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description cannot add parameter info. Schema coverage is 100%, meeting the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the user's starred companies, using specific verbs ('Get the list') and distinguishes it from siblings like 'get_starred_jobs' and 'get_listing'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this to audit their current stars' and provides detailed guidance on actions (suggest unstarring, search for replacements), including a caveat about unstar budget.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subscriptionView SubscriptionARead-onlyInspect
Get the user's current subscription plan, all plan limits, and today's usage. Call this when a limit is hit to show the user where they stand and what upgrading would unlock. Returns plan tier, star caps, unstar budget, daily request limits, job data delay status, link tree cap, and today's MCP/API request counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safe. Description adds value by listing exact returned fields (plan tier, star caps, etc.), which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences: first states purpose, second provides usage guidance, third lists return fields. Efficient and front-loaded without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description fully enumerates return values. Context signals show no parameters, so description is complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, schema coverage 100%. Description doesn't need to add parameter info; baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves the user's subscription plan, all limits, and today's usage. Verb 'Get' with specific resource 'subscription plan, limits, usage' distinguishes from siblings like get_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this when a limit is hit to show the user where they stand and what upgrading would unlock.' Provides clear context but does not mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upgrade_linkGet Upgrade LinkAInspect
Get a Stripe Checkout URL the user can open to upgrade their subscription. This tool does NOT charge the user — it only returns a link; payment happens in the browser when the user completes Stripe Checkout. Present the "checkoutUrl" as a clickable link. Supports upgrades only: free→pro, free→max, pro→max. For downgrades or cancellation, direct the user to https://www.remoet.dev/settings.
Confirm with the user before calling this. Note: for a user who already has a paid subscription, changing tier (pro→max) may apply IMMEDIATELY with prorated billing against their existing payment method (response "message" instead of "checkoutUrl") — i.e. it can charge without a checkout step, so get explicit confirmation first. free→paid always returns a checkoutUrl (no charge until the user completes Stripe Checkout).
This tool is environment-aware. The response includes an "environment" field (local | stage | production). Only "production" charges real money — local and stage run Stripe in test mode (the response includes a sandboxNote field with test-card instructions). Always tell the user which environment they're entering before they click through.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | The plan to upgrade to | |
| confirm | No | Set true ONLY after the user has explicitly agreed. Required for an immediate pro→max upgrade (charges the existing card right away). Not needed for free→paid, which returns a checkout link and charges nothing until the user completes Stripe Checkout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses that it does not charge the user directly, explains pro→max may apply immediately with prorated billing, and details environment awareness (local/stage/production) including sandbox mode. No contradiction with annotations (readOnlyHint=false is consistent with creation of a link).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is longer but each sentence is purposeful. Front-loaded with main purpose and key facts. Could be slightly more concise, but no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description explains return fields (checkoutUrl, message, environment, sandboxNote) and how to present them. Covers all necessary information for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds nuance: explains plan enum in context of upgrade paths, and clarifies confirm parameter's conditional necessity (immediate charge vs. checkout URL). Adds meaningful value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns a Stripe Checkout URL for upgrading subscriptions, specifies upgrade paths (free→pro, free→max, pro→max), and distinguishes from downgrades/cancellation. Verb+resource is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (upgrades only) and when-not-to (downgrades/cancellation, directing to another URL). Also instructs to confirm with user and warns about immediate charging for pro→max. No sibling overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageView UsageARead-onlyInspect
Get the user's current usage against every budget the platform enforces: active star count vs star cap, unstars used this month vs monthly unstar budget, MCP requests made today vs daily MCP cap, REST API requests made today vs daily REST cap. Each budget includes a "resetsAt" ISO timestamp so you can tell the user exactly when the counter clears.
Calling this tool is free: it does not count against the daily MCP cap or the API key's request count, so check eagerly. Call it when the user asks "how close am I to my limit?" or "when does X reset?", or before firing 3+ write tools in a row (star_listing, update_profile, apply_to_job, etc.) so you can pace yourself. A limit value of "unlimited" means no cap for that budget.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint: true. Description reinforces safety by stating it doesn't count against daily MCP cap or API request count, adding value beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured, front-loads purpose, then details each budget and resetsAt. Every sentence adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description fully covers the tool's behavior, return format, and use cases. Complete for a simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params), so baseline is 4. No additional parameter info needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets current usage against enforced budgets, listing specific metrics (star count, unstars, MCP requests, REST requests). It distinguishes itself from sibling tools as the only one reporting usage caps and resets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to call: when user asks about limits/resets, or before performing multiple write operations. Also notes it's free and doesn't count against caps, guiding eager use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_visibilityView VisibilityARead-onlyInspect
Get the user's current profile visibility setting. Three states: NONE (hidden — this is the default for new accounts), STARRED (visible only to starred companies — the recommended setting), ALL (visible to every company on Remoet). If the user is at NONE and has starred companies, flag it: they're cutting off a key benefit of the platform (being discovered by companies they already like). Offer to switch to STARRED via update_visibility.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context beyond annotations, detailing the three visibility states and their implications. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise with three sentences. It front-loads the purpose and adds value with state explanations and guidance. Could be slightly tighter but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the return values (the three states) and provides interpretation guidance. It is contextually complete for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the input schema, so the baseline is 4. The description does not need to add parameter information, but it provides context on the output values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the user's current profile visibility setting,' specifying a verb and resource. It explains the three possible states (NONE, STARRED, ALL), distinguishing it from the sibling tool update_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use the tool and what to do with the result: if NONE with starred companies, flag it and offer to switch to STARRED via update_visibility. It also recommends STARRED as the preferred setting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_experienceView Work ExperienceARead-onlyInspect
Get the user's work experience / job history (each entry returns its ID for update/delete). Use this to ground anything you say about the user's background. After fetching: flag duplicates, placeholder data, missing descriptions, missing technologies arrays, or missing measurable impact. Each weakness is something you can fix on the next turn — surface them ranked by impact and offer to fix.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavior beyond annotations by stating that each entry returns its ID for update/delete and recommending post-fetch analysis. Annotations already mark it as read-only, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function, and each sentence adds value without redundancy. It efficiently conveys purpose and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description covers purpose, usage, and post-fetch actions. It could benefit from mentioning typical return fields (e.g., title, dates) but is adequate for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the input schema provides no information. The description compensates by explaining the tool's output (IDs) and how to use the data. This meets the baseline for no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the user's work experience/job history and each entry returns an ID for update/delete. This distinguishes it from sibling tools like create_work_experience or delete_work_experience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using this tool to ground statements about the user's background and suggests post-fetch actions like flagging duplicates. However, it does not explicitly state when not to use it or compare to alternatives like get_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_offerReject OfferADestructiveIdempotentInspect
Reject a job offer. Only works when the application status is "offer_extended". Confirm with the user before rejecting.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application with the offer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description confirms destructive behavior (consistent with destructiveHint=true) and adds user confirmation requirement and status precondition, enriching beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences efficiently deliver purpose, precondition, and user guidance with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive action, the description covers all needed aspects: purpose, condition, user confirmation, and differentiation from accept_offer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter applicationId is fully described in schema with regex and description; the tool description adds no additional semantic context beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Reject a job offer') and distinguishes from sibling 'accept_offer'. The condition on application status adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite ('Only works when the application status is offer_extended') and instructs user confirmation, guiding appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_jobSave JobAInspect
Save a job to the user's list for later. Supports both AI-extracted jobs (from 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.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The ID of the job to save | |
| jobType | No | Type of job: "ai_job" (from get_starred_jobs, default) or "listing_job" (internal partner job) | |
| note | No | Optional note about why this job is interesting |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: jobs persist across sessions and each job can only be saved once. Annotations do not cover these constraints, so the description adds significant value. No contradictions with annotations (readOnlyHint=false is consistent with a write operation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with no extraneous words. It front-loads the main purpose, uses natural language, and every sentence adds value (purpose, sources, persistence, note, uniqueness constraint).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's role among siblings, explains the unique constraint, and references relevant sources. It lacks explicit error information or success confirmation, but given no output schema, this is acceptable and unlikely to confuse an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context by explaining that jobType relates to get_starred_jobs for ai_job and partner jobs for listing_job, and provides an example for the note parameter. This goes beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a job to the user's list, distinguishing it from siblings like apply_to_job or unsave_job. It specifies the two supported job types (AI-extracted and internal partner jobs), leaving no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (save jobs for later) and references the two job sources (get_starred_jobs and partner jobs). It does not explicitly state when not to use it or provide alternatives, but the context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch CompaniesARead-onlyInspect
Search for companies on Remoet. Only companies are returned (not freelance platforms or job boards). Returns a summary for each company — use get_listing with the slug to see full details (description, perks, URLs).
CRITICAL: Only star companies whose tech stack OVERLAPS with the user's skills. A JavaScript developer should NOT star a company that only uses Go, Rust, or Java. Stars are the user's noise filter — irrelevant stars pollute their job feed with jobs they can't apply to. Every star must make sense for THIS user.
Best approach: 1) Read the user's profile to understand their tech stack and experience, 2) Search listings filtering by the user's actual technologies, 3) Review results and only star companies where the tech stack genuinely matches.
SEARCH LOGIC: Relevance scoring ranks results by: exact name match (+10), name starts with query (+5), name contains query (+2), and each tech stack match (+20 per matching technology). Text search also matches description and about fields. Technologies are auto-normalized (e.g. "ts" → "TypeScript", "react" → "React"). Combine searchQuery and techStack for best results.
If the user's interests aren't clear from their profile, ask them what kind of companies they're looking for.
| Name | Required | Description | Default |
|---|---|---|---|
| searchQuery | No | Search keyword — matches company name, description, and about text | |
| techStack | No | Filter by technologies (e.g. ["React", "Node.js", "TypeScript"]). Technologies are auto-normalized. | |
| sortBy | No | Sort results by: stars (most popular), jobCount (most active hiring), or name (alphabetical). Default: stars | |
| page | No | Page number, starting from 1 (default: 1) | |
| pageSize | No | Results per page, max 100 (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses relevance scoring logic, auto-normalization of technologies, and search behavior across multiple fields. Annotations already indicate read-only and non-destructive, and description adds detailed behavioral context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with logical sections, but slightly verbose (e.g., repeated best approach). Every sentence adds value, but could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive coverage: purpose, search logic, usage guidelines, critical starring note, and alternatives. No output schema, but description compensates fully for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by explaining techStack auto-normalization, sortBy meaning, and search behavior beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for companies on Remoet and distinguishes from freelance platforms or job boards. It also references siblings like get_listing for full details, establishing a unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: read user profile, search with technologies, review results, and star only relevant companies. Also advises asking users if interests are unclear, and contrasts with get_listing for details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_application_messageSend Application MessageAInspect
Send a message to the company on a job application. Messages are visible to both the user and the company. Use this for follow-ups, questions about the role, or any communication with the hiring team. Max 1000 characters.
IMPORTANT: Do NOT write or draft messages for the user. Ask the user to write their own message — it should be in their voice, not yours. You can remind them to keep it concise and specific, but the words must be theirs. Once they give you the message text, confirm they're happy with it before sending.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application | |
| content | Yes | The message content (max 1000 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), the description reveals that messages are visible to both parties, has a 1000-character limit, and importantly instructs the AI to not draft the message. This adds significant behavioral context not captured in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and includes a critical warning. Every sentence serves a purpose with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and full annotation coverage, the description adequately covers purpose, usage, behavioral rules, and constraints. No output schema is needed for this write-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description does not add new meaning beyond the schema, but it reinforces the content parameter's purpose. Baseline 3 is appropriate as no extra semantic value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Send' and the resource 'a message to the company on a job application'. It distinguishes its purpose from sibling tools like get_application_messages (retrieve) and add_application_note (notes). Use cases are explicitly listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (follow-ups, questions, communication) and provides a critical guideline: not to write messages for the user. It lacks explicit comparison to alternative tools, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
star_listingStar CompanyAInspect
Star/save a company listing. Starring subscribes you to their job postings — starred company jobs appear in get_starred_jobs. IMPORTANT: Only company-type listings can be starred. Starring is FREE — it does not consume budget. However, there is a limit on how many active stars you can have at once (based on your plan). Call get_star_count 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.
| Name | Required | Description | Default |
|---|---|---|---|
| listingId | Yes | The ID of the listing to star |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses that starring is free (no budget consumption), has a plan-based limit, and subscribes to job postings. These behavioral traits are not evident from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and purpose, then provides important details. While it is somewhat long, every sentence adds value. Could be slightly more concise but is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the effect (appears in get_starred_jobs), constraints (only companies, tech stack overlap, plan limit), and references related tools. It is complete for the agent to understand when and how to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with listingId documented. The description adds the constraint that only company-type listings can be starred, which adds meaningful usage context beyond the schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stars/saves a company listing, subscribes the user to job postings, and mentions that starred companies appear in get_starred_jobs. It distinguishes from siblings like unstar_listing and save_job by specifying only company-type listings can be starred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (star companies with tech stack overlap) and when-not-to-use (irrelevant stars pollute job feed). References alternatives like get_starred_jobs, get_star_count, and unstar_listing. Also mentions plan limits and calls get_star_count to check remaining slots.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unsave_jobRemove Saved JobADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| savedJobId | Yes | The ID of the saved job entry to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds a valuable behavioral detail (user confirmation), which is not covered by annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, prerequisite, and action confirmation. Every sentence is essential and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and good annotations, the description covers purpose, prerequisite, and confirmation. It lacks details on return values or error handling but is sufficient given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already provides a regex pattern and description for savedJobId. The description adds context on how to obtain the ID but no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'remove a job from the user's saved list' with a specific verb and resource. It distinguishes from sibling tools like save_job and get_saved_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use get_saved_jobs first to obtain the saved job ID, and confirms the action with the user. It does not mention alternatives or exclusions, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unstar_listingUnstar CompanyADestructiveIdempotentInspect
Remove a star from a company listing. WARNING: Unstarring consumes from your unstar budget (per billing period). This prevents unlimited cycling of stars. Call get_star_count first to check your remaining unstar budget. Only unstar if the company is truly not relevant.
| Name | Required | Description | Default |
|---|---|---|---|
| listingId | Yes | The ID of the listing to unstar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses that unstarring consumes from an unstar budget per billing period, preventing unlimited cycling. This adds value beyond annotations (destructiveHint, idempotentHint) by explaining the side effect and precondition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two informative sentences plus a warning. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple tool with one parameter and no output schema. Explains effect, side effects, and precondition. Could mention return value or error conditions, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of the single parameter with clear description and regex pattern. The tool description does not add further parameter details, but baseline is acceptable given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Remove a star from a company listing', using a specific verb and resource. It distinguishes from sibling tools like 'star_listing' and 'get_starred_listings'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: check remaining unstar budget via get_star_count before use, and only unstar if truly not relevant. No explicit when-not-to-use, but the budget constraint implies careful usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_educationUpdate EducationAIdempotentInspect
Update an existing education entry. Only provide the fields you want to change — omitted fields are left as-is. Use get_education first to find the ID. Prefer this over delete + recreate — it preserves the entry ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the education entry to update | |
| institution | No | Institution name | |
| institutionUrl | No | Institution website URL | |
| studyLevel | No | Level of study: HIGH_SCHOOL, ASSOCIATE, BACHELOR, MASTER, DOCTORATE, BOOTCAMP, or OTHER | |
| fieldOfStudy | No | Field of study | |
| startDate | No | Start date (ISO 8601) | |
| endDate | No | End date (ISO 8601) | |
| isCurrent | No | Whether you are currently studying here | |
| description | No | Description of studies, achievements, etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. Description adds behavioral detail that omitted fields are left as-is, which is beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with purpose, then guidelines. Highly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description covers usage flow and behavioral expectations. Slightly missing return value information, but overall complete for a simple update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. The description adds critical semantics that only provided fields are changed, which is not captured in the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Update an existing education entry' with specific verb and resource. It distinguishes from siblings like create_education and delete_education by advising to use get_education first and preferring update over delete+recreate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use get_education to find the ID first and prefers this over delete+recreate, providing clear context on when to use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_profileUpdate ProfileAIdempotentInspect
Update the user's Remoet profile. 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 information for a field, ask the user rather than guessing or leaving it blank. Write professional, clean descriptions — never copy placeholder text like "lorem ipsum".
SUMMARY WRITING GUIDE: The summary is the most important field — it's the first thing companies read. A strong summary follows this 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." Keep it under 500 characters — enough for a second differentiator sentence if needed. Avoid generic fluff like "passionate developer" or "team player" — be specific and quantifiable.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Your public profile URL slug (must be unique) | |
| No | Update your email address | ||
| name | No | Your full name | |
| avatarUrl | No | Your avatar/photo URL | |
| phone | No | Your phone number | |
| url | No | Your personal website URL | |
| summary | No | A brief professional summary or bio | |
| location | No | Your location | |
| githubUrl | No | Your GitHub profile URL | |
| facebookUrl | No | Your Facebook profile URL | |
| twitterUrl | No | Your Twitter/X profile URL | |
| linkedinUrl | No | Your LinkedIn profile URL | |
| youtubeUrl | No | Your YouTube channel URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral traits beyond annotations: 'omitted fields are left as-is', 'Pass null to clear a field', and detailed guidance on summary quality. Annotations only indicate idempotent=true; the description significantly enriches the agent's understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, but the summary writing guide is quite lengthy and could be condensed without losing essential guidance. Some repetition exists, making it less concise than optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and annotations are minimal, the description fully covers update semantics, prerequisites, and field-specific writing standards. It is complete for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds important semantic context: partial update behavior and null-as-clear. This goes beyond individual parameter descriptions, though the schema already describes each field sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update the user's Remoet profile' and specifies that only changed fields need to be provided, with omitted fields left as-is. This distinguishes it from sibling tools like get_profile and other update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: 'Always read the current profile first with get_profile' and advises to ask the user when source data is missing. It includes writing guidelines for the summary field. However, it does not explicitly exclude alternatives or mention when not to use the tool, which prevents a score of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectUpdate ProjectAIdempotentInspect
Update an existing project. Only provide the fields you want to change — omitted fields are left as-is. Use get_projects first to find the ID. Prefer this over delete + recreate — it preserves the entry ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the project to update | |
| title | No | Project title | |
| shortDescription | No | A one-line summary | |
| description | No | Full project description | |
| role | No | Your role in the project | |
| technologies | No | Technologies used | |
| isCurrent | No | Whether this is an ongoing project | |
| isRemote | No | Whether this was remote work | |
| isOpenSource | No | Whether this is open source | |
| startDate | No | Start date (ISO 8601) | |
| endDate | No | End date (ISO 8601) | |
| repoUrl | No | Repository URL | |
| demoUrl | No | Live demo URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is not read-only, not destructive, and idempotent. The description adds important behavioral context: omitted fields are left as-is, and the entry ID is preserved. This aligns with idempotentHint and provides additional detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each providing distinct value: purpose, partial update behavior, and usage guidance. No redundant or irrelevant content. It is efficiently front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 13 parameters, no output schema, and no nested objects, the description provides essential usage context but does not explain the return value or response format. An agent may need to infer the output or handle errors without guidance, leaving a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so each parameter is already explained. The description adds no extra parameter-level meaning beyond stating that only fields to change should be provided. Therefore, the description does not significantly enhance the schema's semantic clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates an existing project, distinguishes from delete+recreate by noting it preserves the entry ID, and instructs to first use get_projects to find the ID. This provides a specific verb+resource and differentiates from sibling tools like create_project and delete_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance: use get_projects first to find the ID, and prefer this over delete+recreate because it preserves the entry ID. It does not explicitly state when not to use, but the partial update semantics imply it is for modifying specific fields rather than replacing the entire project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_saved_job_noteUpdate Saved Job NoteAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| savedJobId | Yes | The ID of the saved job entry (not the job ID) | |
| note | Yes | Updated note, or null to clear |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosure of mutation (updating note) aligns with readOnlyHint=false. IdempotentHint=true is consistent. Description adds the null-clearing behavior and allowed operations beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (update a single field) and absence of output schema, the description is complete enough. No need for return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds value by explaining the note can be a string or null (clear) and clarifying savedJobId is the saved job entry ID, not the job ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Update the note on a saved job' with specific use cases (add context, track status, reminders). It clearly distinguishes from siblings like add_application_note (application notes) and save_job/unsave_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit scenarios for use (add context, track status, reminders) and notes the null clearing behavior. Though no explicit when-not-to-use, the context is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_visibilityUpdate VisibilityAIdempotentInspect
Update who can see the user's profile in company candidate lists. There are 3 levels:
NONE — Profile is hidden from all companies. Maximum privacy.
STARRED — Profile is visible ONLY to companies the user has starred. This is the recommended setting and the default — it means companies you've chosen to follow can discover you as a candidate, but no one else can.
ALL — Profile is visible to every company on Remoet. Maximum exposure, but less privacy.
Always explain the trade-offs to the user before changing this. STARRED is the sweet spot for most users — it creates a two-way match (you follow them, they can find you).
| Name | Required | Description | Default |
|---|---|---|---|
| visibility | Yes | The visibility level: NONE (hidden), STARRED (only starred companies), ALL (everyone) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent and non-destructive behavior. The description adds context on privacy trade-offs, default behavior, and the need for user explanation, complementing the annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with bullet points for the three levels and a closing paragraph on trade-offs. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter with enum and no output schema, the description is fully complete. It covers the function, each option's impact, and usage recommendations, enabling correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'visibility' has 100% schema coverage with enum values. The description enriches understanding by explaining each level in context (privacy, visibility to companies) and recommending STARRED, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: updating who can see the user's profile in company candidate lists. It distinguishes from sibling tools by focusing specifically on visibility settings, with clear enumeration of three levels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each visibility level and recommends STARRED as the default. It instructs to explain trade-offs to users, but does not explicitly compare to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_experienceUpdate Work ExperienceAIdempotentInspect
Update an existing work experience entry. Only provide the fields you want to change — omitted fields are left as-is. Use get_work_experience first to find the ID. Prefer this over delete + recreate — it preserves the entry ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the job to update | |
| title | No | Job title | |
| companyName | No | Company name | |
| companyUrl | No | Company website URL | |
| startDate | No | Start date (ISO 8601) | |
| endDate | No | End date (ISO 8601), or null if current | |
| isCurrent | No | Whether this is your current job | |
| isRemote | No | Whether this job is remote | |
| technologies | No | Technologies used | |
| description | No | Job description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail beyond annotations: partial update semantics ('omitted fields are left as-is'). Annotations already indicate idempotency and non-destructiveness, so the description complements them without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no redundancy: first sentence states purpose, second explains partial update, third gives usage guidance and alternative. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisites, partial update behavior, and alternative preference. Lacks mention of return value or error conditions, but for a straightforward update tool with high schema coverage and clear annotations, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 10 parameters. The description only adds general partial update behavior, not per-parameter details. Thus, it meets baseline expectations but adds limited extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing work experience entry' with explicit partial update behavior. It distinguishes from siblings by mentioning 'prefer this over delete + recreate' and provides a prerequisite step (get_work_experience).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use get_work_experience first to find the ID' and 'Prefer this over delete + recreate — it preserves the entry ID,' offering clear when-to-use and why, as well as an alternative approach.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdraw_applicationWithdraw ApplicationADestructiveIdempotentInspect
Withdraw a job application. This is irreversible for applications that have been accepted or rejected. Confirm with the user before withdrawing.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The ID of the application to withdraw |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint, idempotentHint), the description adds specific irreversibility conditions and a confirmation requirement. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loaded with the purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, annotations, and no output schema, the description covers essential aspects: action, irreversibility warning, and user confirmation. It is adequate but could briefly mention side effects like notification or status change.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter (applicationId) with pattern and description. The description adds no extra parameter info beyond implying its necessity, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Withdraw a job application') and the resource. It distinguishes from siblings like accept_offer or reject_offer by its unique verb and context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises confirming with the user before withdrawing and notes irreversibility for accepted/rejected applications, providing key guidance. However, it does not explicitly compare to alternatives like reject_offer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
48 tool updates
v1.0.0- First observed
accept_offer - First observed
add_application_note - First observed
apply_to_job - First observed
create_education - First observed
create_linktree - First observed
create_project - First observed
create_work_experience - First observed
delete_education - First observed
delete_linktree - First observed
delete_project - First observed
delete_work_experience - First observed
get_application - First observed
get_application_events - First observed
get_application_messages - First observed
get_applications - First observed
get_apps - First observed
get_digest - First observed
get_digests - First observed
get_education - First observed
get_links - First observed
get_linktree - First observed
get_linktrees - First observed
get_listing - First observed
get_profile - First observed
get_projects - First observed
get_saved_jobs - First observed
get_star_count - First observed
get_starred_jobs - First observed
get_starred_listings - First observed
get_subscription - First observed
get_upgrade_link - First observed
get_usage - First observed
get_visibility - First observed
get_work_experience - First observed
reject_offer - First observed
save_job - First observed
search_listings - First observed
send_application_message - First observed
star_listing - First observed
unsave_job - First observed
unstar_listing - First observed
update_education - First observed
update_profile - First observed
update_project - First observed
update_saved_job_note - First observed
update_visibility - First observed
update_work_experience - First observed
withdraw_application
TDQS
Each tool targets a distinct action and entity. For example, create/update/delete operations for education, work experience, and projects are clearly separated. Application lifecycle tools (apply, withdraw, accept, reject) have distinct purposes. Even close pairs like get_digest vs get_starred_jobs are clearly differentiated by descriptions (one-week-old summaries vs real-time).
All tools follow a consistent verb_noun snake_case pattern (e.g., create_work_experience, get_starred_jobs, accept_offer). No mixing of camelCase or other conventions. The naming is predictable and systematic, making it easy for an agent to infer functionality.
With 48 tools, the surface is quite large for a single server. While many tools are necessary for full CRUD coverage across multiple entities, the count exceeds the typical well-scoped range (3-15) and even the 'heavy' range (16-25). Some tools could be consolidated (e.g., get_digest and get_digests). The number risks overwhelming an agent.
The tool set covers profile management (education, work, projects, links), job applications, job search and saving, company interactions, and account/subscription management. Minor gaps exist: no direct CV/resume upload tool, no user account deletion, and limited messaging. However, core workflows are well-supported, and agents can accomplish most tasks without workarounds.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Job application tracker for developers - AI agents write over MCP, you review in a dashboard.
AI job search for Claude, ChatGPT, Cursor. 170K+ jobs, 3,800+ companies. OAuth or stdio.
Search live startup jobs from Claude, Cursor, or ChatGPT via MCP. Free, no account needed.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRemote jobs MCP server — search 100,000+ remote jobs, post listings, find candidates, and check salary benchmarks from Claude, ChatGPT, Cursor, and any MCP client. Free, no API key required.19MIT
- AlicenseNot gradedqualityCmaintenanceJobPilot is a next-generation career assistant powered by AI Agents and the Model Context Protocol (MCP). It acts as your personal recruiter, tirelessly searching for jobs on platforms like LinkedIn, optimizing your resume for specific job descriptions (JD), and even automating the application process. Designed for the age of AI, JobPilot exposes a full MCP server, allowing you to connect it with2MIT
- AlicenseNot gradedqualityFmaintenanceEnables users to search for jobs, prefill applications using AI, and automate submissions across major platforms like Lever and Ashby directly from Claude or Cursor. It provides a full suite of tools for managing job queues, profile data, and resumes within a chat interface.35MIT
- AlicenseAqualityDmaintenanceEnables AI agents to interact with email accounts via the Himalaya CLI, supporting features like message reading, folder management, and controlled email sending. It prioritizes security with graduated permission modes and the exclusion of destructive operations like permanent deletion.10MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/remoet-labs/remoet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server