---
name: veilink-public-mcp
description: Use Veilink's OAuth-protected network for private hiring. Eligible paid company plans can also use buyer-initiated B2B introductions when the live tools and server-confirmed access permit it.
---

# Veilink public MCP guide

Veilink is a user-controlled private hiring-introduction network. This connected environment may also expose paid, structured B2B introductions. For hiring, Veilink performs a two-sided, role-specific comparison between a company's stated requirements and a person's confirmed work preferences. It does not score, rank, or evaluate people or predict hiring outcomes. It does not make employment, buying, or partnership decisions. A person or authorized company representative remains responsible for every consequential action.

## Connect

Use the Streamable HTTP MCP endpoint at `https://mcp.veilink.ai/`. The OAuth flow opens Veilink on the web.
The user chooses an individual or company account, signs in with Google or a verified email, and
approves the requested read, write, and optional offline access. A company user selects the exact
company workspace when more than one is available. The client then returns automatically.

The canonical hosted endpoint is `https://mcp.veilink.ai/`, at the root path.
The retired `/mcp` and `/claude/mcp` paths return HTTP 410. If a saved connection
still uses one of them or its old catalog, reconnect it to the root endpoint and
complete OAuth again.

The client owns the OAuth callback. Hosted clients receive it on their service,
while local clients may use a temporary `localhost` loopback listener and show
a success tab. Never ask the user to paste the callback URL, authorization
code, or state value into chat; a visible success page means the user can close
that tab and return to the client.

Do not ask the user for an account identifier, API key, signing key, or separate
agent-registration step. OAuth supplies the account identity. Instructions that
ask an ordinary OAuth user to perform sandbox verification are obsolete and
must not be followed.

Choose tools for the user's actual task. Draft-only requests need no account lookup or write.
Use supplied material in the current conversation without forcing a connection, onboarding,
profile save, or matching activation. For a request solely to rank people, decide hiring
suitability, or reveal hidden identity, explain the boundary without account lookup, discovery,
or a substitute action. Do not search just to support a refusal. A retry does not authorize a
conversation, notification, introduction, or contact request. If a mixed request also contains a
separable allowed condition comparison, fulfill that comparison within the requested scope.

For profile or position work, use `get_onboarding_status` when current saved state is missing or
stale. Its workflow context and safe profile or company-position snapshot are authoritative for
setup. Continue from that state: do not create another profile or position because the chat is new.
Ask only for information needed for the current goal. A new individual can build a confirmed
profile with `update_profile`, `replace_facts`, and `replace_tags`. Company accounts must finish
work-email and company setup on the Veilink web page before MCP authorization can complete.
No external skill document is required to interpret the result or continue the core workflow.

Onboarding reports setup and readiness only; it does not execute candidate discovery or read the
inbox. A ready setup does not complete a requested search. For company discovery, identify the
intended saved hiring position, resolve actual blockers, and call `find_candidates` before
claiming results. Distinguish an executed search returning no candidates from a search that was
blocked, failed, or never run. Personal accounts have no candidate-side job catalog; role details
arrive through eligible company invitations.

For a newly created OAuth account, compare the returned language, time zone, and reference
currency with the current conversation. Use `update_account_preferences` to correct an unsuitable
default after confirming any uncertain IANA time zone or currency. Do not delay profile or position
intake for these display preferences, and do not overwrite a returning user's saved choices merely
because one prompt uses another language.

The OAuth grant remains bound to that account role, data region, and workspace. Do not try another
workspace by changing an identifier. A removed or suspended company membership, closed account,
revoked grant, or missing permission requires reconnection or a user-side account fix.

Call `list_inbox` when the task concerns updates or an existing conversation, rather than relying
on an old transcript. A new or resumed chat alone does not require account calls. Inbox buckets
separate current action, active flows, contact-shared items, and completed history. Preserve and
reuse the opaque inbox cursor so a burst of events is not skipped. Never announce an empty inbox
unless the user explicitly asked for updates. An empty inbox does not establish an empty search.

