keywordise
Registry code: 6e3425e14a856242
Keywordise applies to jobs for a person: it matches their CV against live vacancies taken from employers' own career pages, tailors the CV per posting, answers screening questions from their saved answers and submits inside the employer's own system. This server is the person's full console: create_account or login mints a key; then upload_cv, describe_what_i_want (or update_targeting), list_matching_jobs, preview_tailored_cv, start_apply_run, list_blocking_questions and answer_screening_question. Tools marked destructive send real applications or answers in the person's name; confirm intent…
- endpoint
- https://keywordise.com/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is keywordise live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 99% of checks over the last 30 days.
- Is keywordise free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does keywordise have?
- 69 tools: list_run_history, set_tracker_note, get_application_details, suggest_keywords, revoke_api_key, delete_my_account, set_cv_design, get_job_posting, ….
- Is keywordise safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.2%· all time 99.2%
last good check
of 69 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- used for
- match a cv against live job openings
- tailor a cv for a job posting
- apply to jobs on someone's behalf
- answer employer screening questions
- track job applications
- takes → gives
- documents, text → data, documents
- tools
- 15 reads8 changes data2 sends messages
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
list_run_history reads auth-required never probed
The last five match runs and the last five application runs, with their counts and status.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesset_tracker_note auth-required never probed
Replace the person's own note on one tracked application (interview date, contact, next step).
{ "type": "object", "required": [ "application_id", "notes" ], "properties": { "notes": { "type": "string", "maxLength": 2000 }, "application_id": { "type": "string" } }, "additionalProperties": false }arguments 17 linesget_application_details auth-required 20d ago
The facts application forms ask beyond the CV: address, postcode, city, country, phone type, salutation, work authorisation by region, sponsorship, salary expectation, standard screening answers, and which of them are still missing. Read before telling the person what an application may be waiting for.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linessuggest_keywords reads auth-required never probed
Search keywords derived from the saved profile, useful as include_keywords in update_targeting.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesrevoke_api_key auth-required never probed
Revoke one of this account's API keys immediately. Any terminal or assistant using it stops working at once. Revoking the key you are calling with ends this session.
{ "type": "object", "required": [ "key_id" ], "properties": { "key_id": { "type": "string", "description": "From list_api_keys." } }, "additionalProperties": false }arguments 13 linesdelete_my_account changes data auth-required never probed
Erase the account and everything in it: profile, CV files, matches, applications, answers, keys. Irreversible. Requires confirm_email equal to the account's address.
{ "type": "object", "required": [ "confirm_email" ], "properties": { "confirm_email": { "type": "string", "format": "email" } }, "additionalProperties": false }arguments 13 linesset_cv_design changes data auth-required never probed
Set the design every tailored CV is rendered in (a key from list_cv_designs).
{ "type": "object", "required": [ "design" ], "properties": { "design": { "type": "string", "maxLength": 40 } }, "additionalProperties": false }arguments 13 linesget_job_posting reads auth-required never probed
The full description of one matched vacancy, with a short summary and highlights, plus the link that opens the posting from the app.
{ "type": "object", "required": [ "job_id" ], "properties": { "job_id": { "type": "string", "description": "A job_id from list_matching_jobs or list_my_applications." } }, "additionalProperties": false }arguments 13 linesexplain_job_match reads auth-required 41d ago
Use for 'is this job a good fit', 'why this match', 'what am I missing for this role'. For one vacancy: the match percentage, the requirements this account's CV covers and the ones it is missing. With narrative=true, also a short written assessment with strengths and gaps (a paid model call; limited to 60 per hour).
{ "type": "object", "required": [ "job_id" ], "properties": { "job_id": { "type": "string", "description": "A job_id from list_matching_jobs or list_my_applications." }, "narrative": { "type": "boolean", "default": false } }, "additionalProperties": false }arguments 17 linescreate_account auth-required never probed
Register a new Keywordise account from the terminal and receive an API key for it. Requires accept_terms=true: the person accepts the Terms and Privacy Policy (https://keywordise.com/terms) and authorises Keywordise to apply for jobs on their behalf. A confirmation email is sent; applying opens once the address is confirmed. Trial: 7 days and 27 applications, then Starter at $24.99/month (500 applications) or Pro at $49/month (1,000).
{ "type": "object", "required": [ "email", "password", "accept_terms" ], "properties": { "email": { "type": "string", "format": "email" }, "password": { "type": "string", "maxLength": 256, "minLength": 8 }, "accept_terms": { "type": "boolean" } }, "additionalProperties": false }arguments 23 lineslogin auth-required never probed
Exchange the account's email and password for a new API key, so a terminal or an assistant can act on the account. The key is shown once; keep it. Up to five keys may be active per account (revoke_api_key frees a slot).
{ "type": "object", "required": [ "email", "password" ], "properties": { "email": { "type": "string", "format": "email" }, "label": { "type": "string", "maxLength": 60, "description": "A name for this key, e.g. the machine it lives on." }, "password": { "type": "string", "maxLength": 256 } }, "additionalProperties": false }arguments 23 linesget_account reads auth-required 45d ago
The account behind this key: email and whether it is confirmed, plan state (trial days left, applications used and remaining, subscription), and how many API keys are active.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesresend_verification_email auth-required never probed
Send the email-confirmation link again to this account's address. Applying is blocked until the address is confirmed; nothing else is.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_upgrade_link auth-required never probed
A checkout link for a paid plan from the active payment provider: Starter ($24.99/month, 500 applications a month) or Pro ($49/month, 1,000 a month; the default). The person opens it in a browser to pay; the account upgrades automatically when the payment lands.
{ "type": "object", "properties": { "plan": { "enum": [ "starter", "pro" ], "type": "string" } }, "additionalProperties": false }arguments 13 linesget_my_profile auth-required 44d ago
Use when the person asks what is on their profile or CV. Not needed before searching or applying: those tools read the saved CV themselves. The CV profile Keywordise holds for this account (name, contact, summary, skills, roles, education), the job-targeting rules (countries, remote preference, keywords) and the plan status (applications remaining). Call this first.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesupload_cv auth-required never probed
Use when the person shares or mentions their resume/CV ('here's my resume', 'use my CV'). Upload a CV file and turn it into the account's profile: the same parser the app uses reads the document into name, contact, summary, roles, skills, languages and education. With save=true (default) the profile is saved and the job feed is built from it; with save=false the parsed profile is returned for review only. Max 8 MB.
{ "type": "object", "required": [ "filename", "content_base64" ], "properties": { "save": { "type": "boolean", "default": true }, "filename": { "type": "string", "maxLength": 120, "description": "e.g. cv.pdf" }, "content_base64": { "type": "string", "description": "The file's bytes, base64-encoded." } }, "additionalProperties": false }arguments 23 linesupdate_profile changes data auth-required never probed
Change fields of the saved profile without re-uploading the CV. Send only the fields to change (full_name, contact_email, phone, location, city, address, postcode, professional_summary, skills, pinned_skills, languages, experience, education, projects, certifications, links, …); everything else is untouched. The feed is re-ranked against the new CV.
{ "type": "object", "required": [ "patch" ], "properties": { "patch": { "type": "object", "description": "Profile fields to change, by name." } }, "additionalProperties": false }arguments 13 linesupdate_targeting auth-required never probed
Change targeting rules; send only the keys to change (remote_mode any|remote|hybrid|onsite, geo_scope worldwide|region|country, geo_countries [ISO-2], locations, include_keywords, exclude_keywords, title_allow, title_block, seniority, salary_min, currency, languages, company_block, max_apps_per_day, max_apps_per_company, cover_letter_enabled, cv_tone, tailor_instructions, years_experience, salary_expectation, notice_period, …). The feed re-matches in the background.
{ "type": "object", "required": [ "patch" ], "properties": { "patch": { "type": "object", "description": "Targeting fields to change, by name." } }, "additionalProperties": false }arguments 13 linesdescribe_what_i_want auth-required never probed
Use when the person says what they are looking for in their own words ('senior remote data roles in the US, no agencies'). Turn a plain sentence ('remote data roles in Germany or the Netherlands, senior, not agencies') plus the saved CV into concrete targeting rules. Returns the inferred rules and the chips a person would confirm; with apply=true they are saved and the feed re-matches. preset: balanced | broad | focused.
{ "type": "object", "required": [ "sentence" ], "properties": { "apply": { "type": "boolean", "default": false }, "preset": { "enum": [ "balanced", "broad", "focused" ], "type": "string", "default": "balanced" }, "sentence": { "type": "string", "maxLength": 1000 } }, "additionalProperties": false }arguments 26 linespreview_tailored_cv reads auth-required 41d ago
Use for 'tailor my resume for this job' or 'what would you send for this one'. Rewrite this account's CV for one vacancy the way Keywordise would send it: headline, summary, the roles selected for this job with rewritten bullets, curated skills and a cover letter, every segment labelled tailored, verbatim or pinned. Nothing is sent. A paid model call, limited to 20 per hour; the same billing gate as applying.
{ "type": "object", "required": [ "job_id" ], "properties": { "job_id": { "type": "string", "description": "A job_id from list_matching_jobs or list_my_applications." } }, "additionalProperties": false }arguments 13 lineslist_hidden_jobs auth-required 43d ago
The jobs this account hid or disliked, newest first, so one can be put back.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesrefresh_matches changes data auth-required never probed
Match the account's CV against the vacancies added since it last looked, in the background. Idempotent and cheap when nothing is new. force=true runs a full re-match regardless. rebuild=true rebuilds the feed from scratch through the same build as the app's Rebuild button (use it when the feed looks wrong). Every answer carries `feed_build`: poll get_match_status until its state is `ready` before reading list_matching_jobs, because a feed that is still building is not an empty feed.
{ "type": "object", "properties": { "force": { "type": "boolean", "default": false }, "rebuild": { "type": "boolean", "default": false } }, "additionalProperties": false }arguments 14 linesget_match_status reads auth-required 44d ago
Only for checking on a match or feed rebuild that is already running (after upload_cv, update_targeting or refresh_matches); to find or show jobs use list_matching_jobs. Live status of the latest match run (scanned, inserted, elapsed), the feed counts it produced, and `feed_build`: where the feed is in its build (queued, building, ready, failed). Poll after upload_cv, update_targeting or refresh_matches; the feed is final only when feed_build.feed_state.state is `ready`.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesstart_apply_run sends messages auth-required never probed
Use when the person says 'apply for me', 'apply to the best matches' or 'apply to this job' (pass job_id). Show them the jobs first. Start an application run: Keywordise takes up to `limit` of the matching jobs (same filters as list_matching_jobs, best fit first, never one already applied to), tailors the CV and cover letter for each, answers the employer's screening questions from the saved answers, and SUBMITS inside the employer's own system. Real applications leave in the person's name; needs a confirmed email and an active plan; counts against the plan. dry_run=true does everything except submit. Poll get_apply_run_status.
{ "type": "object", "properties": { "fresh": { "enum": [ "new", "all" ], "type": "string", "description": "Freshness window; defaults to the account's saved filter." }, "limit": { "type": "integer", "default": 10, "maximum": 100, "minimum": 1 }, "match": { "enum": [ "good", "strong", "all" ], "type": "string", "description": "Match tier to draw from; defaults to the account's saved filter." }, "job_id": { "type": "string", "description": "Apply to exactly this ONE job (an id from list_matching_jobs) instead of a filtered batch — the same run, scoped to it. limit/match/fresh are ignored when set." }, "dry_run": { "type": "boolean", "default": false } }, "additionalProperties": false }arguments 37 linesstop_apply_run auth-required never probed
Use for 'stop applying', 'pause', 'hold off'. Ask the running application run to stop after the job it is on. Nothing is left half-done; applications already sent stay sent.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineslist_blocking_questions reads auth-required 43d ago
Questions employers asked on applications that are stalled until this account answers them, grouped by application, each with a suggested answer drawn from what the person answered before. Answer with answer_screening_question.
{ "type": "object", "properties": { "limit": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum number of applications to expand." } }, "additionalProperties": false }arguments 13 linesget_sent_cv_pdf auth-required 41d ago
The tailored CV PDF that went to the employer for one application, returned as a file.
{ "type": "object", "required": [ "application_id" ], "properties": { "application_id": { "type": "string" } }, "additionalProperties": false }arguments 12 lineslist_saved_answers auth-required 43d ago
The answer book: every screening answer this account has given or taught, which future applications reuse automatically in any phrasing or language.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesdelete_saved_answer auth-required never probed
Remove one answer from the answer book (an answer_id from list_saved_answers).
{ "type": "object", "required": [ "answer_id" ], "properties": { "answer_id": { "type": "string" } }, "additionalProperties": false }arguments 12 lineslist_facts_to_provide reads auth-required 43d ago
The universal screening facts this account has not answered yet (right to work, notice period, salary expectation, …), ranked by how many waiting applications each one unblocks. Answer them with save_answer.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_tracker reads auth-required 44d ago
The tracker board: applications grouped by the stage the person set (saved, applied, interview, offer, rejected) with their own notes.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesmove_tracker_card changes data auth-required never probed
Set the tracker stage of one application: saved, applied, interview, offer or rejected.
{ "type": "object", "required": [ "application_id", "stage" ], "properties": { "stage": { "enum": [ "saved", "applied", "interview", "offer", "rejected" ], "type": "string" }, "application_id": { "type": "string" } }, "additionalProperties": false }arguments 23 linessearch_live_jobs auth-required never probed
Use for 'find remote data engineer jobs', 'nursing jobs in Germany', 'what is new in marketing this week'. Searches the WHOLE live job pool (about two million open jobs), not only the person's matches, and needs no CV. Words must all appear in the title, employer or description. Filters: remote only, a two-letter country code, jobs found within N days. Newest first. Each job has a pool_job_id; jobs that also have a page on keywordise.com/jobs carry a public_id. To apply, call apply_to_public_job (public_id) or apply_to_live_job (pool_job_id). For jobs ranked against this person's CV use list_matching_jobs instead.
{ "type": "object", "properties": { "limit": { "type": "integer", "default": 10, "maximum": 25, "minimum": 1 }, "query": { "type": "string", "maxLength": 120, "description": "Words such as 'data engineer' or 'python kubernetes'." }, "offset": { "type": "integer", "default": 0, "minimum": 0 }, "remote": { "type": "boolean", "default": false }, "country": { "type": "string", "maxLength": 2, "description": "Two-letter country code, e.g. DE, US, GB (list_countries_with_jobs)." }, "posted_within_days": { "type": "integer", "maximum": 90, "minimum": 1 } }, "additionalProperties": false }arguments 36 linesset_referral_code auth-required never probed
Set or change the person's own referral code (letters, digits and dashes, shown in their referral link). Fails with the app's own sentence when the code is taken or not allowed.
{ "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "maxLength": 40, "minLength": 3 } }, "additionalProperties": false }arguments 14 linesget_inbox_address auth-required never probed
The email address Keywordise uses on the person's applications (employers reply to it), whether replies are also forwarded to their own mailbox, and whether applying by email is active.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesread_inbox_message auth-required 20d ago
The full text of one Inbox message (from list_inbox), the employer's reply thread, and any verification code or link in it. Reading marks the message as read.
{ "type": "object", "required": [ "message_id" ], "properties": { "message_id": { "type": "string" } }, "additionalProperties": false }arguments 12 linesget_application_review auth-required 20d ago
For one application: every field of the form with its value and where the value came from (the CV, a saved answer, the person, or a model). For an application that waits for the person's review (`editable`), these are the answers about to be sent.
{ "type": "object", "required": [ "application_id" ], "properties": { "application_id": { "type": "string" } }, "additionalProperties": false }arguments 12 lineslist_cv_profiles auth-required 20d ago
Use for 'which CVs do I have', 'is my CV uploaded'. The CVs on the account (a person can keep several; one is the default the matches and applications use) with their labels, plus `cv_state`: whether a usable CV is held and why not when it is not.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineslist_cv_designs auth-required never probed
The CV designs a tailored CV can be rendered in, with the account's current pick.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesexport_my_data auth-required never probed
The account's complete data as one JSON file (profile, targeting, matched jobs, applications, saved answers, run history, audit trail). Returned as a file; large accounts are told to download it in the app instead.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_public_job auth-required 20d ago
Use when the person gives a Keywordise job id (ten characters) or a keywordise.com/jobs link, for example 'tell me about job abcde23456'. Returns what the public page of that job shows: title, employer, place, date and a plain summary of the role. A job that has closed answers that it has closed. Apply with apply_to_public_job.
{ "type": "object", "required": [ "public_id" ], "properties": { "public_id": { "type": "string", "maxLength": 10, "minLength": 10, "description": "The Keywordise job id: ten letters and digits, the last part of a keywordise.com/jobs address (for example abcde23456)." } }, "additionalProperties": false }arguments 15 linesget_feed_reach auth-required 45d ago
How many jobs the current targeting shows versus how many each single rule is hiding, and which one change would widen the feed most. Every number comes from re-asking the feed's own predicate with one control relaxed.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineslist_matching_jobs auth-required 43d ago
Use when the person wants jobs or their best matches: 'find me jobs', 'my top matches', 'remote marketing jobs that fit my resume', 'what's new for me this week'. It already uses the saved CV, so there is no need to read the profile first. Live vacancies matched to this account's CV, ranked. Each job carries a calibrated match percentage, a recruiter-pass verdict with a one-line reason, whether we apply to it automatically from start to finish, whether it waits on an answer from the person, and whether an application was already sent. Jobs that apply automatically come first. Filter by match tier, freshness and applies-automatically; page with offset.
{ "type": "object", "properties": { "sort": { "enum": [ "fit", "fresh" ], "type": "string", "default": "fit", "description": "fit = best match first; fresh = newest day first, best match within it." }, "fresh": { "enum": [ "new", "all" ], "type": "string", "default": "new", "description": "new = posted in the last two weeks; all = the last month." }, "limit": { "type": "integer", "default": 10, "maximum": 50, "minimum": 1 }, "match": { "enum": [ "good", "strong", "all" ], "type": "string", "default": "good", "description": "Match tier. 'all' includes weak matches the recruiter pass rejected." }, "offset": { "type": "integer", "default": 0, "minimum": 0 }, "applied": { "enum": [ "show", "hide" ], "type": "string", "default": "show", "description": "hide = leave out jobs already applied to." }, "auto_only": { "type": "boolean", "default": false, "description": "true = only jobs we apply to automatically, start to finish." } }, "additionalProperties": false }arguments 59 linesrate_job auth-required never probed
Feedback on one job: hide or dislike removes it from the feed and teaches the matcher what this person rejects; interested is a positive signal. Undo with unhide_job.
{ "type": "object", "required": [ "job_id", "action" ], "properties": { "action": { "enum": [ "hide", "dislike", "interested" ], "type": "string" }, "job_id": { "type": "string", "description": "A job_id from list_matching_jobs or list_my_applications." }, "reason": { "type": "string", "maxLength": 300 } }, "additionalProperties": false }arguments 26 linesunhide_job auth-required never probed
Undo hide or dislike: the job returns to the feed and the negative signal is dropped.
{ "type": "object", "required": [ "job_id" ], "properties": { "job_id": { "type": "string", "description": "A job_id from list_matching_jobs or list_my_applications." } }, "additionalProperties": false }arguments 13 lineslist_inbox auth-required 20d ago
Use for 'any replies?', 'did anyone get back to me?'. The person's Inbox: one thread per application with the employer's results (interview invitations, rejections, requests), unread count, newest first. Read one with read_inbox_message.
{ "type": "object", "properties": { "limit": { "type": "integer", "default": 30, "maximum": 100, "minimum": 1 }, "unread_only": { "type": "boolean", "default": false } }, "additionalProperties": false }arguments 16 linesget_billing_portal_link reads auth-required 45d ago
A link to the payment provider's customer portal for this account's subscription, where invoices, the payment method and cancellation live.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linescancel_subscription changes data auth-required never probed
Cancel the Pro subscription at the end of the current billing period. Access stays until then. Irreversible from here; the person can resubscribe later.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linescreate_api_key changes data auth-required never probed
Mint an additional API key for this account, for another machine or assistant. Shown once. Five active keys maximum.
{ "type": "object", "properties": { "label": { "type": "string", "maxLength": 60 } }, "additionalProperties": false }arguments 10 linesget_profile_gaps reads auth-required 44d ago
The gaps in the saved profile that weaken applications (missing dates on a role, no contact phone, empty summary, …), each with a severity, so they can be fixed with update_profile.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_my_cv_pdf auth-required 44d ago
The account's base CV (the saved profile, untailored) rendered as a PDF in the chosen design, returned as a file. No model call.
{ "type": "object", "properties": { "design": { "type": "string", "maxLength": 40, "description": "Optional; defaults to the saved design." } }, "additionalProperties": false }arguments 11 linesget_targeting reads auth-required 44d ago
Every targeting rule the feed and the apply run obey: remote mode, geo scope and countries, locations, include/exclude keywords, title allow/block lists, seniority, salary, languages, work authorisation, company allow/block, daily and per-company caps, cover-letter and CV settings, screening defaults.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_apply_run_status auth-required never probed
Live progress of the latest run: running or not (from a heartbeat, not a status claim), processed of total, the job being worked on now, confirmed, needs review, skipped, closed.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineslist_my_applications reads auth-required 43d ago
Use for 'what did I apply to', 'any replies', 'status of my applications'. Every application sent for this account: company, title, stage, outcome, when it went out, how many screening questions it still waits on, and the employer's acknowledgement where one was received.
{ "type": "object", "properties": { "limit": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1 }, "only_waiting_on_me": { "type": "boolean", "default": false, "description": "Only applications stalled on unanswered screening questions." }, "include_cover_letter": { "type": "boolean", "default": false } }, "additionalProperties": false }arguments 21 linesanswer_screening_question sends messages auth-required never probed
Record the person's answer to one screening question on one application. The answer is written in the person's name and saved to their answer book, so the same question is never asked again. When it is the last required answer, the application is SUBMITTED to the employer. Only give an answer the person actually stated.
{ "type": "object", "required": [ "application_id", "question_id", "answer" ], "properties": { "answer": { "type": "string", "maxLength": 5000 }, "question_id": { "type": "string" }, "application_id": { "type": "string" } }, "additionalProperties": false }arguments 21 linessave_answer changes data auth-required never probed
Add or replace a screening answer in the answer book ('What is your notice period?' → '1 month'). Applications already waiting on that fact are completed and sent in the background. Only save what the person actually stated.
{ "type": "object", "required": [ "question", "answer" ], "properties": { "kind": { "enum": [ "text", "boolean", "select", "number" ], "type": "string", "default": "text" }, "answer": { "type": "string", "maxLength": 5000 }, "options": { "type": "array", "items": { "type": "string" }, "description": "For select questions: the choices the form offers." }, "question": { "type": "string", "maxLength": 500 } }, "additionalProperties": false }arguments 35 linesget_live_job_counts auth-required 20d ago
Use for 'how many jobs are there' or before quoting a number. The size of the live job pool Keywordise can apply to right now, from the same measurement the keywordise.com homepage prints: all live jobs, how many were found in the last 30 days, how many employers, and how many of them Keywordise applies to start to finish without the person doing anything.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_live_job auth-required 20d ago
The full posting text of one live job from search_live_jobs (pool_job_id): title, employer, place, date and the description. For a job in the person's own matches use get_job_posting.
{ "type": "object", "required": [ "pool_job_id" ], "properties": { "pool_job_id": { "type": "string", "description": "The pool_job_id from search_live_jobs." } }, "additionalProperties": false }arguments 13 linesapply_to_public_job auth-required never probed
Use for 'Apply to Keywordise job abcde23456' or when the person asks to apply to a job from keywordise.com/jobs. Finds that job, puts it into the person's matches and starts the same application as the Apply button for that ONE job: tailors the CV and cover letter, answers the employer's questions and SUBMITS in the person's name. Needs the saved CV, a confirmed email and an active plan, and counts against the plan. Show the job first (get_public_job) and confirm with the person. dry_run=true prepares everything and sends nothing. Poll get_apply_run_status.
{ "type": "object", "required": [ "public_id" ], "properties": { "dry_run": { "type": "boolean", "default": false }, "public_id": { "type": "string", "maxLength": 10, "minLength": 10, "description": "The Keywordise job id: ten letters and digits, the last part of a keywordise.com/jobs address (for example abcde23456)." } }, "additionalProperties": false }arguments 19 linesapply_to_live_job auth-required never probed
Use after search_live_jobs when the person picks one of the results to apply to. The same as apply_to_public_job, for a pool_job_id: puts the job into the person's matches and starts the application for that ONE job, which SUBMITS in the person's name. Needs the saved CV, a confirmed email and an active plan. Confirm with the person first. dry_run=true prepares and sends nothing.
{ "type": "object", "required": [ "pool_job_id" ], "properties": { "dry_run": { "type": "boolean", "default": false }, "pool_job_id": { "type": "string", "description": "The pool_job_id from search_live_jobs." } }, "additionalProperties": false }arguments 17 linesget_referrals auth-required 20d ago
Use for 'what is my referral code', 'how much did I earn from referrals', 'who signed up through me'. The person's referral code and link, the share they earn (and the discount a friend gets), their stats (signups, paying customers, earned, pending, paid out), recent commissions and payouts, and whether they were referred by someone.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesreply_to_inbox_message auth-required never probed
SENDS an email to the employer in the person's name, as a reply to one Inbox message. Use only with the person's approval of the exact text. Fails with the app's own sentence when the message is not found or the text is empty.
{ "type": "object", "required": [ "message_id", "text" ], "properties": { "text": { "type": "string", "maxLength": 20000 }, "message_id": { "type": "string" } }, "additionalProperties": false }arguments 17 linesupdate_application_details auth-required never probed
Change some of the application details. Only the fields given change; an empty string clears a field. Fields: salutation, address, postcode, city, state, country (two-letter code), phone_type (mobile, home or work), work_auth (object such as {"eu": true}), sponsorship (list of regions), salary_expectation (number). Only values the person actually stated.
{ "type": "object", "required": [ "details" ], "properties": { "details": { "type": "object", "description": "The fields to change, see the description." } }, "additionalProperties": false }arguments 13 linesprepare_external_application auth-required never probed
For a job the app marks as applied on the employer's own site (apply_to_public_job / start_apply_run answer that they do not apply there for the person): tailors the person's CV and writes the cover letter for that one job, on request, using no application credit. Returns the cover letter text; fetch the two PDFs with get_external_pack_pdf. A paid model call, cached per job. Nothing is sent to the employer.
{ "type": "object", "required": [ "job_id" ], "properties": { "job_id": { "type": "string", "description": "A job_id from list_matching_jobs or from apply_to_public_job." } }, "additionalProperties": false }arguments 13 linesget_external_pack_pdf auth-required 20d ago
The tailored CV or the cover letter PDF written by prepare_external_application for one job, returned as a file.
{ "type": "object", "required": [ "job_id" ], "properties": { "job_id": { "type": "string" }, "document": { "enum": [ "cv", "cover_letter" ], "type": "string", "default": "cv" } }, "additionalProperties": false }arguments 20 linesclaim_referral_code auth-required never probed
Record that the person was referred by the owner of a referral code, for the discount and the friend's credit. Allowed once, before the first payment; fails with the app's own sentence otherwise.
{ "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "maxLength": 40, "minLength": 3 } }, "additionalProperties": false }arguments 14 linesapprove_application auth-required never probed
The Send button of the review screen: SUBMITS an application that is waiting for review (get_application_review says editable), in the person's name. `edits` maps a field's label exactly as get_application_review shows it to the new answer; edits are saved to the person's answer book. Use only with the person's approval of the answers.
{ "type": "object", "required": [ "application_id" ], "properties": { "edits": { "type": "object", "description": "Optional {field label: new answer}." }, "application_id": { "type": "string" } }, "additionalProperties": false }arguments 16 lineslist_api_keys auth-required never probed
The active API keys on this account: prefix, label, created and last used. Never the key itself.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineslist_countries_with_jobs reads auth-required 43d ago
The countries the live pool actually has inventory in (ISO-2, name, job count), for choosing geo_countries in update_targeting.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id6e3425e14a856242.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/6e3425e14a856242/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/6e3425e14a856242?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.