{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_t7z5rhu8yph3","handle":"jobctl","url":"https://wellknown.network/agents/jobctl","links":{"self":"https://wellknown.network/agents/jobctl/record.json","html":"https://wellknown.network/agents/jobctl","markdown":"https://wellknown.network/agents/jobctl/record.md","api":"https://wellknown.network/api/v1/agents/jobctl","status":"https://wellknown.network/api/v1/agents/jobctl/status","claim":"https://wellknown.network/agents/jobctl/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/jobctl/claim.json","badge":"https://wellknown.network/agents/jobctl/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/jobctl/history","tools":"https://wellknown.network/api/v1/agents/jobctl/tools"},"ard":{"identifier":"urn:air:app.jobctl.app:server:jobctl","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"jobctl","summary":"Job application tracker for developers - AI agents write over MCP, you review in a dashboard.","description":"Job application tracker for developers - AI agents write over MCP, you review in a dashboard.","publisher":{"name":"DmytroRybka","url":null},"homepage":"https://jobctl.app","repository":null,"version":"0.5.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://app.jobctl.app/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-16T18:03:25.09813Z","publishedAt":"2026-07-16T18:03:25.09813Z","registryName":"io.github.DmytroRybka/jobctl"},"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":"analytics.reporting","name":"Reporting & Dashboards","confidence":0.964,"provenance":"derived"},{"slug":"content.social","name":"Social Media","confidence":0.525,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.51,"provenance":"derived"}],"categories":["analytics","content","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-10T01:23:46.343Z","lastProbedAt":"2026-10-10T01:23:46.343Z","statusComputedAt":"2026-10-10T01:25:54.898Z","reliability30d":{"probes":110,"successRate":1,"p50Ms":17,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":109,"ok":109,"authBoundaryOk":0,"serviceOk":109,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T01:23:46.343Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":15,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T18:26:10.733Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":16,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T11:27:17.254Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":14,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T04:28:04.316Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":15,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T21:22:44.471Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T14:21:57.363Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":16,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T07:25:07.718Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":22,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T00:26:25.919Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":16,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:31:16.891Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":15,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T11:26:14.990Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":16,"error":null,"detail":{"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"toolCount":11,"toolsHash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","serverName":"jobctl","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"add_application","description":"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 struc"},{"name":"list_applications","description":"List job applications. Filter by view (active = default working set, archive = rejected/withdrawn/no-response), status list, priority, or free-text search in co"},{"name":"update_application","description":"Update fields of an application (get the id from list_applications). Status changes are logged to the timeline automatically. Example: `update_application({id: "},{"name":"add_note","description":"Append a free-text note to an application timeline — recruiter call summaries, interview instructions, pasted messages. Multiline markdown is fine. Example: `ad"},{"name":"log_interview","description":"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"},{"name":"get_due","description":"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."},{"name":"get_planned","description":"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. "},{"name":"attach_analysis","description":"Attach a markdown company analysis (research you produced) to an application. Single document per application — a new call REPLACES the previous one. Max 100000"},{"name":"attach_file","description":"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 fil"},{"name":"attach_interview_file","description":"Attach prep material to a specific interview so the user sees it next to that round in the dashboard: the prep document you wrote, the job description, a deck, "},{"name":"get_application","description":"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_a"}],"package":null,"toolSurface":{"id":"ts_hdqzrqq4tkrd","endpointId":"ep_gqq8ce33ey9z","hash":"9d2108fdb59a124439b224364079e891edb25100d218bf9dd72370e7a738078b","toolCount":11,"serverName":"jobctl","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T11:26:50.975Z","lastSeenAt":"2026-10-10T01:23:46.355Z","observations":102,"toolNames":["add_application","list_applications","update_application","add_note","log_interview","get_due","get_planned","attach_analysis","attach_file","attach_interview_file","get_application"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_gqq8ce33ey9z","url":"https://app.jobctl.app/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T01:23:46.360Z","auth":{"observedAt":"2026-10-10T01:23:46.438Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-10T01:23:46.464Z","protocol":"TLSv1.2","chainValid":true,"chainError":null,"hostMatches":true,"subject":"app.jobctl.app","issuer":{"commonName":"Amazon RSA 2048 M01","organization":"Amazon"},"validFrom":"2026-07-14T00:00:00.000Z","validTo":"2027-01-27T23:59:59.000Z","daysToExpiry":109,"sanCount":2,"fingerprint256":"FB:C7:0A:3A:5D:3F:0A:91:BE:51:37:DC:EB:87:31:CA:F1:11:B4:A3:AD:FA:6D:26:10:B4:05:C8:C1:4B:88:C3"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.DmytroRybka/jobctl","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.DmytroRybka%2Fjobctl","firstSeenAt":"2026-09-06T02:21:28.359Z","fetchedAt":"2026-10-09T20:20:57.602Z","normalizedAt":"2026-10-09T20:20:57.602Z"}]},"firstSeenAt":"2026-09-06T02:21:28.359Z","updatedAt":"2026-10-10T01:26:32.661Z"}