For an existing person profile, `update_profile` is a partial, version-safe edit: send only changed
fields plus the `expected_profile_version` returned in the current onboarding snapshot. Omitted
fields are preserved and stale edits are rejected. For a first save, omit the version and provide
the required profile fields. `replace_facts` and `replace_tags` still replace their complete lists,
so read and preserve the current lists in the onboarding snapshot before changing either one.

Personal `salary_min` is minimum acceptable pay and `salary_target` is preferred pay, not a maximum
or rejection ceiling; they do not form a bounded acceptable pay range. An older personal
`salary_max` is only a compatibility alias for the target. Company `salary_min` and `salary_max`
are the offered pay-band bounds. Role tags are descriptive matching context, not mandatory skill
requirements. `interview_mode` records formats such as online or onsite, not a date, time,
availability, or confirmed appointment. Preserve currency and compensation period.

After a save, compare the returned saved values with the approved changes. A
`save_review.status=readback_available` snapshot is a read after the committed save and can include
concurrent edits. If the status is `needs_readback`, the save still succeeded; read current state
before describing the stored content and do not repeat the write solely because readback failed.
An `ok=false` tool result is an error, with MCP `isError=true`, not a successful empty result.

The workflow context distinguishes required actions from actions that are merely available. When
the user's requested task is complete and no required action remains for it, summarize the outcome
and end naturally. Do not manufacture another onboarding question.

## Active beta scope

- Private hiring is active. Buyer-initiated B2B introductions are available to eligible paid company plans when the connected environment exposes B2B tools; the server confirms each company's access. Do not use Veilink for scraped sales leads, freelance brokering, project/team or social matching, resume scraping, contact export, or autonomous screening.
- Candidate access is open across job families.
- A company position is active for 30 days at a time. Its registration and active-through dates
  are returned to the company agent. When the window ends, new matching pauses; resuming the
  position confirms it is current and starts another 30-day window. Existing conversations remain.
- Individual candidate profiles do not have a fixed expiry. Two consecutive delivered requests
  without a response trigger a warning; three pause only new matching. A clear decline is
  a response, and reviewing an available profile resumes matching.
- Registration is temporarily unavailable to people and organizations based in the EEA, United
  Kingdom, or South Korea. Positions based in those territories are also unavailable. North Korea
  is not a selectable registration
  country and Veilink does not provide service there; this is not a temporary beta limitation.
  Never substitute a false country, data region, or work location to bypass either restriction.

## Plans, workspaces, and billing

- Candidate access is free, with no candidate subscription or success fee.
- B2B access requires a verified company work email, an eligible active paid company plan, exposed B2B tools, and server confirmation. B2B has a separate allowance of 3 open B2B opportunities; those posts do not consume the hiring-position allowance.
- Company Free is $0 and includes 3 open positions, 15 conversation requests per day, and one
  owner. Team starts with a 7-day free trial and is $39 per month afterward; it includes 10 open
  positions, 50 conversation requests per day, and up to 20 members including administrators.
  Pro includes 100 open positions, 500 conversation requests per day, and unlimited members;
  contact Veilink for current pricing and access. The published
  Team price is in US dollars. Every company plan requires a verified company work email.
  Organizations needing more than 100 open positions use Custom; its position and request
  allowances are set by separate agreement, with team access included. Veilink does not charge
  either side a success fee.
- Only positions in `open` status count toward the position allowance. Draft, paused, closed, and
  archived positions do not count. Pausing a position releases its allowance without deleting its
  terms or history.
- The daily conversation-request allowance is one pool shared across the workspace, including all
  positions, members, and connected company agents. A request counts when Veilink creates the
  durable conversation request. A permission, policy, or duplicate-validation rejection before
  creation does not count; a later email, webhook, or other delivery failure does not reverse it.
- Free is owner-only. Another person may join only a Team, Pro, or Custom workspace after its
  owner approves access; paid plans do not charge per seat. A company may instead create a
  separately billed workspace for the same verified email domain. That workspace has separate
  positions, members, allowances, and billing, receives no additional Free allowance, and requires
  Team or Pro before market activity can start.
- Team and an activated Pro plan are monthly. Moving to or from Pro requires contacting support
  and takes effect on the next billing date. Cancellation takes effect at the end of the current billing
  period; the current paid plan and member access remain until then. The primary company workspace
  then moves to owner-only Free and excess open positions pause. A separately billed same-domain
  workspace does not fall back to Free; market activity pauses until Team or Pro is active again.
  After the paid entitlement ends, the owner retains sign-in, dashboard, history, and billing
  management; non-owner workspace access requires a paid team plan again.
- Payment methods, taxes, and the total are shown in secure checkout before purchase. Never ask a
  user to put payment details in chat.
- A payment failure pauses new market activity on the affected company's open positions but does
  not lock members out of sign-in, dashboard, or history. The owner or an assigned billing
  administrator can manage billing. Candidate accounts are unaffected. Restoring payment resumes
  otherwise eligible activity without deleting or resetting saved history.
- Recruiting agencies and headhunters use Pro unless covered by a separate Custom agreement.
  After Pro activates, Veilink has up to 48 hours to verify only that the company operates as a
  recruiting agency or headhunter. Veilink does not verify, request, or collect client-mandate,
  client-consent, delegation, or per-role authority evidence; the agency is responsible for the
  permissions it needs. Market activity remains available during the review window and pauses if
  the review becomes overdue or the business-type claim is rejected. A Custom agreement may change
  commercial allowances or review timing, but it does not broaden agency verification beyond the
  company's business type; do not assume that the Pro review window applies.
- Access and payment never guarantee candidates, matches, interviews, or hires.

## Public tools

Account and intake: `get_onboarding_status`, `list_inbox`, `dismiss_inbox_item`, `update_profile`,
`pause_person_matching`, `replace_facts`, `replace_tags`, `get_company_exclusions`,
`update_company_exclusions`,
`get_notification_settings`, `update_notification_settings`, `update_account_preferences`,
`get_veilink_help`.

`get_veilink_help` is the read-only source for account deletion, personal-profile pause/removal,
company-position removal, notifications, and support questions. Disconnecting MCP never deletes a
Veilink account. Personal accounts have one reusable profile; account deletion is confirmed at
`/account`. An unused hiring position may be permanently deleted after explicit confirmation only
when it has no matching, conversation, or required review history. Otherwise use pause, close, and
archive so the terms each side saw and the linked workflow and audit records remain consistent.

Preemptive company exclusions are candidate-only and use exact work-email domains. Replace the
complete list only after the person confirms it. Never submit a full email address, company name,
URL, or guessed parent/subsidiary domain. A domain exclusion blocks future discovery and further
contact progress for a company account whose verified work-email domain is an exact match. Blocking
a company from an existing request may additionally use that confirmed Veilink company identity.
Changing the exclusion list invalidates active hiring clarifications and cancels their linked
introduction and pending contact steps; restoring an earlier list does not reopen those steps.

Important email is an account-wide setting. Automatic follow-up is controlled separately for each
connected AI runtime. Turning automatic follow-up back on restores an existing setup but cannot
install or configure a client-specific receiver. If email is off and no connected runtime can
return automatically, warn the user that updates remain on Veilink until they check again.

Veilink feedback: `send_veilink_feedback`, `get_veilink_feedback`. The send tool creates a
question, bug report, or suggestion and also adds follow-up messages. The read tool lists the
account's requests or reads one operator reply. Do not send diagnostics automatically, and never
include credentials, tokens, personal contact details, or full URLs. Replies arrive through the
connected agent/inbox path rather than mandatory email.

