{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_2dy8594fxnnh","handle":"keywordise","url":"https://wellknown.network/agents/keywordise","links":{"self":"https://wellknown.network/agents/keywordise/record.json","html":"https://wellknown.network/agents/keywordise","markdown":"https://wellknown.network/agents/keywordise/record.md","api":"https://wellknown.network/api/v1/agents/keywordise","status":"https://wellknown.network/api/v1/agents/keywordise/status","claim":"https://wellknown.network/agents/keywordise/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/keywordise/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:keywordise.com:server:keywordise","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"keywordise","summary":"Auto-apply to jobs: matches your CV, tailors a fresh CV per posting, and applies for you.","description":"Auto-apply to jobs: matches your CV, tailors a fresh CV per posting, and applies for you.","publisher":{"name":"com.keywordise","url":null},"homepage":"https://keywordise.com/","repository":null,"version":"2.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://keywordise.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-01T16:06:58.160073Z","publishedAt":"2026-09-01T16:06:58.160073Z","registryName":"com.keywordise/keywordise"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.54,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.525,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.525,"provenance":"derived"},{"slug":"finance.markets","name":"Markets & Trading","confidence":0.525,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","dev","documents","finance","infra"]},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-09-05T21:30:17.514Z","lastProbedAt":"2026-09-05T21:30:17.514Z","statusComputedAt":"2026-09-05T21:30:43.872Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":69},"latestObservations":[{"at":"2026-09-05T21:30:17.514Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":69,"error":null,"detail":{"tools":[{"name":"create_account","description":"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 ("},{"name":"login","description":"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 ke"},{"name":"get_account","description":"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 ke"},{"name":"resend_verification_email","description":"Send the email-confirmation link again to this account's address. Applying is blocked until the address is confirmed; nothing else is."},{"name":"get_upgrade_link","description":"A checkout link for the Pro plan ($49/month, 200 applications a month) from the active payment provider. The person opens it in a browser to pay; the account up"},{"name":"get_billing_portal_link","description":"A link to the payment provider's customer portal for this account's subscription, where invoices, the payment method and cancellation live."},{"name":"cancel_subscription","description":"Cancel the Pro subscription at the end of the current billing period. Access stays until then. Irreversible from here; the person can resubscribe later."},{"name":"list_api_keys","description":"The active API keys on this account: prefix, label, created and last used. Never the key itself."},{"name":"create_api_key","description":"Mint an additional API key for this account, for another machine or assistant. Shown once. Five active keys maximum."},{"name":"revoke_api_key","description":"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 ses"},{"name":"export_my_data","description":"The account's complete data as one JSON file (profile, targeting, matched jobs, applications, saved answers, run history, audit trail). Returned as a file; larg"},{"name":"delete_my_account","description":"Erase the account and everything in it: profile, CV files, matches, applications, answers, keys. Irreversible. Requires confirm_email equal to the account's add"},{"name":"get_my_profile","description":"The CV profile Keywordise holds for this account (name, contact, summary, skills, roles, education), the job-targeting rules (countries, remote preference, keyw"},{"name":"upload_cv","description":"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 a"},{"name":"update_profile","description":"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, postco"},{"name":"get_profile_gaps","description":"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"},{"name":"suggest_keywords","description":"Search keywords derived from the saved profile, useful as include_keywords in update_targeting."},{"name":"list_cv_designs","description":"The CV designs a tailored CV can be rendered in, with the account's current pick."},{"name":"set_cv_design","description":"Set the design every tailored CV is rendered in (a key from list_cv_designs)."},{"name":"get_my_cv_pdf","description":"The account's base CV (the saved profile, untailored) rendered as a PDF in the chosen design, returned as a file. No model call."},{"name":"get_targeting","description":"Every targeting rule the feed and the apply run obey: remote mode, geo scope and countries, locations, include/exclude keywords, title allow/block lists, senior"},{"name":"update_targeting","description":"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"},{"name":"describe_what_i_want","description":"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 inf"},{"name":"get_feed_reach","description":"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"},{"name":"list_countries_with_jobs","description":"The countries the live pool actually has inventory in (ISO-2, name, job count), for choosing geo_countries in update_targeting."},{"name":"list_matching_jobs","description":"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, and whethe"},{"name":"get_job_posting","description":"The full description of one matched vacancy, with a short summary and highlights, plus the link that opens the posting from the app."},{"name":"explain_job_match","description":"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 assessmen"},{"name":"preview_tailored_cv","description":"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 s"},{"name":"rate_job","description":"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 unhid"},{"name":"unhide_job","description":"Undo hide or dislike: the job returns to the feed and the negative signal is dropped."},{"name":"list_hidden_jobs","description":"The jobs this account hid or disliked, newest first, so one can be put back."},{"name":"refresh_matches","description":"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-"},{"name":"get_match_status","description":"Live status of the latest match run (scanned, inserted, elapsed) and the feed counts it produced, for polling after upload_cv, update_targeting or refresh_match"},{"name":"start_apply_run","description":"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)"},{"name":"get_apply_run_status","description":"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"},{"name":"stop_apply_run","description":"Ask the running application run to stop after the job it is on. Nothing is left half-done; applications already sent stay sent."},{"name":"list_my_applications","description":"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 ac"},{"name":"list_blocking_questions","description":"Questions employers asked on applications that are stalled until this account answers them, grouped by application, each with a suggested answer drawn from what"},{"name":"answer_screening_question","description":"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 "},{"name":"get_sent_cv_pdf","description":"The tailored CV PDF that went to the employer for one application, returned as a file."},{"name":"list_run_history","description":"The last five match runs and the last five application runs, with their counts and status."},{"name":"list_saved_answers","description":"The answer book: every screening answer this account has given or taught, which future applications reuse automatically in any phrasing or language."},{"name":"save_answer","description":"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 se"},{"name":"delete_saved_answer","description":"Remove one answer from the answer book (an answer_id from list_saved_answers)."},{"name":"list_facts_to_provide","description":"The universal screening facts this account has not answered yet (right to work, notice period, salary expectation, …), ranked by how many waiting applications e"},{"name":"get_tracker","description":"The tracker board: applications grouped by the stage the person set (saved, applied, interview, offer, rejected) with their own notes."},{"name":"move_tracker_card","description":"Set the tracker stage of one application: saved, applied, interview, offer or rejected."},{"name":"set_tracker_note","description":"Replace the person's own note on one tracked application (interview date, contact, next step)."}],"toolCount":49,"serverName":"keywordise","capabilities":["tools"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"create_account","description":"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 ("},{"name":"login","description":"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 ke"},{"name":"get_account","description":"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 ke"},{"name":"resend_verification_email","description":"Send the email-confirmation link again to this account's address. Applying is blocked until the address is confirmed; nothing else is."},{"name":"get_upgrade_link","description":"A checkout link for the Pro plan ($49/month, 200 applications a month) from the active payment provider. The person opens it in a browser to pay; the account up"},{"name":"get_billing_portal_link","description":"A link to the payment provider's customer portal for this account's subscription, where invoices, the payment method and cancellation live."},{"name":"cancel_subscription","description":"Cancel the Pro subscription at the end of the current billing period. Access stays until then. Irreversible from here; the person can resubscribe later."},{"name":"list_api_keys","description":"The active API keys on this account: prefix, label, created and last used. Never the key itself."},{"name":"create_api_key","description":"Mint an additional API key for this account, for another machine or assistant. Shown once. Five active keys maximum."},{"name":"revoke_api_key","description":"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 ses"},{"name":"export_my_data","description":"The account's complete data as one JSON file (profile, targeting, matched jobs, applications, saved answers, run history, audit trail). Returned as a file; larg"},{"name":"delete_my_account","description":"Erase the account and everything in it: profile, CV files, matches, applications, answers, keys. Irreversible. Requires confirm_email equal to the account's add"},{"name":"get_my_profile","description":"The CV profile Keywordise holds for this account (name, contact, summary, skills, roles, education), the job-targeting rules (countries, remote preference, keyw"},{"name":"upload_cv","description":"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 a"},{"name":"update_profile","description":"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, postco"},{"name":"get_profile_gaps","description":"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"},{"name":"suggest_keywords","description":"Search keywords derived from the saved profile, useful as include_keywords in update_targeting."},{"name":"list_cv_designs","description":"The CV designs a tailored CV can be rendered in, with the account's current pick."},{"name":"set_cv_design","description":"Set the design every tailored CV is rendered in (a key from list_cv_designs)."},{"name":"get_my_cv_pdf","description":"The account's base CV (the saved profile, untailored) rendered as a PDF in the chosen design, returned as a file. No model call."},{"name":"get_targeting","description":"Every targeting rule the feed and the apply run obey: remote mode, geo scope and countries, locations, include/exclude keywords, title allow/block lists, senior"},{"name":"update_targeting","description":"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"},{"name":"describe_what_i_want","description":"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 inf"},{"name":"get_feed_reach","description":"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"},{"name":"list_countries_with_jobs","description":"The countries the live pool actually has inventory in (ISO-2, name, job count), for choosing geo_countries in update_targeting."},{"name":"list_matching_jobs","description":"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, and whethe"},{"name":"get_job_posting","description":"The full description of one matched vacancy, with a short summary and highlights, plus the link that opens the posting from the app."},{"name":"explain_job_match","description":"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 assessmen"},{"name":"preview_tailored_cv","description":"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 s"},{"name":"rate_job","description":"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 unhid"},{"name":"unhide_job","description":"Undo hide or dislike: the job returns to the feed and the negative signal is dropped."},{"name":"list_hidden_jobs","description":"The jobs this account hid or disliked, newest first, so one can be put back."},{"name":"refresh_matches","description":"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-"},{"name":"get_match_status","description":"Live status of the latest match run (scanned, inserted, elapsed) and the feed counts it produced, for polling after upload_cv, update_targeting or refresh_match"},{"name":"start_apply_run","description":"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)"},{"name":"get_apply_run_status","description":"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"},{"name":"stop_apply_run","description":"Ask the running application run to stop after the job it is on. Nothing is left half-done; applications already sent stay sent."},{"name":"list_my_applications","description":"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 ac"},{"name":"list_blocking_questions","description":"Questions employers asked on applications that are stalled until this account answers them, grouped by application, each with a suggested answer drawn from what"},{"name":"answer_screening_question","description":"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 "},{"name":"get_sent_cv_pdf","description":"The tailored CV PDF that went to the employer for one application, returned as a file."},{"name":"list_run_history","description":"The last five match runs and the last five application runs, with their counts and status."},{"name":"list_saved_answers","description":"The answer book: every screening answer this account has given or taught, which future applications reuse automatically in any phrasing or language."},{"name":"save_answer","description":"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 se"},{"name":"delete_saved_answer","description":"Remove one answer from the answer book (an answer_id from list_saved_answers)."},{"name":"list_facts_to_provide","description":"The universal screening facts this account has not answered yet (right to work, notice period, salary expectation, …), ranked by how many waiting applications e"},{"name":"get_tracker","description":"The tracker board: applications grouped by the stage the person set (saved, applied, interview, offer, rejected) with their own notes."},{"name":"move_tracker_card","description":"Set the tracker stage of one application: saved, applied, interview, offer or rejected."},{"name":"set_tracker_note","description":"Replace the person's own note on one tracked application (interview date, contact, next step)."}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.keywordise/keywordise","url":"https://registry.modelcontextprotocol.io/v0/servers/com.keywordise%2Fkeywordise","firstSeenAt":"2026-09-05T19:20:53.385Z","fetchedAt":"2026-09-05T19:20:53.385Z","normalizedAt":"2026-09-05T19:20:53.385Z"}]},"firstSeenAt":"2026-09-05T19:20:53.385Z","updatedAt":"2026-09-05T21:30:55.223Z"}