Skip to content

Latest commit

 

History

History
24 lines (20 loc) · 2.03 KB

File metadata and controls

24 lines (20 loc) · 2.03 KB

Pathwise — Agent Guide

Commands

# Run the MCP server
cd /path/to/pathwise && python server.py

# Test server with tools/list
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}\n{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}\n{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}\n' | python server.py

Critical Quirks

  • FastMCP stdio transport — Requires proper initialize handshake before tools/list calls.
  • Profile auto-seeded — On first run, a default profile with Jonatthan's data is created.
  • 24 tools total — Profile (5), Jobs (2), Applications (7), Cover Letters (2), CV (1), Auto-Apply (5), Status (1), Linkedin Search/Scroll (2).
  • RouteMCP dependency — AI features (cover letters, persona generation, AI CV parsing, AI job matching) require RouteMCP running. ROUTEMCP_ENABLED env var controls this.
  • BrowserMCP dependencylinkedin_search, auto_apply_pipeline, fill_application_field, click_application_button require BrowserMCP with Selenium engine (Chromium via snap).
  • 7 job scrapers — ChileTrabajos, CompuTrabajo, Laborum, Indeed, GetOnBoard, Trabajando.cl, RemoteOK. All async httpx+bs4 except Laborum which uses JSON API with JWT auth. May break if job board HTML changes.
  • AI matchingjob_search(use_ai=True) sends top 15 jobs to RouteMCP for smart scoring (0-100) with reasons.
  • LinkedIn — Uses BrowserMCP+Selenium subprocess to navigate LinkedIn Jobs. LinkedIn may show login wall; try linkedin_scroll to load more.
  • Database — SQLite with WAL mode at pathwise.db. Auto-created on first run with seeded profile.
  • camelCase conversiondatabase/repos/profiles.py converts snake_case DB columns to camelCase.
  • Auto-apply pipelineauto_apply_pipeline generates cover letter, navigates to form, tracks application. Use fill_application_field + click_application_button for each page of the form.