Forge MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Forge MCP hunt jobs and show hot leads"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Forge MCP — freelance pipeline operations
Version: 1.0.0
Quality gate: .\make.ps1 (black, ruff, mypy, pytest cov≥90%, Martin limits)
Forge hunts public, ToS-safe job APIs, ranks listings by capability match and money heat, pushes HOT cards (Telegram + local digest), and tracks the pipeline from NEW → paid. Client pitches stay in the listing language; operator briefs are in Russian.
What is in scope / out of scope
In scope | Out of scope |
RemoteOK, Remotive, Himalayas, Arbeitnow(+UK), Jobicy, HN Who's Hiring | Upwork / Freelancer.com scraping |
Manual | Auto-apply without a human |
Telegram buttons + rituals | Secret logging / token echo |
Related MCP server: Escrow Sentinel
Install
pip install -e ".[dev]"
copy .env.example .env # fill BOT_TOKEN + CHAT_ID
.\make.ps1 # must exit 0CLIs: forge-hunt, forge-telegram-bot, forge-morning, forge-evening, forge-mcp.
Configuration
Secrets and knobs live in .env (gitignored). See .env.example.
Variable | Role |
| Telegram (aliases → |
| Strict contract/freelance HOT gate |
| One killer offer + floor |
| Optional case link appended to SHORT |
| Manual board deprioritization |
| Storage / digest overrides |
Operations (money loop)
set_watchlist([...])— narrow magnetsforge-huntevery ~30m — HOT + Telegram buttonsCopy PITCH → send → Proposed (target <15 min NEW→proposed)
forge-morning/forge-evening— queue + follow-ups + board pauseWon +
log_win_reason→ learning / A/B / packages
Windows schedules: scripts\schedule_hunt.ps1, schedule_rituals.ps1, schedule_bot.ps1
(scripts resolve project root from their own location).
MCP
{
"mcpServers": {
"forge": {
"command": "python",
"args": ["-m", "forge.presentation.mcp_server"]
}
}
}Core tools: hunt_jobs, act_now, morning_digest, evening_followup,
draft_proposal, brief_lead, rate_advice, check_red_flags,
follow_ups, sla_status, chase_leads, package_prices,
pause_weak_boards, platform_roi, board_advice, win_journal,
log_win_reason, pitch_ab_stats, set_watchlist, pipeline_status,
earnings_summary, capture_lead, scan_for_leads, hot_leads.
Architecture
src/forge/
entities/ # Lead FSM, match, heat, gates, pricing, i18n
use_cases/ # hunt, rituals, pipeline, learning, act-now
interfaces/ # ports (repos, sources, notifier)
infrastructure/ # SQLite, HTTP boards, Telegram, .env loader
presentation/ # MCP + CLIs + composition rootClean architecture: use cases depend on ports; composition wires adapters.
Persistence: SQLite (~/.forge/forge.db by default) with additive migrations.
Quality / acceptance
See docs/ACCEPTANCE.md. Summary:
.\make.ps1exits 0≥90% line coverage on
forge(CLIs/MCP omitted by design)No secrets in repo; Telegram errors redacted
Martin limits: file ≤300 lines, fn ≤25 lines, ≤4 args, CC≤10, nesting≤3
License
MIT — see LICENSE.
Available Tools
31 toolsact_nowC
Priority queue of NEW leads (payability + age + rate).
Inputs: limit. Returns: result
add_capabilityC
Add a reusable capability asset for future matching.
Inputs: name (required), keywords (required), description (required), proposal_snippet (required). Returns: result
board_adviceC
Deprioritize boards with paid=0 and enough leads.
Inputs: no named parameters. Returns: result
brief_leadC
Explain a vacancy in clear Russian.
Inputs: lead_id (required). Returns: result
capture_leadC
Track a job lead. Dedupes by URL and title fingerprint.
Inputs: title (required), platform (required), description (required), source_url. Returns: result
chase_leadsC
NEW leads past SLA — propose these first.
Inputs: stale_after_hours. Returns: result
check_red_flagsC
Red-flag checklist before you propose.
Inputs: lead_id (required). Returns: result
draft_proposalC
SHORT + FULL pitches with i18n opener, A/B variant, anchor price.
Inputs: lead_id (required). Returns: result
earnings_summaryB
Show total won, paid, and outstanding amounts.
Inputs: no named parameters. Returns: result
evening_followupC
Evening: SLA + proposed pings + board pause advice.
Inputs: no named parameters. Returns: result
follow_upsD
Proposed leads silent too long — copy the EN ping.
Inputs: after_hours. Returns: result
hot_leadsA
List fresh (status=new) leads waiting for your proposal.
Inputs: no named parameters. Returns: result
hunt_jobsD
Hunt boards; push freelance-only HOT with RU brief + EN short pitch.
Inputs: min_heat. Returns: result
list_outreachB
List pending outreach drafts.
Inputs: no named parameters. Returns: result
log_win_reasonC
Win journal: one phrase why the client chose you.
Inputs: reason (required), lead_id (required). Returns: result
morning_digestC
Push top NEW with RU brief + SHORT EN (Telegram buttons).
Inputs: no named parameters. Returns: result
package_pricesC
Discovery / milestone / retainer from average won + anchor.
Inputs: no named parameters. Returns: result
pause_weak_boardsB
Auto-pause boards with paid=0 and enough leads.
Inputs: no named parameters. Returns: result
pipeline_statusB
Show pipeline counts and win rate.
Inputs: no named parameters. Returns: result
pitch_ab_statsB
A/B win rates for short vs full pitches.
Inputs: no named parameters. Returns: result
platform_roiB
Show which job boards actually convert to paid work.
Inputs: no named parameters. Returns: result
queue_outreachC
Queue Merchant/MCP outreach draft → Telegram Send/Skip buttons.
Inputs: email (required), company (required), angle. Returns: result
rate_adviceD
Your avg won vs listing budget mid.
Inputs: lead_id (required). Returns: result
record_paymentC
Record that you've actually been paid for a lead.
Inputs: amount (required), lead_id (required). Returns: result
record_won_amountC
Record the agreed price once you win a lead.
Inputs: amount (required), lead_id (required). Returns: result
scan_for_leadsB
Scan public job boards and auto-track capability matches.
Inputs: no named parameters. Returns: result
set_watchlistC
Set personal hunt keywords (money magnets).
Inputs: keywords (required). Returns: result
sla_statusC
SLA: burning NEW leads and proposed needing a 48h ping.
Inputs: no named parameters. Returns: result
suggest_capabilitiesC
Rank your capability assets by relevance to a lead.
Inputs: lead_id (required). Returns: result
update_lead_statusC
Move a lead through the pipeline; wins feed learned magnets.
Inputs: status (required), lead_id (required). Returns: result
win_journalC
Recent wins with amounts, pitch variant, and reasons.
Inputs: no named parameters. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 31 tools
Several tool clusters overlap heavily: act_now/hot_leads/chase_leads all surface fresh NEW leads to act on, scan_for_leads/hunt_jobs both scan boards for leads, and pause_weak_boards/board_advice both deprioritize paid=0 boards. Descriptions hint at nuances (age, SLA, push vs track) but an agent could easily misselect within these pairs.
Casing is consistently snake_case, but the verb/noun pattern is mixed: some tools are verb_noun (capture_lead, record_payment, draft_proposal) while many others are bare noun phrases (pipeline_status, hot_leads, follow_ups, win_journal, rate_advice). Readable but not a predictable convention.
31 tools is heavy for a lead-hunting/pipeline server, and the count is inflated by overlapping capabilities (multiple lead-surfacing, board-advice, and outreach tools) rather than distinct operations. Bloat suggests several tools could be merged or parameterized.
The lifecycle is well covered: capture/scan leads, qualify (red flags, pricing, rate advice), outreach/proposals, pipeline status, payments, board ROI, and win analytics. Only minor gaps (e.g., no explicit lead delete/archive or contact management) that agents can work around.
Maintenance
Related MCP Connectors
Free live multi-ATS + HN job search. Comp & hiring-signal depth metered via x402/USDC. Hosted MCP.
A CRM you talk to: leads, deals and a pipeline board inside ChatGPT, Grok and other MCP clients.
Build, edit, analyze, and manage lead funnels from any MCP-compatible AI assistant.
AI deal pipeline for IT freelancers in DACH: analyze, list and manage project inquiries.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables MCP clients to search and manage Freelancehunt projects, bids, profiles, reviews, messages, and workspaces, with local filtering by keywords, budget, bid count, and employer quality.31MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover Gibwork bounties, verify their Solana escrow accounts on-chain, rank opportunities by value, competition and deadline, diff captures over time, and export Markdown/CSV/JSON reports through four read-only MCP tools requiring no wallet or API key.MIT
- AlicenseNot gradedqualityBmaintenanceEnables tracking a job-search pipeline through MCP tools, a resource, and a prompt, providing stale-application alerts, weekly reviews, and gated follow-up drafting with human approval.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search multilingual freelance listings, post and manage offers, send messages, and negotiate deals with human approval via Telegram.MIT