Krew Guru
Server Details
Maritime vacancies for seafarers and CV import into a Krew Guru profile.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct object and action: create a profile draft, check a draft's status, search vacancies, and fetch one vacancy's details. The descriptions explicitly cross-reference each other (e.g. 'Do not use for searching (use search_maritime_jobs)'), and the create/status pair is cleanly separated by first call vs. later lookup. No plausible misselection path exists.
All four names follow a snake_case verb_noun pattern (create_/get_/get_/search_), which is predictable. The only minor wrinkle is resource naming drift between 'seafarer_profile_draft' and 'profile_draft', plus 'maritime_job' as a third noun form, but the pattern itself never breaks.
Four tools is well-scoped for a deliberately narrow surface: draft creation, draft status, job search, and job detail. Every tool has a clear role and none is redundant or padding; a larger set would imply capabilities the server explicitly disclaims.
The profile-draft lifecycle and the search→detail job flow are both covered, with the handoff to krew.guru clearly intended for code entry and applications. Minor gaps remain: no direct way to update a draft (only recreate), and search appears to omit a rank-list or pagination/refinement affordance beyond rank/vessel/date.
Available Tools
4 toolscreate_seafarer_profile_draftCreate seafarer profile draft from CVAInspect
Turn a seafarer CV (plain text the seafarer pasted or shared: sea service records, ranks, vessels, certificates) into a Krew Guru profile draft. Sends a sign-in code and link to the email in the CV (or to the email argument if the CV has none); the seafarer opens the email and enters the code on krew.guru to save the profile; no tool accepts that code. Returns the same result as the Krew Guru website: status (verification_sent, email_required, not_a_cv), masked email, handoff_url for the seafarer, up to 5 matched_vacancies, user_message and next_actions. Contacts and document numbers are not returned. If status is email_required, ask the seafarer for an email and call again with the same text and the email argument. Drafts expire after 24 hours. Limit: 6 CVs per 10 minutes. Use this when the seafarer asks to create or update a Krew Guru profile from a CV or to find jobs matching a CV. Do not use for CVs of other people without their consent, for non-maritime CVs, or for employer or vacancy data.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The seafarer's own email. Only needed after status email_required; an email found in the CV is used first. | ||
| raw_cv_text | Yes | Full CV text as provided by the seafarer, 40-48,000 characters, any language. Keep sea service records (vessel name, IMO, type, rank, dates). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: it discloses that a sign-in code and link are emailed, that no tool accepts the code, the exact status values (verification_sent, email_required, not_a_cv), that contacts and document numbers are withheld, that drafts expire in 24 hours, and a rate limit of 6 CVs per 10 minutes. These are exactly the side effects and constraints an agent needs for a non-idempotent, open-world mutation.
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?
Dense and front-loaded: the core transformation and the email handoff come first, then return shape, then retry rules, then limits and exclusions. It is a long single paragraph and the return-value enumeration could be tightened, but nearly every sentence carries operational 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?
There is no output schema, and the description fully compensates by enumerating the return payload (status, masked email, handoff_url, up to 5 matched_vacancies, user_message, next_actions) and what is deliberately omitted. Combined with the retry path and expiry, an agent has everything needed to invoke and interpret the call.
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, but the description adds procedural meaning the schema only hints at: the email argument is a fallback used only after email_required, and the retry must resend the same text alongside the email. It also frames the CV content expectations (sea service records, any language) rather than leaving them to 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?
States a specific verb+resource: turning a seafarer CV into a Krew Guru profile draft, with the domain spelled out (sea service records, ranks, vessels, certificates). It is clearly distinguishable from siblings like get_profile_draft_status and search_maritime_jobs, which handle draft status and job search rather than CV ingestion.
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 names the triggering situations ('seafarer asks to create or update a Krew Guru profile from a CV or to find jobs matching a CV') and three exclusions (other people's CVs without consent, non-maritime CVs, employer/vacancy data). It also prescribes the follow-up path when status is email_required, so the agent knows the retry alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_maritime_jobGet maritime job detailsARead-onlyInspect
Get the details of one Krew Guru vacancy by its vac_id: rank, vessel type and size, salary range in USD per month (net), contract length, boarding date and port, requirements (citizenship, English level, certificates, visas) and a vacancy_url to open it on krew.guru. Use this when the seafarer wants more about a vacancy returned by search_maritime_jobs or by create_seafarer_profile_draft (matched_vacancies). Do not use for searching (use search_maritime_jobs) or for company contact details, which are not returned.
| Name | Required | Description | Default |
|---|---|---|---|
| vac_id | Yes | Vacancy id (vac_id) from search_maritime_jobs or matched_vacancies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context by listing the returned fields, including a vacancy_url, and by clarifying that company contact details are not returned — a meaningful boundary for the agent. It does not mention auth or rate limits, but those are not essential here.
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 tightly written sentences. It front-loads the purpose and return fields, then immediately follows with usage and exclusions — no wasted text.
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 single-parameter read tool with no output schema, the description is complete: it names the input source, lists the key returned fields, and rules out the two most likely wrong uses. An agent has everything needed to call it 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% and the single vac_id parameter already has a description pointing to search_maritime_jobs or matched_vacancies. The description repeats that same sourcing information, adding little beyond the schema; baseline 3 is appropriate when the schema does the heavy lifting.
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 and resource ('Get the details of one Krew Guru vacancy by its vac_id') and enumerates exactly which fields are returned. It also explicitly distinguishes this from the sibling search_maritime_jobs, so an agent can select it without opening any schema.
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?
It gives explicit when-to-use context: after search_maritime_jobs or when a vacancy comes from create_seafarer_profile_draft (matched_vacancies). It also states clear exclusions — not for searching (use search_maritime_jobs) and not for company contact details, which are not returned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_draft_statusGet profile draft statusARead-onlyInspect
Check a Krew Guru profile draft by its draft_token from create_seafarer_profile_draft: status (verification_sent or email_required), masked email, CV preview without contacts, handoff_url and matched_vacancies. Use this when the seafarer comes back later and asks about the draft or the matched vacancies. An unknown or expired token returns an error; then create a new draft. Do not use for signing in or for entering the email code: the seafarer does that on krew.guru.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_token | Yes | draft_token returned by create_seafarer_profile_draft (64 hex characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds real behavioral detail beyond them: the error condition for unknown/expired tokens with a prescribed recovery, and the privacy posture (email is masked, CV preview omits contacts). Those two facts materially change how an agent should interpret and relay the result.
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, front-loaded with the operation and the return shape, then usage timing, then exclusions and failure handling. No sentence is redundant and no filler is present.
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?
There is no output schema, so the description correctly enumerates the returned fields itself. With one fully documented required parameter and annotations covering the safety profile, an agent has everything needed to call this tool and to interpret or handle its failure mode.
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% and the schema already documents the draft_token's provenance and 64-hex format, so the description cannot add much. It reinforces provenance by naming create_seafarer_profile_draft and ties an invalid token to the error path, but that is marginal value over the structured field. 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?
States a specific verb (check) and resource (a Krew Guru profile draft) and enumerates exactly what is returned: status with its two possible values, masked email, CV preview without contacts, handoff_url, and matched_vacancies. It also names the sibling create_seafarer_profile_draft as the origin of the token, so an agent can place it in the workflow without opening either schema.
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?
Gives an explicit triggering condition ('when the seafarer comes back later and asks about the draft or the matched vacancies'), an explicit exclusion ('Do not use for signing in or for entering the email code'), and names where that action belongs instead (krew.guru). It also covers the failure path: an unknown or expired token returns an error, and the recovery is to create a new draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_maritime_jobsSearch maritime jobsARead-onlyInspect
Search open vacancies for seafarers on Krew Guru by rank, vessel type and boarding date. Use this when a seafarer asks which jobs are open, for example "2/E jobs on bulk carriers joining in November" or "AB vacancies on tankers". Returns up to 20 published vacancies with a boarding date that has not passed, salary range in USD per month (net), contract length in months and a vacancy_url to open the vacancy on krew.guru. Company contacts are not returned; the seafarer applies on krew.guru. Do not use for checking whether a crewing agency or a job offer is genuine, for jobs ashore, or for a seafarer's own applications.
| Name | Required | Description | Default |
|---|---|---|---|
| rank | No | Rank (position on board). Use the full name or a short code, for example: Master; Chief Officer (CO, C/O); Second Officer (2O, 2/O); Chief Engineer (CE, C/E); Second Engineer (2E, 2/E); Third Engineer (3E); ETO (Electro-Technical Officer); Bosun; AB (Able Seaman); OS (Ordinary Seaman); Motorman/Oiler; Chief Cook. Write 2/E as "2E" or "Second Engineer". | |
| limit | No | How many vacancies to return (1-20). | |
| offset | No | Skip this many vacancies (paging). | |
| ship_type | No | Vessel type, for example: Bulk carrier, Container ship, Oil tanker, Product tanker, Chemical tanker, LNG carrier, LPG carrier, General cargo vessel, Car carrier, AHTS (anchor handling tug supply), PSV (Platform Supply Vessel), Cruise ship, Dredger. Groups are accepted too: oil, chem, gas, bulk, container, cargo, offshore. | |
| date_of_boarding | No | Planned joining date, YYYY-MM-DD. Matches vacancies boarding within one week of this date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint and openWorldHint, so the description must carry the rest — and it does: result cap of 20, only published vacancies with a future boarding date, salary as net USD/month, contract length, a vacancy_url, and the negative disclosure that company contacts are withheld because applying happens on krew.guru.
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 verb, resource and filters, then results, then exclusions — a sensible order. The final exclusion sentence is long and stacks three negatives, but each clause is doing real disambiguation work, so there is little genuine waste.
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?
With no output schema, the description carries the return contract and does so fully (fields, currency basis, contact exclusion, apply path). Combined with the exclusion list and 100% schema coverage, an agent has everything needed to call it and interpret results.
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%, so the schema already defines rank codes, ship_type groups, and the one-week boarding-date tolerance. The description still adds value by framing those parameters as the things a seafarer names in a query ('2/E jobs on bulk carriers joining in November'), though it adds no syntax 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?
States a specific verb and resource ('search open vacancies for seafarers on Krew Guru') plus the three filtering dimensions. It is clearly distinct from the siblings (create_seafarer_profile_draft, get_maritime_job, get_profile_draft_status) because it is the only discovery/list tool.
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?
Gives an explicit use condition ('when a seafarer asks which jobs are open') with two concrete natural-language query examples. It also names four explicit exclusions (genuine-offer checks, jobs ashore, own applications), which is stronger than most sibling tools provide.
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.
4 tool updates
- First observed
create_seafarer_profile_draft - First observed
get_maritime_job - First observed
get_profile_draft_status - First observed
search_maritime_jobs
Related MCP Connectors
Screen CVs, manage roles and candidates, and source talent in Semata's AI hiring workspace.
Live job vacancies and salary stats: Russia, Belarus, Kazakhstan, Germany, France and more.
Your personal career coach. Scanning jobs for you, daily.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAI-powered job matching and CV generation tool that searches jobs on LinkedIn and Seek, analyzes CV fit, and generates tailored CVs.MIT
- FlicenseNot gradedqualityDmaintenanceEnables automatic analysis and comparison of CVs against a job description, scoring candidates and generating professional reports.-
- AlicenseAqualityCmaintenanceTailor your CV to any job posting with ATS keyword scoring and clean PDF/DOCX export.63MIT
- AlicenseAqualityBmaintenanceEnables agents to search and deduplicate UK job vacancies across multiple boards, match them against local CVs, and submit complete applications through an automated browser with persistent logins and application memory.29MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.