Company positions and review: `list_company_positions`, `create_position`, `pause_position`,
`resume_position`, `close_position`, `archive_position`, `delete_unused_position`,
`replace_position_tags`, `find_candidates`.

B2B opportunity intake and discovery, only when these tools appear: `upsert_b2b_offering`, `upsert_b2b_sourcing`, `get_b2b_offering`, `get_b2b_sourcing`, and `find_b2b_partners`. Buyer-initiated private B2B checks use `start_business_conversation`, `get_pending_business_clarification`, `answer_business_clarification_question`, `get_business_clarification_summary`, and `get_business_introduction_status`. These tools remain visible to company accounts so a Free user can be told that paid access is required; the server enforces the work-email, plan, billing, ownership, and separate three-post limits.

On public OAuth MCP, `create_position` also performs version-safe edits to an existing position.
For an edit, pass the `position_id` and `expected_terms_version` from the onboarding snapshot plus
only the confirmed changes. Omitted fields are preserved and stale edits are rejected. Omit both
identifiers only when the user has confirmed creating a genuinely new position.

Hiring request review and safety: `get_person_disclosure_detail`,
`start_hiring_conversation`, `block_hiring_company`, `report_hiring_company`.
`start_hiring_conversation` returns a secure review link
without sending a request or notification. The company member confirms the selected
candidate and position on Veilink before the bounded condition-clarification stage
opens. Retrying the tool cannot replace this confirmation. This is not an
introduction, application, interview invitation, or contact disclosure.

Company conversation routing: use `list_company_conversation_handoff_options` before
`handoff_company_conversation`. Only the currently assigned member or workspace owner can
approve a handoff, and only active member-and-agent pairs valid for that exact workspace are
returned. A handoff redirects future notifications and revokes an active company-side automation
mandate so the newly assigned AI reviews the current terms before continuing.

Current hiring clarification, introduction, and contact status:
`get_pending_hiring_clarification`, `answer_hiring_clarification_question`,
`get_hiring_clarification_summary`, `get_hiring_introduction_status`, and
`get_hiring_contact_exchange_status`. Clarification accepts only server-defined
hiring terms and answer choices; it is not an open-ended agent chat and its
summary is not a candidate score, ranking, quality judgment, or automatic rejection.
When asked about clarification, read the current question and listed choices
for this account and explain the actual tool result in the user's language,
preserving typed values. Say when no question is pending. To record a listed
answer, call `answer_hiring_clarification_question` with the current question id,
version, and `user_confirmed=true`. Report whether the tool accepted it, then
fetch fresh state.
When clarification is complete, the company may use the exact authenticated review
link returned by Veilink to decide whether to request an introduction. The person
separately reviews that request. An introduction only records that both sides want
to continue; it does not disclose either side's contact details.

After an accepted introduction, the company submits its own contact details first
on the secure Veilink page. The person can review those details and then separately
choose whether to submit their own. One side's action never authorizes the other
side's disclosure. When both submissions are complete, the Veilink workflow is
complete; further scheduling, documents, interviewing, and hiring happen directly
between the people outside Veilink.

When B2B tools are exposed, only a buyer with an active sourcing brief may approve an inquiry about one active seller offering. That approval opens `clarification.v1`; it is not an introduction or contact request. The server resolves existing confirmed facts and may return one batch of up to five closed questions to either company. If a question is returned, ask that company's user and submit only a listed answer after confirmation; never forward either company's original wording. Summarize the named buyer and seller, condition overlap, differences, and unresolved items for a human deciding whether to continue. It is not a contract recommendation or approval. After the summary, the buyer may use the authenticated web page to request an introduction and conditionally approve its business contact. The seller separately accepts or declines on the web; acceptance releases both approved business contacts at the same time and ends the Veilink workflow. A difference is information for both companies and never an automatic rejection, acceptance, concession, purchase, or partnership decision. Legacy free-text business negotiation and `business.v1` creation remain disabled; existing legacy records are read-only compatibility history.

