ZBS Index What actually exists in applied AI, with the source next to it

mcp server

jobctl

Job application tracker for developers - AI agents write over MCP, you review in a dashboard.

Description as published by the maintainer. Source

  • version 0.5.1
  • active
  • analytics

active — Registry entry last updated 2026-07-16. Dashed tags are derived by ZBS Index from the published description, not stated by the maintainer.

What this server can do

10 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.

add_application(raw, url, role, remote, source, status, company, location, priority, applied_at, cv_variant, match_notes, next_action, remote_note, salary_asked, salary_range, next_action_due, salary_range_min, next_interview_at)
Track a new job application. Pass either a single `raw` line — `add_application({raw: "Bosch, Tech Lead, prio A, due friday, remote, via LinkedIn"})` — or structured fields (`company` and `role` required then). Returns the created application and possible-duplicate warnings; if duplicates are listed, tell the user instead of creating again.
add_note(text, application_id)
Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `add_note({application_id: "…", text: "Recruiter: team of 5, on-call rotation, offer range 85-95k"})`. Required: application_id, text.
attach_analysis(markdown, application_id)
Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000 bytes (~100 KB) of utf-8. The user reads it in the dashboard, e.g. before an interview. Example: `attach_analysis({application_id: "…", markdown: "# Bosch\n\n## Culture…"})`. Required: application_id, markdown.
attach_file(kind, mime, filename, data_base64, application_id)
Attach or replace a file on an application so the user sees it in the dashboard: a CV/resume (kind: 'cv') or a cover letter (kind: 'cover_letter'). Pass the file bytes as base64 in data_base64. One file per (application, kind) - a new call REPLACES the previous one. Max ~5 MB; pdf/doc/docx/txt/md (MIME is inferred from the filename if you omit it). Call this whenever you generate a tailored CV or cover letter for an application. Example: `attach_file({application_id: "…", kind: "cv", filename: "CV_Cursor.pdf", data_base64: "JVBERi0…"})`. Required: application_id, kind, filename, data_base64.
get_application(id)
Full detail of one application: all fields, contacts, recent timeline events, and whether a company analysis is attached (fetch it via the dashboard or attach_analysis to replace). Required: id.
get_due
What is burning today: applications with next_action_due today or overdue. Call this when the user asks "what should I do today?" about their job search.
get_planned(range)
What is actually SCHEDULED: interviews with their time, attendees and meeting links, plus the actions falling due, for today, tomorrow, or the next seven days. Use this whenever the user asks what is planned, what the day or week looks like, or before proposing a time to anyone — get_due only knows action deadlines and is blind to booked interviews. Example: `get_planned({range: "tomorrow"})`.
list_applications(q, view, limit, status, priority)
List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in company/role. Example: `list_applications({view: "active"})`, `list_applications({q: "bosch"})`.
log_interview(links, recap, status, attendees, scheduled_at, application_id)
Log an interview for an application (max 10 per application): when it takes place, its status (planned or done), who attends (each with an optional profile link), related links (prep materials the company sent, meeting URL), and a short recap of what was discussed. Also keeps the application's next-interview date in sync. Example: `log_interview({application_id: "…", scheduled_at: "2026-07-20T14:00:00+02:00", status: "planned", attendees: [{name: "Anna Weber (HR)", url: "https://linkedin.com/in/annaweber"}], links: [{label: "Prep materials", url: "https://company.com/interview-prep"}], recap: "System design round"})`. Required: application_id, scheduled_at.
update_application(id, url, role, remote, source, status, company, location, priority, applied_at, cv_variant, match_notes, next_action, remote_note, salary_asked, salary_range, next_action_due, salary_range_min, next_interview_at)
Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "…", status: "interview", next_action: "prepare system design", next_action_due: "2026-07-20"})`. Required: id.

Last successful function declaration observed on . Source: https://app.jobctl.app/mcp. We list what the server declared; we do not call any of these functions.

Endpoint status observed on . Source: https://app.jobctl.app/mcp.

Signals

These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.

Signal Value What it measures Window Observed Source
Latest published version 0.5.1 Latest version string the maintainer published to the registry. as of fetch Model Context Protocol
Registry record last updated 2026-07-16 When the registry record was last updated by its maintainer. point in time Model Context Protocol
First listed in the MCP Registry 2026-07-16 Date this server was first published to the official MCP Registry. Not a usage or quality measure. point in time Model Context Protocol
mcp tools declared 10 tools Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. as of probe app.jobctl.app
mcp endpoint status ok The server listed 10 functions when asked. as of probe app.jobctl.app

Where to get it

This record as data

Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.

GET /api/v1/entries/mcp_server.json

Sources

  1. Tools declared by the MCP server at https://app.jobctl.app/mcp — app.jobctl.app, observed , trust tier 1.
  2. Official MCP Registry — Model Context Protocol, observed , trust tier 1.