GigHQ.ai
Job-search tracker for AI agents: applications, stale follow-ups, skills gaps, H-1B lookup.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (4)
- HIGH
- LOWen toggle_job_application_interest
- LOWen update_job_application_status
- LOWen get_job_application
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"gighq": {
"url": "https://mcp.gighq.ai/mcp"
}
}
}Puntos de conexión remotos
https://mcp.gighq.ai/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (34)
🟢search_companies(name)
Search for companies by name to retrieve their unique identifiers (UUIDs).
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the company to search for (e.g., 'Human')"
}
},
"required": [
"name"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"count": {
"type": "number"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"uuid": {
"type": "string"
},
"createdAt": {
"type": [
"string",
"null"
]
},
"jobs": {
"type": [
"number",
"null"
]
}
},
"required": [
"name",
"uuid"
],
"additionalProperties": false
}
}
},
"required": [
"count",
"results"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_company_details(companyId, startDate, endDate)
Get detailed information about a company (applicants by status, Community Signal, H1B sponsorship status, employee count, website, etc.) using its UUID. The metrics window defaults to the last 30 days. Optional startDate and endDate parameters support other date ranges. Returns GigHQ's recorded company data and community metrics for the selected window.
Esquema de entrada
{
"type": "object",
"properties": {
"companyId": {
"type": "string",
"description": "The UUID for the company (obtain from search_companies), or a plain company name — the tool will auto-resolve a name to a UUID if a valid UUID is not provided."
},
"startDate": {
"type": "string",
"description": "Start of the metrics window in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). Compute this from natural-language ranges: 'last 6 months' → today minus 6 months, 'last year' → today minus 12 months, 'since March' → March 1 of the current year. Defaults to 30 days ago if omitted."
},
"endDate": {
"type": "string",
"description": "End of the metrics window in ISO 8601 format. Defaults to today if omitted."
}
},
"required": [
"companyId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"communitySignal": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}
},
"required": [
"data"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_job_details(jobId, startDate, endDate)
Get detailed community metrics for a specific job listing (applicants by status, average days per status, Community Signal) using its UUID. The metrics window defaults to the last 30 days. When the user requests a longer period — e.g. "last 6 months", "last year", "since January" — compute startDate and endDate from that phrase and pass them explicitly.
Esquema de entrada
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"description": "The unique identifier (UUID) for the job listing."
},
"startDate": {
"type": "string",
"description": "Start of the metrics window in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). Compute from natural-language ranges: 'last 6 months' → today minus 6 months, 'last year' → today minus 12 months. Defaults to 30 days ago if omitted."
},
"endDate": {
"type": "string",
"description": "End of the metrics window in ISO 8601 format. Defaults to today if omitted."
}
},
"required": [
"jobId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"communitySignal": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}
},
"required": [
"data"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡update_job_application_status(uuid, currentStatus, status)
STOP — if the user says "not interested", "no longer interested", "withdraw interest", "remove from pipeline", or any equivalent: do NOT call this tool. Call toggle_job_application_interest instead. There is no "not interested" status here; attempting to use REJECTED or any other status as a proxy is wrong. Updates the status of a job application by its UUID to one of the supported pipeline stages. Status meanings: - REJECTED: the company rejected the candidate (recorded internally as company-rejected) - For candidate withdrawal use toggle_job_application_interest instead Allowed transitions (invalid transitions are silently ignored by the API — validate before calling): - PROSPECTING → PROSPECTING, APPLIED, INTERVIEWING, OFFER, REJECTED, PENDING - APPLIED → APPLIED, PENDING, INTERVIEWING, OFFER, REJECTED - INTERVIEWING → INTERVIEWING, PENDING, OFFER, REJECTED - OFFER → OFFER, REJECTED, PENDING - REJECTED → REJECTED, PENDING, APPLIED - PENDING → APPLIED, INTERVIEWING, OFFER, REJECTED - UNKNOWN → (nothing — all transitions blocked)
Esquema de entrada
{
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "The UUID of the job application to update (the 'uuid' field, not the numeric 'id')."
},
"currentStatus": {
"type": "string",
"enum": [
"APPLIED",
"INTERVIEWING",
"OFFER",
"REJECTED",
"UNKNOWN",
"PENDING",
"PROSPECTING"
],
"description": "The current status of the job application (required to validate the transition)."
},
"status": {
"type": "string",
"enum": [
"APPLIED",
"INTERVIEWING",
"OFFER",
"REJECTED",
"UNKNOWN",
"PENDING",
"PROSPECTING"
],
"description": "The new status for the job application."
}
},
"required": [
"uuid",
"currentStatus",
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"result": {}
},
"required": [
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴toggle_job_application_interest(uuid, currentIsActive)
Use this tool when the user says "not interested", "no longer interested", "withdraw interest", "I'm out", "remove from pipeline", or any equivalent phrase. This is the ONLY correct tool for withdrawing interest — do not use update_job_application_status as a proxy. Deactivates an active application (or reactivates a previously deactivated one). Mirrors the "I am no longer interested in this role" button in the GigHQ app. Pass `currentIsActive: true` to deactivate an active application: - Stamps an end date on the current status stage (appliedEndDate, interviewingEndDate, or offerEndDate) - Sets status to CANDIDATE_WITHDREW and sets endDate = now Pass `currentIsActive: false` to reactivate a previously deactivated application: - Clears endDate and resets status to APPLIED Check the current `isActive` value with get_job_application or search_job_applications before calling.
Esquema de entrada
{
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "The UUID of the job application to update (the 'uuid' field, not the numeric 'id')."
},
"currentIsActive": {
"type": "boolean",
"description": "The current active state of the application. Pass true if the application is currently active (this will deactivate it); pass false if it is currently inactive (this will reactivate it). Retrieve this value from get_job_application or search_job_applications first."
}
},
"required": [
"uuid",
"currentIsActive"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"result": {}
},
"required": [
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_recent_applications
Retrieves a summary of the user's 10 most recent job applications, including status, company name, and correspondence dates. `totalCount` in the response reflects the full number of applications, not just the 10 returned — mention it if it's larger than the list shown, and point the user to search_job_applications for the rest.
Esquema de entrada
{
"type": "object",
"properties": {}
}Esquema de salida
{
"type": "object",
"properties": {
"applications": {},
"totalCount": {
"type": "number"
},
"assignedEmails": {
"type": "array",
"items": {
"type": "string"
}
},
"tips": {
"type": "array",
"items": {
"type": "string"
}
},
"dashboardUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"totalCount",
"assignedEmails",
"tips",
"dashboardUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_job_applications(company, status, isActive, take, skip)
Search the user's job applications by company name, status, or both. Use this when the user asks about a specific company's application, wants to find a particular application to view or update its status, or wants to know how many applications are in a given status (e.g. "how many applications are in Prospecting?"). Omit `company` to search across all companies — required when the request is status-only. Returns matching applications with their UUIDs — the UUID is what feeds into update_job_application_status and toggle_job_application_interest. `totalCount` in the response reflects the full match count, not just the page returned (see `take`/`skip`). Matching is case-insensitive and substring-based: "stripe" matches "Stripe", "Stripe Inc", etc. If the user applied to the same company more than once (e.g., different roles), all matches are returned; use jobTitle and correspondenceDate to disambiguate.
Esquema de entrada
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "Company name to search for. Case-insensitive substring match. Omit to search across all companies."
},
"status": {
"type": "string",
"enum": [
"APPLIED",
"INTERVIEWING",
"OFFER",
"REJECTED",
"UNKNOWN",
"PENDING",
"PROSPECTING"
],
"description": "Optional: filter results to a specific application status."
},
"isActive": {
"type": "boolean",
"description": "Default true (active applications only). Pass false to search applications marked 'no longer interested'."
},
"take": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Max results to return (default 20, max 50)."
},
"skip": {
"type": "integer",
"minimum": 0,
"description": "Offset for pagination (default 0)."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"results": {},
"totalCount": {
"type": "number"
}
},
"required": [
"totalCount"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_job_application(uuid)
Fetches the full details of a single job application by its UUID — status history, correspondence dates, job description, and related metadata. Do NOT use this tool when the user asks about notes ("do I have any notes", "show me my notes", "list notes"). Use list_job_application_notes for that. Tip: if you only have a company name, call search_job_applications first to get the UUID.
Esquema de entrada
{
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "The UUID of the job application (the 'uuid' field, not the numeric 'id')."
}
},
"required": [
"uuid"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"application": {},
"aiSummary": {
"type": [
"string",
"null"
]
},
"appUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"appUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴create_job_application(company, job, source_url, job_description)
Creates a new job application entry in GigHQ, or reuses an existing active one for the same company+job if the backend finds one — check `alreadyExist` in the response. Calling find_job_application first is still recommended when you want to inspect a possible match before deciding. New applications always start in PROSPECTING status — there is no way to create directly into APPLIED/INTERVIEWING/etc. If the user has already applied, call update_job_application_status with status "APPLIED" right after this returns. Optionally pass `source_url` and/or `job_description` to save them in the same call — attached best-effort after the application is created/found. If that secondary save fails, the create/find itself still succeeds and a warning is included in the response instead of an error. When an existing application is reused, supplied posting details can replace its saved source URL or job description.
Esquema de entrada
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "The name of the company you applied to."
},
"job": {
"type": "string",
"description": "The job title or role you applied for."
},
"source_url": {
"type": "string",
"format": "uri",
"description": "The URL of the job posting, if known. Saved best-effort after create/find."
},
"job_description": {
"type": "string",
"description": "The full job description text, if known. Saved best-effort after create/find."
}
},
"required": [
"company",
"job"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"application": {},
"uuid": {
"type": "string"
},
"alreadyExist": {
"type": "boolean"
},
"appUrl": {
"type": "string",
"format": "uri"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢find_job_application(company, job)
Checks whether the user already has a saved job application for a SPECIFIC posting — call this before create_job_application to avoid creating a duplicate. Matches BOTH company name and job title (case-insensitive substring on each), so it can tell two different roles at the same company apart. search_job_applications cannot do this — it only filters by company/status/isActive, not job title. Both `company` and `job` are required. Scope limitation: matches are restricted server-side to APPLIED, INTERVIEWING, and PROSPECTING status. An application the user marked REJECTED/OFFER, or withdrew interest in, will NOT appear here even if the title/company match. If `found` is false, it's safe to call create_job_application. If true, prefer reusing the existing UUID (e.g. via update_job_application or add_job_application_note) instead of creating a duplicate.
Esquema de entrada
{
"type": "object",
"properties": {
"company": {
"type": "string",
"minLength": 1,
"description": "Company name to match (case-insensitive substring)."
},
"job": {
"type": "string",
"minLength": 1,
"description": "Job title to match (case-insensitive substring)."
}
},
"required": [
"company",
"job"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"count": {
"type": "integer",
"minimum": 0
},
"matches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": [
"string",
"null"
]
},
"companyName": {
"type": [
"string",
"null"
]
},
"jobTitle": {
"type": [
"string",
"null"
]
},
"status": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"isActive": {
"type": [
"boolean",
"null"
]
},
"correspondenceDate": {
"type": [
"string",
"null"
]
}
},
"required": [
"uuid",
"companyName",
"jobTitle",
"isActive",
"correspondenceDate"
],
"additionalProperties": false
}
}
},
"required": [
"found",
"count",
"matches"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴update_job_application(uuid, source_url, job_description)
Enriches or corrects an existing job application's saved posting details: source URL and/or job description. Use this when the user finds the JD later, wants to add the posting link, or wants to correct the saved description. Do NOT use this for status changes — use update_job_application_status. Do NOT use this for withdraw/reactivate ('not interested') — use toggle_job_application_interest. This tool only touches source_url and job_description. At least one of source_url or job_description is required. job_description REPLACES the previously saved description — pass the full text, not a diff. Omitting a field leaves it unchanged.
Esquema de entrada
{
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "The UUID of the job application to update. Find it with search_job_applications, find_job_application, or get_recent_applications."
},
"source_url": {
"type": "string",
"format": "uri",
"description": "The URL of the job posting."
},
"job_description": {
"type": "string",
"description": "The full job description text. Replaces any previously saved description for this application."
}
},
"required": [
"uuid"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"updatedFields": {
"type": "array",
"items": {
"type": "string"
}
},
"appUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"uuid",
"message",
"updatedFields",
"appUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢lookup_h1b_sponsorship(company_name)
Looks up a company by name and returns GigHQ's recorded H1B sponsorship and concurrent H1B flags. Returns unknown when a flag is unavailable. These results describe the data recorded in GigHQ.
Esquema de entrada
{
"type": "object",
"properties": {
"company_name": {
"type": "string",
"description": "The name of the company to look up (e.g., 'Google')."
}
},
"required": [
"company_name"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"company": {
"type": "string"
},
"uuid": {
"type": "string"
},
"h1b_sponsor": {
"type": [
"boolean",
"null"
]
},
"supports_h1b_transfers": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"company",
"uuid",
"h1b_sponsor",
"supports_h1b_transfers"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢check_stale_applications(days)
Returns job applications that haven't had a status update in a configurable number of days, along with a suggested follow-up action for each. Useful for surfacing applications the user may have forgotten about.
Esquema de entrada
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Number of days without a status change before an application is considered stale. Defaults to 14."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"thresholdDays": {
"type": "integer",
"exclusiveMinimum": 0
},
"staleCount": {
"type": "integer",
"minimum": 0
},
"applications": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"company": {
"type": [
"string",
"null"
]
},
"job": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"last_update": {
"type": "string"
},
"days_since_update": {
"type": "integer",
"minimum": 0
},
"suggested_action": {
"type": "string"
}
},
"required": [
"uuid",
"status",
"last_update",
"days_since_update",
"suggested_action"
],
"additionalProperties": false
}
},
"dashboardUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"thresholdDays",
"staleCount",
"applications",
"dashboardUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢weekly_job_search_summary
Generates a weekly job search health summary. Aggregates up to 30 active applications and surfaces status distribution, conversion rates, longest-open applications, pipeline clustering insights, and a suggested focus area for the coming week.
Esquema de entrada
{
"type": "object",
"properties": {}
}Esquema de salida
{
"type": "object",
"properties": {
"summary": {},
"dashboardUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"dashboardUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_job_fit_evidence(application_uuid, career_entry_limit)
Retrieves a saved GigHQ job application, candidate profile data, and the most relevant Career Journal evidence for assessing role fit. Career evidence is ranked by job keywords, competency coverage, evidence quality, recency, and diversity; the default is 20 entries, grouped by competency bucket (career_journal.competency_rollup) to make coverage and gaps easy to spot. This read-only tool supplies evidence and retrieval metadata only. It does not assess the candidate, calculate a fit score, or modify records. If the job description is missing, it returns the application link and a substantive/recent evidence fallback.
Esquema de entrada
{
"type": "object",
"properties": {
"application_uuid": {
"type": "string",
"format": "uuid",
"description": "UUID of the saved GigHQ job application."
},
"career_entry_limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20,
"description": "Maximum Career Journal entries to return (default 20, max 50)."
}
},
"required": [
"application_uuid"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"purpose": {
"type": "string"
},
"application": {},
"candidate": {},
"career_journal": {},
"missing_context": {
"type": "array",
"items": {
"type": "string"
}
},
"fallback_guidance": {
"type": "string"
},
"provenance": {}
},
"required": [
"purpose",
"missing_context"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢prepare_for_interview(application_uuid)
Assembles everything needed to prepare for an interview on a saved GigHQ job application: the job and company context, the candidate's full profile, their Career Journal grouped by role (for STAR/CAR story material), which evidence best matches the role (to emphasize) and which competencies are weakly covered (to address or reframe), and a company briefing (Community Signal, H1B status, size). This read-only tool supplies context only — it does not generate interview questions, write STAR/CAR answers, or assess the candidate.
Esquema de entrada
{
"type": "object",
"properties": {
"application_uuid": {
"type": "string",
"format": "uuid",
"description": "UUID of the saved GigHQ job application to prepare for."
}
},
"required": [
"application_uuid"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"purpose": {
"type": "string"
},
"application": {},
"candidate": {},
"career_journal": {},
"fit_signal": {},
"company_context": {},
"missing_context": {
"type": "array",
"items": {
"type": "string"
}
},
"fallback_guidance": {
"type": "string"
},
"provenance": {}
},
"required": [
"purpose",
"missing_context"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡add_career_entry(title, description, type, experience_id, entry_date, ...)
Saves a new career journal entry to the user's GigHQ profile. Use this to document professional achievements, projects, skills acquired, or reflections tied to a specific role. Entry types: 1 = achievement — a concrete win, result, or impact (default) 2 = project — a specific initiative the user owned or contributed to 3 = skill_acquired — a new skill, tool, or capability gained 4 = reflection — a lesson learned or professional observation Tip: if the user hasn't specified a role, call `list_experiences` first, present the options, and ask which role this entry belongs to. Then pass the confirmed integer ID as `experience_id`. experience_id is optional — entries without one are valid but less useful for resume generation and interview prep, since they can't be linked to a specific role. STAR structure (achievement entries): walk the user through their story in order, one piece at a time — don't interrogate with a checklist — Situation: the context or challenge beforehand Task: what specifically needed to be done or the goal to achieve Action: the concrete steps actually taken Result: the outcome, ideally with (1) scale of action: how much, how many, what scope (team size, users, codebase size, budget, requests/sec, etc.), (2) direct result: the measurable outcome (latency reduced by X%, errors down by Y, shipped Z weeks ahead of schedule), and (3) organizational impact: what that result meant for the business, team, or users (saved $X, unblocked N engineers, contributed to Y% revenue growth) Write `description` as a clearly labeled STAR narrative — "Situation: ... Task: ... Action: ... Result: ..." — rather than one unstructured paragraph. Before calling this tool for an achievement entry, confirm you have all four STAR parts from the user. If the Result's numbers are genuinely unavailable, note that in the description and ask the user to follow up later via update_career_entry. Project entries benefit from the same Result-quantification numbers but don't need the full STAR narrative structure. Put the quantified numbers from Result in the `metrics` field as well — not buried only in the description.
Esquema de entrada
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Short headline summarising the entry (e.g. 'Led migration of payments service to microservices')."
},
"description": {
"type": "string",
"description": "Full narrative in the user's own words. For achievement entries, write it as a labeled STAR narrative — \"Situation: ... Task: ... Action: ... Result: ...\" — not one unstructured paragraph. For other types, capture the what, why, and impact — not bullet points."
},
"type": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"default": 1,
"description": "Entry type: 1=achievement, 2=project, 3=skill_acquired, 4=reflection. Pass an integer or the label string. Defaults to 1."
},
"experience_id": {
"type": "integer",
"description": "Integer ID of the GigHQ experience record (role) this entry belongs to. Use list_career_entries or the gighq://experience resource to find the ID."
},
"entry_date": {
"type": "string",
"description": "ISO 8601 date when this happened, e.g. '2024-03-15'. Defaults to today if omitted."
},
"metrics": {
"type": "string",
"description": "Three-number quantification: (1) scale of action, (2) direct result, (3) organizational impact. E.g. 'Serving 50k daily users [scale] — reduced checkout latency from 2.1s to 0.4s [result] — increased conversion rate by 12%, adding ~$180k ARR [impact]'. For skill_acquired or reflection entries this can be omitted."
},
"tags": {
"type": "string",
"description": "Comma-separated skill or topic tags, e.g. 'TypeScript, system design, stakeholder management'."
}
},
"required": [
"title",
"description"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"profileUrl": {
"type": "string",
"format": "uri"
},
"entry": {},
"updatedFields": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"message",
"profileUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴update_career_entry(uuid, title, description, type, experience_id, ...)
Updates an existing career journal entry. Only the fields provided will be changed — all other fields remain as-is. Use this to refine descriptions, add missing numbers to the metrics field, correct the entry date, or re-type an entry. This is the right tool to backfill quantification on entries saved without a full three-number breakdown (scale of action, direct result, organizational impact).
Esquema de entrada
{
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "UUID of the career entry to update. Returned by add_career_entry or list_career_entries."
},
"title": {
"type": "string",
"description": "Updated headline for the entry."
},
"description": {
"type": "string",
"description": "Updated narrative text."
},
"type": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Updated type: 1=achievement, 2=project, 3=skill_acquired, 4=reflection. Pass an integer or the label string."
},
"experience_id": {
"type": "integer",
"description": "Updated experience (role) ID to attach this entry to."
},
"entry_date": {
"type": "string",
"description": "Updated ISO 8601 date, e.g. '2024-06-01'."
},
"metrics": {
"type": "string",
"description": "Updated quantifiable impact using the three-number rule: (1) scale of action, (2) direct result, (3) organizational impact. Use this to backfill missing numbers on entries that were saved without them."
},
"tags": {
"type": "string",
"description": "Updated comma-separated tags."
}
},
"required": [
"uuid"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"profileUrl": {
"type": "string",
"format": "uri"
},
"entry": {},
"updatedFields": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"message",
"profileUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_career_entries(type, start_date, end_date, take, skip)
Returns the user's career journal entries from GigHQ, newest first. Supports optional filtering by entry type and date range. Use this tool to: - Review what the user has already documented before starting a journaling session - Find entries to update or refine - Identify gaps (roles with few or no entries) - Synthesise entries into resume bullets or interview stories Entry type filter values: 1=achievement, 2=project, 3=skill_acquired, 4=reflection.
Esquema de entrada
{
"type": "object",
"properties": {
"type": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Filter by entry type: 1=achievement, 2=project, 3=skill_acquired, 4=reflection. Omit for all types."
},
"start_date": {
"type": "string",
"description": "ISO 8601 start date to filter entries on or after, e.g. '2024-01-01'."
},
"end_date": {
"type": "string",
"description": "ISO 8601 end date to filter entries on or before, e.g. '2024-12-31'."
},
"take": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25,
"description": "Number of entries to return (default 25, max 100)."
},
"skip": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Number of entries to skip for pagination."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0
},
"returned": {
"type": "integer",
"minimum": 0
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"type": {
"type": [
"string",
"number"
]
},
"title": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"entry_date": {
"type": [
"string",
"null"
]
},
"metrics": {
"type": [
"string",
"null"
]
},
"tags": {
"type": [
"string",
"null"
]
},
"role": {
"type": [
"string",
"null"
]
},
"company": {
"type": [
"string",
"null"
]
},
"experience_id": {
"type": [
"number",
"null"
]
}
},
"required": [
"uuid",
"type",
"entry_date",
"metrics",
"tags",
"role",
"company",
"experience_id"
],
"additionalProperties": false
}
},
"profileUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"total",
"returned",
"entries",
"profileUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴delete_career_entry(uuid)
Permanently deletes a career journal entry by UUID. This action cannot be undone — confirm with the user before calling. Use list_career_entries to find the UUID if you don't have it.
Esquema de entrada
{
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "UUID of the career entry to delete. Returned by add_career_entry or list_career_entries."
}
},
"required": [
"uuid"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"profileUrl": {
"type": "string",
"format": "uri"
},
"entry": {},
"updatedFields": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"message",
"profileUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_career_journal_prompts(session_type)
Returns a set of context-aware reflection questions to guide a career journaling session. Use this at the start of any journaling conversation to orient the discussion. The tool reads the user's GigHQ experience records and existing career entries to tailor the questions — surfacing the most relevant role, estimating tenure, and flagging roles with sparse documentation. Session types: achievement — document a specific win or impact quarterly — end-of-quarter reflection (default) onboarding — first 90 days at a new role wrap-up — leaving a role or wrapping up an internship job-search — actively applying; synthesise story and close gaps
Esquema de entrada
{
"type": "object",
"properties": {
"session_type": {
"type": "string",
"enum": [
"achievement",
"quarterly",
"onboarding",
"wrap-up",
"job-search"
],
"default": "quarterly",
"description": "Type of journaling session. Defaults to 'quarterly'."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"session_type": {
"type": "string"
},
"profile_url": {
"type": "string",
"format": "uri"
},
"instruction": {
"type": "string"
},
"guided_questions": {
"type": "array",
"items": {
"type": "string"
}
},
"user_context": {},
"onboarding_note": {
"type": "string"
},
"gap_note": {
"type": "string"
}
},
"required": [
"session_type",
"profile_url",
"instruction",
"guided_questions"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_experiences
Returns the user's work experience records with their integer IDs. Use this tool BEFORE calling `add_career_entry` or `update_career_entry` to find the correct `experience_id` for the role the entry belongs to. Present the role list to the user and confirm which one they mean before saving. This is the tool-based alternative to the `gighq://experience` resource and works in all contexts including voice mode.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"experiences": {
"type": "array",
"items": {
"type": "object",
"properties": {
"experience_id": {
"type": "integer"
},
"role": {
"type": "string"
},
"company": {
"type": "string"
},
"current": {
"type": "boolean"
},
"start": {
"type": [
"string",
"null"
]
},
"end": {
"type": [
"string",
"null"
]
}
},
"required": [
"experience_id",
"role",
"company",
"current",
"start",
"end"
],
"additionalProperties": false
}
}
},
"required": [
"experiences"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡add_job_application_note(application_id, body, category)
Adds a note to a job application's timeline. Use this to log any touchpoint or interaction — a call, a LinkedIn message, a referral conversation, a networking event, etc. **category is required.** Infer the best-fit category from the note content before calling. Use this mapping: • text_message — contact via SMS/text • email_external — contact via email • call — phone or video call • linkedin_connection_request — sent or received a LinkedIn connection request • linkedin_message — direct message on LinkedIn • coffee_chat — informational interview or coffee chat • in_person_meeting — face-to-face meeting • networking_event — conference, meetup, career fair, or similar event • referral — someone referred the user or made an introduction • other — genuinely doesn't fit any of the above If the category is still ambiguous after reading the note, present the options to the user and ask them to confirm before calling this tool. The application_id is the UUID of the job application — use get_recent_applications or search_job_applications to find it.
Esquema de entrada
{
"type": "object",
"properties": {
"application_id": {
"type": "string",
"description": "UUID of the job application to attach this note to."
},
"body": {
"type": "string",
"maxLength": 3000,
"description": "The note text (plain text or Markdown). Max 3000 characters."
},
"category": {
"type": "string",
"description": "Category tag for the note. Use a slug from the tool description (e.g. 'call', 'in_person_meeting'). Display labels like 'Call' or 'In-Person Meeting' are also accepted."
}
},
"required": [
"application_id",
"body",
"category"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"appUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"message",
"appUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_job_application_notes(application_id)
Use this tool when the user asks about notes on a job application — "do I have any notes", "show me my notes", "what notes do I have", etc. Returns all user-authored notes for a job application ordered by date, including UUID, body text, category, and timestamp. Use the returned UUIDs in follow-up update_job_application_note or delete_job_application_note calls.
Esquema de entrada
{
"type": "object",
"properties": {
"application_id": {
"type": "string",
"description": "UUID of the job application whose notes to retrieve."
}
},
"required": [
"application_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"application_id": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"notes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": [
"string",
"null"
]
},
"body": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"createdAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
}
},
"required": [
"uuid",
"body"
],
"additionalProperties": false
}
},
"appUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"application_id",
"count",
"notes",
"appUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴update_job_application_note(note_uuid, application_id, body, category)
Updates the body or category of an existing job application note. Both body and category are required — the backend replaces the full note on update. If the user only mentions updating the body and doesn't specify a category, infer the best-fit category from the note content using this mapping: • text_message — contact via SMS/text • email_external — contact via email • call — phone or video call • linkedin_connection_request — sent or received a LinkedIn connection request • linkedin_message — direct message on LinkedIn • coffee_chat — informational interview or coffee chat • in_person_meeting — face-to-face meeting • networking_event — conference, meetup, career fair, or similar event • referral — someone referred the user or made an introduction • other — genuinely doesn't fit any of the above If ambiguous, ask the user to confirm before calling. Use list_job_application_notes to retrieve the note UUID if you don't have it.
Esquema de entrada
{
"type": "object",
"properties": {
"note_uuid": {
"type": "string",
"description": "UUID of the note to update. Returned by add_job_application_note or list_job_application_notes."
},
"application_id": {
"type": "string",
"description": "UUID of the job application this note belongs to."
},
"body": {
"type": "string",
"maxLength": 3000,
"description": "Updated note text. Max 3000 characters."
},
"category": {
"type": "string",
"description": "Category tag for the note. Use a slug from the tool description (e.g. 'call', 'in_person_meeting'). Display labels like 'Call' or 'In-Person Meeting' are also accepted."
}
},
"required": [
"note_uuid",
"application_id",
"body",
"category"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"appUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"message",
"appUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴delete_job_application_note(note_uuid, application_id)
Permanently deletes a note from a job application's timeline. This action cannot be undone — confirm with the user before calling. Use list_job_application_notes to find the note UUID if you don't have it.
Esquema de entrada
{
"type": "object",
"properties": {
"note_uuid": {
"type": "string",
"description": "UUID of the note to delete. Returned by add_job_application_note or list_job_application_notes."
},
"application_id": {
"type": "string",
"description": "UUID of the job application this note belongs to."
}
},
"required": [
"note_uuid",
"application_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"appUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"message",
"appUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_contacts(name, status, take, skip)
Searches the user's job-search contacts in GigHQ — recruiters, hiring managers, referrals, and other people they are networking with. Use this tool to: - Find a contact before drafting an outreach or follow-up message - See who the user already knows at a company before an interview or application - Review which contacts are stuck at a given outreach stage Status filter values: not_contacted, reached_out, responded, in_conversation, connected, cold. Contacts are created in the GigHQ app or via the browser extension — this MCP connection cannot create or delete them.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Filter by contact name (case-insensitive substring match)."
},
"status": {
"type": "string",
"enum": [
"not_contacted",
"reached_out",
"responded",
"in_conversation",
"connected",
"cold"
],
"description": "Filter by outreach status."
},
"take": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25,
"description": "Number of contacts to return (default 25, max 100)."
},
"skip": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Number of contacts to skip for pagination."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0
},
"returned": {
"type": "integer",
"minimum": 0
},
"contacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"company": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"linkedin_url": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"uuid",
"name",
"title",
"company",
"status",
"linkedin_url",
"email",
"created_at"
],
"additionalProperties": false
}
},
"contactsUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"total",
"returned",
"contacts",
"contactsUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_contact(contact_id)
Returns full details for one of the user's job-search contacts: profile info, outreach status, linked job applications, and the complete interaction history (calls, LinkedIn messages, coffee chats, etc.). Use this before drafting outreach or follow-up messages so the message reflects what has already been said, and before interviews to remind the user who they know at the company. Find the UUID with `search_contacts`.
Esquema de entrada
{
"type": "object",
"properties": {
"contact_id": {
"type": "string",
"description": "UUID of the contact."
}
},
"required": [
"contact_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"contact": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"company": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"linkedin_url": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"location": {
"type": [
"string",
"null"
]
},
"notes": {
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
},
"job_applications": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"job_title": {
"type": [
"string",
"null"
]
},
"company": {
"type": [
"string",
"null"
]
}
},
"required": [
"uuid",
"job_title",
"company"
],
"additionalProperties": false
}
},
"interactions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"type": {
"type": "string"
},
"body": {
"type": [
"string",
"null"
]
},
"occurred_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"uuid",
"type",
"body",
"occurred_at"
],
"additionalProperties": false
}
}
},
"required": [
"uuid",
"name",
"title",
"company",
"status",
"linkedin_url",
"email",
"created_at",
"phone",
"location",
"notes",
"source",
"job_applications",
"interactions"
],
"additionalProperties": false
},
"contactUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"contact",
"contactUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡update_contact_status(contact_id, status)
Updates a contact's outreach status in GigHQ. A status-change entry is automatically logged in the contact's interaction history. Status progression: not_contacted → reached_out → responded → in_conversation → connected. Use 'cold' when the thread has gone quiet. Find the contact's UUID with `search_contacts`.
Esquema de entrada
{
"type": "object",
"properties": {
"contact_id": {
"type": "string",
"description": "UUID of the contact."
},
"status": {
"type": "string",
"enum": [
"not_contacted",
"reached_out",
"responded",
"in_conversation",
"connected",
"cold"
],
"description": "New outreach status."
}
},
"required": [
"contact_id",
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"contactUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"message",
"contactUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡add_contact_interaction(contact_id, type, body, occurred_at)
Logs a touchpoint with one of the user's job-search contacts — a call, a LinkedIn message, a coffee chat, a referral conversation, etc. The entry appears in the contact's interaction timeline in GigHQ. **type is required.** Infer the best-fit type from what happened: • text_message — SMS/text • email_external — email • call — phone or video call • linkedin_connection_request — sent or accepted a connection request • linkedin_message — direct message on LinkedIn • coffee_chat — informational interview or coffee chat • in_person_meeting — face-to-face meeting • networking_event — conference, meetup, career fair • referral — the contact referred the user or made an introduction • other — anything else Find the contact's UUID with `search_contacts`.
Esquema de entrada
{
"type": "object",
"properties": {
"contact_id": {
"type": "string",
"description": "UUID of the contact."
},
"type": {
"type": "string",
"enum": [
"text_message",
"email_external",
"call",
"linkedin_connection_request",
"linkedin_message",
"coffee_chat",
"in_person_meeting",
"networking_event",
"referral",
"other"
],
"description": "Kind of interaction being logged."
},
"body": {
"type": "string",
"maxLength": 3000,
"description": "Short note about the interaction — what was discussed or sent. Max 3000 characters."
},
"occurred_at": {
"type": "string",
"description": "ISO 8601 date the interaction happened, e.g. '2026-07-10'. Defaults to now."
}
},
"required": [
"contact_id",
"type",
"body"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"message": {
"type": "string"
},
"contactUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"message",
"contactUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_career_compass
Retrieves the user's saved CareerCompass data: professional objectives, positioning statement, categorized skills (technical/soft/management/other), and target market (industries, company size, geographic location). Cheap read — prefer this over generate_career_compass whenever the user just wants to review what's already saved.
Esquema de entrada
{
"type": "object",
"properties": {}
}Esquema de salida
{
"type": "object",
"properties": {
"career_stage": {
"type": [
"string",
"null"
]
},
"career_switch_type": {
"type": [
"string",
"null"
]
},
"target_industry": {
"type": [
"string",
"null"
]
},
"target_role": {
"type": [
"string",
"null"
]
},
"professional_objectives": {
"type": [
"string",
"null"
]
},
"objective_suggestions": {
"type": "array",
"items": {
"type": "string"
}
},
"positioning_statement": {
"type": [
"string",
"null"
]
},
"technical_skills": {
"type": "array",
"items": {
"type": "string"
}
},
"soft_skills": {
"type": "array",
"items": {
"type": "string"
}
},
"management_skills": {
"type": "array",
"items": {
"type": "string"
}
},
"other_skills": {
"type": "array",
"items": {
"type": "string"
}
},
"target_industries": {
"type": "array",
"items": {
"type": "string"
}
},
"company_size": {
"type": "array",
"items": {
"type": "string"
}
},
"geographic_location": {
"type": "array",
"items": {
"type": "string"
}
},
"target_job_titles": {
"type": "array",
"items": {
"type": "string"
}
},
"is_saved": {
"type": "boolean"
}
},
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢generate_career_compass(career_stage, career_switch_details)
Runs GigHQ's CareerCompass AI pipeline against the user's resume data to generate 3 candidate professional objective statements, a positioning statement, categorized skills, and a suggested target market (industries, company sizes, geographic locations). This is an EXPENSIVE, one-time 'career strategy' action (4 parallel AI completions server-side) — not a cheap or repeatable lookup. Prefer get_career_compass first to check for existing saved data. Nothing is persisted by this call; use save_career_compass afterward, and only with the user's explicit review and authorization.
Esquema de entrada
{
"type": "object",
"properties": {
"career_stage": {
"type": "string",
"enum": [
"Career Starter",
"Career Advancer",
"Career Switcher"
],
"description": "The user's career stage, if known. Omit if not established in the conversation."
},
"career_switch_details": {
"type": "object",
"properties": {
"switch_type": {
"type": "string",
"description": "How the user is switching careers, e.g. 'industry change' or 'role change'."
},
"target_industry": {
"type": "string",
"description": "Industry the user wants to move into."
},
"target_role": {
"type": "string",
"description": "Role the user wants to move into."
}
},
"additionalProperties": false,
"description": "Required for useful output when career_stage is 'Career Switcher'."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"purpose": {
"type": "string"
},
"objectives": {
"type": "array",
"items": {
"type": "string"
}
},
"objective_suggestions": {
"type": "array",
"items": {
"type": "string"
}
},
"positioning_statement": {
"type": "string"
},
"skills": {},
"target_market": {}
},
"required": [
"purpose",
"objectives",
"positioning_statement"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴save_career_compass(professional_objectives, positioning_statement, technical_skills, soft_skills, management_skills, ...)
Persists CareerCompass data to the user's GigHQ profile. This REPLACES the full saved record — any array field you omit (technical_skills, soft_skills, management_skills, target_industries, company_size, geographic_location, other_skills) is saved as empty, not left unchanged. Call get_career_compass first and pass through every field the user isn't changing. Only call this after the user has reviewed the content (e.g. from generate_career_compass) and explicitly authorized saving it.
Esquema de entrada
{
"type": "object",
"properties": {
"professional_objectives": {
"type": "string",
"description": "The chosen professional objective statement."
},
"positioning_statement": {
"type": "string",
"description": "The chosen positioning statement."
},
"technical_skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "Technical skills. Omitting this clears any previously saved technical skills."
},
"soft_skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "Soft skills. Omitting this clears any previously saved soft skills."
},
"management_skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "Management skills. Omitting this clears any previously saved management skills."
},
"other_skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "Other skills. Omitting this clears any previously saved other skills."
},
"target_industries": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target industries. Omitting this clears any previously saved target industries."
},
"company_size": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target company sizes. Omitting this clears any previously saved company sizes."
},
"geographic_location": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target geographic locations. Omitting this clears any previously saved locations."
},
"career_stage": {
"type": "string",
"enum": [
"Career Starter",
"Career Advancer",
"Career Switcher"
]
},
"career_switch_type": {
"type": "string"
},
"target_industry": {
"type": "string",
"description": "Single primary target industry, distinct from the target_industries list."
},
"target_role": {
"type": "string",
"description": "Single primary target role."
},
"is_complete": {
"type": "boolean",
"description": "Defaults to true server-side. Pass false only for an explicit partial/in-progress save."
},
"progress_step": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "Wizard step reached, for an in-progress save (is_complete: false)."
},
"objective_suggestions": {
"type": "array",
"items": {
"type": "string"
},
"description": "The AI-generated objective candidates shown to the user, so a resumed session can show the same options."
},
"target_job_titles": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"description": "Up to 5 target job titles."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"profileUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"message",
"profileUrl"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢recommend_target_roles(industry_preference, seniority, open_to_pivot, location_preference)
Assembles the user's profile, experience, career journal evidence (with a broad competency rollup), and saved CareerCompass data (if any) for recommending role titles to target. This is the inverse of get_job_fit_evidence: instead of evaluating fit for one specific job, it starts from the candidate's profile. Role taxonomy only — it does NOT validate recommendations against live job-market demand or hiring volume; that is future work. This read-only tool assembles context only; the client model produces the tiered (Strong fit / Stretch / Not recommended) recommendation.
Esquema de entrada
{
"type": "object",
"properties": {
"industry_preference": {
"type": "string",
"description": "Industry the user wants to target, if stated."
},
"seniority": {
"type": "string",
"description": "Seniority level the user is targeting, if stated."
},
"open_to_pivot": {
"type": "boolean",
"description": "Whether the user is open to a role/industry pivot, if stated."
},
"location_preference": {
"type": "string",
"description": "Remote/hybrid/location preference, if stated."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"purpose": {
"type": "string"
},
"candidate": {},
"career_compass": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"competency_rollup": {},
"missing_context": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {}
},
"required": [
"purpose",
"missing_context"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia