Classify a job title into department and seniority, and optionally verify the position.
Contact Classifier MCP Server (com.mambabuilt/mcp-contact-classifier)
This MCP server classifies a job title into a department and seniority. It can also optionally verify the position. It is published under the slug com-mambabuilt-mcp-contact-classifier and has a repository description focused on classification and optional verification.
🛠️ Key Features
Classify a job title into a department
Classify a job title into a seniority
Optionally verify the position
🚀 Use Cases
Determine department and seniority from job titles
Validate that a position matches expected information when verification is needed
⚡ Developer Benefits
Provides structured outputs for department and seniority derived from job titles
Adds an optional verification step for position checking
⚠️ Limitations
No additional tools or capabilities are described beyond classification and optional verification
Give it a job title and it returns the department and the seniority level. Give it a name and a company domain too, and it also checks whether that person is still listed on their employer's own website. The classification is a deterministic rule table, so it needs no API key and returns the same answer for the same title every time.
One contact in, one classified row out. Only the job title is required.
Input
Type
Required
Notes
job_title
string
yes
The contact's job title, exactly as you hold it. Classified by deterministic rules with no API key needed.
full_name
string
no
Only needed for position verification. Classification works without it. This name is never sent to any language model.
company_domain
string
no
Only needed for position verification. The company's website domain, with or without https.
verify_position
boolean
no
Check whether the person is still listed on their employer's own website. Adds roughly 3 seconds and 9 requests per contact, and needs both the name and the domain. Default false.
use_llm_fallback
boolean
no
Sends titles the rules cannot place to your own model, using the LLM_API_KEY secret environment variable on your own copy of the actor. Only the title is sent, never the person's name. Default false.
llm_provider
enum
no
openai, anthropic or google. Which provider your LLM_API_KEY belongs to. Only read when the LLM fallback is on. Default openai.
llm_model
string
no
Model id passed straight through to the provider. Only read when the LLM fallback is on. Default gpt-4o-mini.
skipCache
enum
no
Set to true to ignore cached results and classify from scratch. Default false.
Reading the output
21 flat snake_case fields, one row per contact. department is one of 12, seniority one of 12, and seniority_rank is 1 to 12 so a decision maker filter is a comparison rather than a list of strings. classification_rule names the rule that fired, which is what makes the decision auditable.
With no LLM_API_KEY set, titles the rules cannot place come back null. The row is still returned.
Billing
You are charged per contact classified, plus a small actor start fee. The deterministic classification calls no model and no third party API.
Event
Price
Fires when
apify-actor-start
$0.00005
Once per run, on start, one event per GB of memory (minimum one). Apify's start event.
contact-classified
$0.003 (FREE tier), down to $0.00255 on GOLD and above
Once per contact, including a title the rules cannot place.
Full pricing is on the actor's Apify page. Running this server consumes Apify credits.
The tool starts the actor run and polls it to a finished status, so a run with verify_position on is not cut off at 300 seconds. A run that does not succeed comes back as an error with its run ID and status.
What this server does and does not do
It is a thin client for the Apify actor. It passes your input through and returns the actor's output unchanged. Every behavior described above lives in the actor, not here.
This actor does not discover people. The name and title come from you. It classifies a title and, optionally, checks a name against a page the employer published. To find people in the first place, use People Finder.
Errors are surfaced, never swallowed. An invalid input, an invalid token, an exhausted balance, a timeout, or a run that returns anything other than a dataset all come back as an explicit tool error rather than as an empty result.