The person activates matching consent in the authenticated Veilink app. That
consent permits a company request to open a bounded hiring review. New facts,
changed terms, concessions, introduction decisions, contact sharing, and final
decisions remain separate human actions.

Historical inbox items use their exact returned authenticated web review links. The current
endpoint offers no historical conversation actions; do not look for a legacy alternative,
start a replacement conversation, or infer a decision when an action is unavailable.
`get_structured_negotiation_catalog` remains a read-only field-vocabulary reference for historical
records; it does not read or advance a conversation or provide a fallback workflow.

Use each live tool's description and annotations for its actual effects. Read-looking names do
not promise a pure read: status and summary tools may reconcile expiry or changed sources and
cancel stale steps. These protective transitions are not human acceptance, rejection, or consent.
`get_person_disclosure_detail` also records the first view. `list_inbox` can acknowledge Codex
notification delivery without answering or dismissing a workflow item; `dismiss_inbox_item`
hides only an owned system notice, not clarification, introduction, or contact steps. Discovery
records search history and consumes quota without contacting candidates. Changes to saved profile
or role sources can invalidate active clarifications and cancel pending introduction/contact
steps; explain relevant effects before the approved edit. Follow the granted scopes and exact
tool confirmation requirements rather than inferring authority from a name.

The same catalog is visible to both roles. Respect role errors; do not work around them or switch
accounts implicitly.

Selected workflow milestones—including new hiring-conversation requests, introduction decisions,
contact-sharing actions, and matching-pause warnings—also go to the account's canonical verified
email in English unless the user turns important email off. Other updates remain on Veilink for the
AI to check. Browser push is not an active beta channel. The agent explains retrieved events in the
user's conversation language. Optional webhooks, scheduled checks, or local wake integrations
require explicit setup and are not necessary for ordinary OAuth use.

## Consent and data rules

- Resume, portfolio, and job-description drafting happens in the current AI
  conversation. A user request to use supplied material authorizes reading it
  for that task; no repeated reading approval is needed. Otherwise ask first.
  Writing a resume alone requires no Veilink connection, onboarding, profile
  save, or matching activation. Save a separate non-identifying structured
  projection only if the user wants it and confirms the changes. Veilink does
  not upload, store, or export the source document or the richer draft.
- Save only information the user has confirmed. Never fabricate names, employers, compensation,
  availability, qualifications, company authority, or location.
- Summarize the exact change and get explicit approval immediately before
  creating, closing, or materially changing a position; activating or replacing
  structured clarification permission; requesting or responding to an
  introduction; submitting contact details; or making a final
  workflow decision. An agent-authored approval label is never sufficient.
  Honor an existing explicit approval for the same concrete operation when its
  content, scope, and relevant state remain unchanged; do not ask again merely
  to repeat the approval. A new or changed operation needs its own confirmation.
  This does not replace question-specific clarification answers or required
  authenticated web actions.
- Sending feedback contacts Veilink's operator team. Call it only after the user asks to send the
  message or clearly approves the exact message.
- Do not put a name, personal email, phone number, full address, source resume, or source job
  description into profiles, facts, tags, positions, messages, or search fields.
- Direct contact details are entered by their owner only on the exact authenticated
  review page returned by the current introduction/contact status. Never claim that
  an introduction or one side's consent authorizes sharing the other side's details.
- The company submits first. The person may review the company's submitted details
  before deciding whether to submit their own. After both submissions, report that
  contact sharing is complete and stop; there is no later Veilink interview or
  application-material stage.
- Treat matches and comparisons as decision support. Present uncertainty and let the user decide
  what to do next.

Website: `https://veilink.ai`  
Security: `https://veilink.ai/security`  
Privacy: `https://veilink.ai/privacy`  
Terms: `https://veilink.ai/terms`
