llmconveyors-mcp
Provides specialized tools for importing and exporting resume data in the Reactive Resume format, enabling seamless interoperability with the Reactive Resume platform.
llmconveyors-mcp
MCP server that connects AI agents to the LLM Conveyors platform — run Job Hunter, B2B Sales, and other AI agents directly from Claude, Cursor, or any MCP-compatible client.
What is LLM Conveyors?
A community-driven AI agent platform with pay-per-action pricing ($1–5 per completed action). Instead of $100/mo SaaS subscriptions, you pay only for real outputs — a resume scored, a company researched, a cold email generated.
Live Agents:
Job Hunter — Tailored CVs, cover letters, and cold emails for job applications
B2B Sales — Deep company research and personalized sales outreach
Related MCP server: boss-agent-cli
Quick Start
1. Get an API key
Sign up at llmconveyors.com and create an API key from Settings → API Keys.
2. Add to your MCP client
Add to claude_desktop_config.json:
{
"mcpServers": {
"llmconveyors": {
"command": "npx",
"args": ["-y", "llmconveyors-mcp"],
"env": {
"LLMC_API_KEY": "llmc_your_key_here"
}
}
}
}claude mcp add llmconveyors -- npx -y llmconveyors-mcpSet the env var in your shell or .env:
export LLMC_API_KEY=llmc_your_key_hereAdd to .cursor/mcp.json:
{
"mcpServers": {
"llmconveyors": {
"command": "npx",
"args": ["-y", "llmconveyors-mcp"],
"env": {
"LLMC_API_KEY": "llmc_your_key_here"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"llmconveyors": {
"command": "npx",
"args": ["-y", "llmconveyors-mcp"],
"env": {
"LLMC_API_KEY": "llmc_your_key_here"
}
}
}
}3. Start using it
Ask your AI agent:
"Run the Job Hunter agent for the Senior Engineer role at Anthropic. Here's the job description: ..."
"Score my resume against this job posting for ATS compatibility."
"Research Stripe and draft a B2B cold email for our developer tools product."
Available Tools (66)
Agents
Tool | Description |
| Run the Job Hunter agent — generates tailored CV, cover letter, and cold email |
| Run the B2B Sales agent — researches a company and generates sales outreach |
| Check the status of a running agent job |
| Submit a response to a phased agent workflow awaiting input |
| Generate a CV synchronously (faster, CV only) |
| Get input fields, capabilities, and billing info for an agent |
Resume
Tool | Description |
| Parse a resume file into structured JSON Resume format |
| Validate a resume in JSON Resume format |
| Render a resume to PDF or HTML |
| Preview a resume as HTML |
| List available resume themes |
| Import from Reactive Resume format |
| Export to Reactive Resume format |
Master Resumes
Tool | Description |
| Create a new master resume |
| List all master resumes |
| Get a master resume by ID |
| Update a master resume |
| Delete a master resume |
Upload & Parse
Tool | Description |
| Upload and parse a resume file (base64) |
| Upload and parse a job description file (base64) |
| Parse a job description from text or URL |
ATS Scoring
Tool | Description |
| Score a resume against a job description for ATS compatibility |
Sessions
Tool | Description |
| Create a new session |
| List sessions with optional filtering |
| Get a session by ID |
| Get full session with artifacts and logs |
| Download an artifact from a session by storage key |
| Delete a session |
| Initialize a session with agent context and configuration |
| Append a log entry to a session |
Settings & API Keys
Tool | Description |
| Get user profile (credits, plan) |
| Get user preferences |
| Update user preferences |
| Get usage summary |
| Get paginated usage logs |
| Create a new API key |
| List all API keys |
| Revoke an API key |
| Rotate an API key |
| Get usage statistics for a specific API key |
| Check if a Bring Your Own API key is configured |
| Set a BYO API key for a provider (e.g. Gemini) |
| Remove the configured BYO API key |
| Get the current webhook secret |
| Rotate the webhook secret |
Content & Sharing
Tool | Description |
| Save a source document for AI generation context |
| Delete a generation and its artifacts |
| Research a sender's background for personalized content |
| List all saved source documents |
| Get a specific source document by ID |
| Delete a saved source document |
| Create a public share link for generated content |
| Get share link statistics |
| Get a public share by slug |
| Get visit statistics for a specific share link |
Privacy
Tool | Description |
| List all consent records for the current user |
| Grant consent for a specific data processing purpose |
| Revoke a previously granted consent |
Referral
Tool | Description |
| Get referral program statistics |
| Get your referral code |
| Set a custom vanity referral code |
Documents
Tool | Description |
| Download an artifact by storage path |
Health
Tool | Description |
| Get server info and version |
| Run a full health check on all dependencies |
| Check if the server is ready to accept requests |
| Check if the server process is alive |
API Key Scopes
Your API key needs the right scopes for the tools you want to use:
Scope | Tools |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Environment Variables
Variable | Required | Description |
| Yes | Your LLM Conveyors API key (prefix |
| No | Custom API endpoint (defaults to |
Development
git clone https://github.com/ebenezer-isaac/llmconveyors-mcp.git
cd llmconveyors-mcp
npm install
npm run build
# Test locally
LLMC_API_KEY=llmc_your_key node dist/index.jsRequirements
Node.js >= 18
An LLM Conveyors API key (get one here)
Links
License
MIT — see LICENSE for details.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
54 tool updates
v0.1.1- Added
agent-interact - Changed
agent-status1 field changed- added
Input schema / properties / includeAdded value: +{ + "description": "Data to include. Defaults to both logs and artifacts. Omit for lightweight status checks.", + "items": { + "enum": [ + "logs", + "artifacts" + ], + "type": "string" + }, + "type": "array" +}
- Changed
api-key-create4 fields changed- added
Input schema / properties / expiresAtAdded value: +{ + "description": "Expiration date as ISO 8601 string", + "type": "string" +} - added
Input schema / properties / monthlyCreditsLimitAdded value: +{ + "description": "Monthly credit usage cap for this key", + "type": "number" +} - changed
Input schema / properties / scopes / descriptionPrevious value: -"Permission scopes for the key"New value: +"Permission scopes for the key. Use '*' for all scopes." - changed
Input schema / properties / scopes / items / enumPrevious value: -[ - "jobs:write", - "jobs:read", - "sales:write", - "sales:read", - "sessions:read", - "sessions:write", - "settings:read", - "settings:write", - "upload:write", - "resume:read", - "resume:write", - "ats:write", - "webhook:read", - "webhook:write" -]New value: +[ + "*", + "jobs:write", + "jobs:read", + "sales:write", + "sales:read", + "sessions:read", + "sessions:write", + "settings:read", + "settings:write", + "upload:write", + "resume:read", + "resume:write", + "ats:write", + "webhook:read", + "webhook:write", + "outreach:read", + "outreach:write" +]
- Removed
api-key-revoke - Changed
api-key-rotate1 field changed- added
Input schema / properties / gracePeriodHoursAdded value: +{ + "description": "Hours the old key remains valid after rotation (default: 24)", + "type": "number" +}
- Added
api-key-usage - Changed
ats-score1 field changed- added
Input schema / properties / jobTitleAdded value: +{ + "description": "Job title for additional context", + "type": "string" +}
- Changed
b2b-sales-run20 fields changed- added
Input schema / properties / autoApproveDraftAdded value: +{ + "description": "Set false to pause for draft review before finalizing", + "type": "boolean" +} - added
Input schema / properties / autoApproveFollowupsAdded value: +{ + "description": "Set false to pause for follow-up review before finalizing", + "type": "boolean" +} - added
Input schema / properties / autoSelectContactsAdded value: +{ + "description": "Set false for phased execution with contact selection gate", + "type": "boolean" +} - added
Input schema / properties / companyResearchAdded value: +{ + "description": "Pre-researched company information to skip research phase", + "type": "string" +} - added
Input schema / properties / contactEmailAdded value: +{ + "description": "Target contact email address", + "type": "string" +} - added
Input schema / properties / contactNameAdded value: +{ + "description": "Target contact name", + "type": "string" +} - added
Input schema / properties / contactTitleAdded value: +{ + "description": "Target contact job title", + "type": "string" +} - added
Input schema / properties / followUpCountAdded value: +{ + "description": "Number of follow-up emails to generate", + "type": "number" +} - added
Input schema / properties / followUpDelayDaysAdded value: +{ + "description": "Days between follow-up emails", + "type": "number" +} - added
Input schema / properties / generationIdAdded value: +{ + "description": "Existing generation ID to continue", + "type": "string" +} - added
Input schema / properties / modelAdded value: +{ + "description": "AI model: flash (faster/cheaper) or pro (higher quality)", + "enum": [ + "flash", + "pro" + ], + "type": "string" +} - added
Input schema / properties / reconStrategyAdded value: +{ + "description": "Strategy instructions for company research/recon phase", + "type": "string" +} - added
Input schema / properties / researchModeAdded value: +{ + "description": "Research execution mode: parallel (faster) or sequential", + "enum": [ + "parallel", + "sequential" + ], + "type": "string" +} - added
Input schema / properties / salesStrategyAdded value: +{ + "description": "Sales strategy to use for outreach generation", + "type": "string" +} - added
Input schema / properties / senderNameAdded value: +{ + "description": "Name of the person sending the outreach", + "type": "string" +} - added
Input schema / properties / sessionIdAdded value: +{ + "description": "Existing session ID to continue a previous run", + "type": "string" +} - added
Input schema / properties / skipResearchCacheAdded value: +{ + "description": "Force fresh company research instead of using cache", + "type": "boolean" +} - removed
Input schema / properties / strategyRemoved value: -{ - "description": "Sales strategy or approach", - "type": "string" -} - added
Input schema / properties / targetCompanyContextAdded value: +{ + "description": "Pre-researched context about the target company", + "type": "string" +} - added
Input schema / properties / userCompanyContextAdded value: +{ + "description": "Context about your own company for personalization", + "type": "string" +}
- Added
byo-key-get - Added
byo-key-remove - Added
byo-key-set - Added
content-delete-source - Added
content-get-source - Added
content-list-sources - Added
content-research-sender - Removed
content-save - Added
health-check - Added
health-live - Added
health-ready - Added
health-root - Added
job-hunter-generate-cv - Changed
job-hunter-run23 fields changed- added
Input schema / properties / autoSelectContactsAdded value: +{ + "description": "Set false for phased execution with contact selection gate. Default true for API keys.", + "type": "boolean" +} - added
Input schema / properties / coldEmailStrategyAdded value: +{ + "description": "Strategy instructions for cold email generation", + "type": "string" +} - added
Input schema / properties / companyProfileAdded value: +{ + "description": "Pre-researched company profile to skip research phase", + "type": "string" +} - added
Input schema / properties / companyWebsiteAdded value: +{ + "description": "Target company website URL for research phase", + "type": "string" +} - added
Input schema / properties / contactTitleAdded value: +{ + "description": "Contact job title", + "type": "string" +} - added
Input schema / properties / coverLetterStrategyAdded value: +{ + "description": "Strategy instructions for cover letter generation", + "type": "string" +} - added
Input schema / properties / cvStrategyAdded value: +{ + "description": "Strategy instructions for CV generation", + "type": "string" +} - added
Input schema / properties / emailAddressesAdded value: +{ + "description": "Comma-separated email addresses for outreach", + "type": "string" +} - added
Input schema / properties / extensiveCVAdded value: +{ + "description": "Extended/detailed CV text for richer generation", + "type": "string" +} - added
Input schema / properties / generationIdAdded value: +{ + "description": "Existing generation ID to continue", + "type": "string" +} - added
Input schema / properties / genericEmailAdded value: +{ + "description": "Generic company email (e.g. careers@company.com) as fallback", + "type": "string" +} - added
Input schema / properties / jobSourceUrlAdded value: +{ + "description": "URL of the original job posting", + "type": "string" +} - added
Input schema / properties / modelAdded value: +{ + "description": "AI model: flash (faster/cheaper) or pro (higher quality)", + "enum": [ + "flash", + "pro" + ], + "type": "string" +} - added
Input schema / properties / originalCVAdded value: +{ + "description": "Original CV text to use directly instead of master resume", + "type": "string" +} - added
Input schema / properties / reconStrategyAdded value: +{ + "description": "Strategy instructions for company research/recon phase", + "type": "string" +} - added
Input schema / properties / sessionIdAdded value: +{ + "description": "Existing session ID to continue a previous run", + "type": "string" +} - added
Input schema / properties / skipResearchCacheAdded value: +{ + "description": "Force fresh company research instead of using cache", + "type": "boolean" +} - added
Input schema / properties / specificCoreAdded value: +{ + "description": "Specific core competencies or skills to emphasize", + "type": "string" +} - changed
Input schema / properties / theme / descriptionPrevious value: -"Resume theme (Even, StackOverflow, Class, Professional)"New value: +"Resume theme" - added
Input schema / properties / theme / enumAdded value: +[ + "even", + "stackoverflow", + "class", + "professional", + "elegant", + "macchiato", + "react", + "academic" +] - added
Input schema / properties / tierAdded value: +{ + "description": "Billing tier: free (platform credits) or byo (bring your own key)", + "enum": [ + "free", + "byo" + ], + "type": "string" +} - added
Input schema / properties / webhookUrlAdded value: +{ + "description": "Webhook URL for async status updates (generation.completed, generation.failed, generation.awaiting_input)", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "companyName", - "jobTitle", - "jobDescription" -]New value: +[ + "companyName", + "jobTitle", + "jobDescription", + "companyWebsite" +]
- Removed
master-resume-create - Changed
master-resume-delete3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / idRemoved value: -{ - "description": "Master resume ID", - "type": "string" -} - removed
Input schema / requiredRemoved value: -[ - "id" -]
- Changed
master-resume-get3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / idRemoved value: -{ - "description": "Master resume ID", - "type": "string" -} - removed
Input schema / requiredRemoved value: -[ - "id" -]
- Removed
master-resume-list - Removed
master-resume-update - Added
master-resume-upsert - Added
privacy-grant-consent - Added
privacy-list-consents - Added
privacy-revoke-consent - Added
referral-code - Added
referral-stats - Added
referral-vanity-code - Changed
resume-export-rx1 field changed- added
Input schema / properties / designBlobAdded value: +{ + "additionalProperties": {}, + "description": "Optional design/styling configuration", + "type": "object" +}
- Added
resume-parse - Changed
resume-preview2 fields changed- changed
Input schema / properties / theme / descriptionPrevious value: -"Theme name"New value: +"Theme name (e.g. even, stackoverflow, class, professional)" - changed
Input schema / requiredPrevious value: -[ - "resume" -]New value: +[ + "resume", + "theme" +]
- Changed
resume-render4 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Output format"New value: +"Output format: pdf (default) or html" - added
Input schema / properties / format / enumAdded value: +[ + "pdf", + "html" +] - changed
Input schema / properties / theme / descriptionPrevious value: -"Theme name (e.g. Even, StackOverflow, Class, Professional)"New value: +"Theme name (e.g. even, stackoverflow, class, professional, elegant, macchiato, react, academic)" - changed
Input schema / requiredPrevious value: -[ - "resume" -]New value: +[ + "resume", + "theme" +]
- Changed
session-create2 fields changed- changed
Input schema / properties / metadata / descriptionPrevious value: -"Optional session metadata (e.g. agentType, source)"New value: +"Optional session metadata" - added
Input schema / properties / sessionIdAdded value: +{ + "description": "Optional client-generated session ID", + "type": "string" +}
- Added
session-download - Added
session-init - Changed
session-list6 fields changed- removed
Input schema / properties / agentTypeRemoved value: -{ - "description": "Filter by agent type", - "type": "string" -} - added
Input schema / properties / cursorAdded value: +{ + "description": "Cursor for pagination (ISO 8601 datetime string)", + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Number of sessions per page"New value: +"Number of sessions per page (1-50)" - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination", - "type": "number" -}
- Added
session-log - Added
session-stats - Changed
settings-preferences-get2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / agentTypeAdded value: +{ + "description": "Filter preferences by agent type (e.g. job-hunter, b2b-sales)", + "type": "string" +}
- Changed
settings-preferences-update1 field changed- added
Input schema / properties / agentTypeAdded value: +{ + "description": "Agent type to scope preferences to (e.g. job-hunter, b2b-sales)", + "type": "string" +}
- Added
settings-supported-providers - Changed
settings-usage-logs2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of entries to return"New value: +"Number of entries to return (max 100)" - added
Input schema / properties / limit / maximumAdded value: +100
- Added
share-slug-stats - Changed
upload-job-file2 fields changed- changed
Input schema / properties / fileBase64 / descriptionPrevious value: -"Base64-encoded file content (PDF, DOCX, etc.)"New value: +"Base64-encoded file content (PDF, DOCX, etc.) — max ~10 MB" - added
Input schema / properties / fileBase64 / maxLengthAdded value: +13981014
- Changed
upload-job-text5 fields changed- changed
Input schema / properties / source / descriptionPrevious value: -"Source URL or identifier for the job posting"New value: +"Source label/identifier for the job posting" - changed
Input schema / properties / text / descriptionPrevious value: -"Job description text"New value: +"Job description text (max 50K characters). Required if url is not provided." - added
Input schema / properties / text / maxLengthAdded value: +50000 - added
Input schema / properties / urlAdded value: +{ + "description": "URL to fetch job description from. Required if text is not provided.", + "format": "uri", + "maxLength": 2048, + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "text" -]
- Changed
upload-resume2 fields changed- changed
Input schema / properties / fileBase64 / descriptionPrevious value: -"Base64-encoded file content (PDF, DOCX, etc.)"New value: +"Base64-encoded file content (PDF, DOCX, etc.) — max ~10 MB" - added
Input schema / properties / fileBase64 / maxLengthAdded value: +13981014
- Added
webhook-secret-get - Added
webhook-secret-rotate
39 tool updates
v0.1.0- First observed
agent-manifest - First observed
agent-status - First observed
api-key-create - First observed
api-key-list - First observed
api-key-revoke - First observed
api-key-rotate - First observed
ats-score - First observed
b2b-sales-run - First observed
content-delete-generation - First observed
content-save - First observed
document-download - First observed
job-hunter-run - First observed
master-resume-create - First observed
master-resume-delete - First observed
master-resume-get - First observed
master-resume-list - First observed
master-resume-update - First observed
resume-export-rx - First observed
resume-import-rx - First observed
resume-preview - First observed
resume-render - First observed
resume-themes - First observed
resume-validate - First observed
session-create - First observed
session-delete - First observed
session-get - First observed
session-hydrate - First observed
session-list - First observed
settings-preferences-get - First observed
settings-preferences-update - First observed
settings-profile - First observed
settings-usage-logs - First observed
settings-usage-summary - First observed
share-create - First observed
share-get-public - First observed
share-stats - First observed
upload-job-file - First observed
upload-job-text - First observed
upload-resume
TDQS
Scored across 64 tools
Most tools have distinct purposes, but there is notable overlap in some areas. For example, health-check, health-live, health-ready, and health-root all serve health diagnostics with subtle distinctions that could confuse an agent. Similarly, session-get and session-hydrate both retrieve session data with different detail levels, which might lead to misselection if not carefully read.
Tool names generally follow a consistent verb_noun pattern (e.g., agent-status, api-key-create, resume-parse), with clear and predictable naming. Minor deviations exist, such as ats-score (noun_verb) and byo-key-get (abbreviation-based), but overall the naming is coherent and easy to understand.
With 64 tools, the count is excessive for a single server, making it overwhelming and difficult for an agent to navigate efficiently. While the domain (AI-powered job and sales automation) is broad, the toolset feels bloated with many specialized or overlapping tools that could have been consolidated.
The tool surface is highly comprehensive, covering CRUD operations for sessions, resumes, API keys, and more, with clear workflows for job hunting and B2B sales. Minor gaps exist, such as no direct tool for updating a session's metadata, but agents can work around these with existing tools like session-log or content-save.
Maintenance
Related MCP Connectors
LinkedIn outreach MCP server — 19 tools for AI agents to prospect, sequence, and manage contacts.
Generate tailored, ATS-optimized resume PDFs and cover letters from a job description, over MCP.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
AlicenseBqualityBmaintenanceHosted MCP server for job search (3M+ jobs from employer career pages and ATS feeds like Lever/Greenhouse), PDF resume generation with multiple templates, AI resume tailoring per job description, cover letters, and career advice. Free hosted endpoint, no API key required.3315MIT- AlicenseBqualityAmaintenanceLocal MCP server for BOSS Zhipin workflows. Exposes 49 tools for job search, welfare filtering, recruiter messaging, pipeline tracking, and resume optimization for AI agents.73306 PyPI1,947MIT
- AlicenseBqualityDmaintenanceDeterministic MCP server for job-landing pipeline that parses CVs into validated JSON Resume, detects sections, scores parse confidence, and exposes FR/US market profiles to help beat ATS and LLM screeners honestly.75MIT
- AlicenseNot gradedqualityAmaintenanceA production-grade FastAPI-based MCP server for career-oriented tools, currently exposing GitHub integration (profile, repos, pinned, search, rate limits) to LLM clients via the Model Context Protocol.MIT