Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
JHO_DATANoOverride the data root directory (default `~/job-hunting-organizer-data/`)
LLM_TAGSNoComma-separated `key=value` tags sent on every LLM call (e.g. `user=jho`). Some providers (notably Nous Research's inference gateway) require a `user=<value>` tag or return `400 missing tags`. `jho` ships with a default `user=jho` tag so this is handled automatically for Nous; override it here if you need a different value.
NO_COLORNoSet to disable ANSI colour output in terminal output
LLM_MODELNoOverride the model from `config.json`
JHO_CV_PATHNoPre-fill the CV path during `jho init`
LLM_API_KEYNoOverride the API key from `config.json`
JHO_LOG_FILENoOverride the log file path (default `<config-home>/jho.log`); set to any falsy value via `logging.disableFileLogging` in `config.json` to suppress file logging
LLM_BASE_URLNoOverride the LLM endpoint base URL from `config.json`
JHO_LOG_LEVELNoOverride the minimum log level written to file
JHO_CONFIG_HOMENoOverride the config home directory (default `~/.job-hunting-organizer/`)
JHO_LINKEDIN_URLNoPre-fill the LinkedIn profile URL during `jho init`
JHO_URL_PATTERNSNoJSON array of `{ name, pattern, group }` URL-pattern objects used to extract job IDs from job ad URLs; tried before the built-in Seek/LinkedIn/Indeed patterns
JHO_DEFAULT_CAMPAIGNNoDefault campaign name when `--campaign` is omitted (default `default`)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_applicationsC

List applications with optional status, tags, role, employment type, and text filters

show_applicationB

Show a single application: metadata (meta.md) and job description (jd.md)

list_interviewsB

List all interviews for an application

read_profileB

Read the candidate profile for a campaign

get_statsA

Compute campaign statistics: counts by status, role, site, employment type, funnel, interview entries, and this-month delta

get_rootB

Resolve the campaign root directory path

get_campaignC

Get campaign configuration (secrets redacted)

list_campaignsB

List all campaigns under the data root

ownershipA

Show file ownership rules (which files the tool writes, which you can edit). Returns a human-readable markdown table, not JSON.

doctorA

Diagnose campaign or application issues (missing files, invalid frontmatter, toolhash mismatches)

repairC

Repair application toolhash sidecars, rebuild index and counters

track_applicationB

Track a job application — create from URL or update by slug

add_interviewC

Add a new interview entry for an application

mark_interviewC

Change the status of an existing interview

update_profileB

Overwrite the campaign profile.md with new markdown content

update_configC

Update global configuration settings

initC

Initialize a new campaign with optional CV, GitHub, and LinkedIn

post_mortemC

Generate a post-mortem learning plan for an application

append_retroC

Append additional weak topics and notes to an existing retro

cover_letterC

Generate a tailored cover letter for an application

read_cover_letterB

Read an existing saved cover letter for an application

answer_questionB

Answer a question for an application and append it to qa.md

extract_jdC

Extract structured job description from a URL or raw text

prepareA

Generate or add topics to a pre-interview prep plan. Provide topics to append to an existing plan (steer/days ignored in this mode).

aggregate_retrosC

Aggregate weak topics across all application retro files for a campaign

read_configA

Read global configuration (secrets redacted)

read_logsB

Read the log file with optional filtering (tail, level, JSON format)

read_retroC

Read an existing retro/learning plan for an application

read_prepC

Read an existing pre-interview prep plan for an application

read_qaC

Read existing Q&A entries for an application

remove_applicationB

Permanently remove an application folder — cleans metadata, index, and sidecars

rename_applicationC

Rename an application folder

remove_campaignB

Permanently remove a campaign folder — destructive, cannot be undone

rename_campaignC

Rename a campaign folder

read_campaign_configB

Read campaign configuration (redacted)

kb_addB

Copy knowledge-base docs (PDF, DOCX, MD, TXT) into the campaign

kb_updateC

Re-sync the knowledge base from sources recorded at init

Prompts

Interactive templates invoked by user choice

NameDescription
cover_letterGenerate a tailored cover letter for an application
interviewGenerate a pre-interview prep plan for an application
answerAnswer a question for an application
extract_jdExtract structured job description from a URL or raw text
retroGenerate a post-mortem learning plan for an application

Resources

Contextual data attached and managed by the client

NameDescription
configGlobal configuration

TDQS

B3/5.0

Scored across 37 tools

Disambiguation3/5

Most tools target distinct resources or actions, but get_campaign and read_campaign_config are near-duplicate config readers, and prepare/read_prep plus the retro family create some boundary questions. Descriptions usually clarify, but the config overlap is an avoidable ambiguity.

Naming Consistency3/5

All names use snake_case, but verb conventions are mixed: read_/list_/get_/add_/update_/remove_ coexist with noun-only names like cover_letter, post_mortem, ownership, doctor, repair, and init. Readable overall, but not a predictable verb_noun pattern.

Tool Count2/5

37 tools is heavy for a job-hunting organizer; many administrative, diagnostic, and document-generation tools could likely be consolidated. This exceeds the 25-tool threshold and feels overgrown rather than well-scoped.

Completeness4/5

The surface covers campaigns, applications, interviews, profile, Q&A, prep, retro, cover letters, knowledge base, config, logs, stats, and repair. Some lifecycle gaps exist, such as deleting or editing interviews and generated documents, but core workflows are well represented.

Maintenance

ActivityNo data
ResponsivenessUnresponsive