Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_server_versionA

Returns { serverVersion, minPluginVersion } for the LeadAce backend MCP server.

report_bugA

File a bug, feedback, or idea about LeadAce. Daily-capped per tenant; over-cap returns an error.

list_projectsA

List all projects for the current user.

setup_projectA

Create a new LeadAce project; returns the auto-generated project id. Errors if the plan project limit is reached.

delete_projectA

Delete a project and its project-scoped data (project-prospect links, outreach logs, responses, inquiry sessions, learned send-optimization state, documents, settings, message variants). Prospects are tenant assets and are NOT deleted.

add_prospectsB

Batch-register prospects; server-side dedup is authoritative. Returns inserted, skipped, and skippedDetails [{name, reason, detail?}]. Rows whose industry is not in the tpl_industries vocabulary are skipped (reason unknown_industry), and rows whose discoveryStrategy is not registered on the project are skipped (reason unknown_strategy) — fix and re-register.

check_prospect_dedupA

Read-only duplicate pre-check. Returns decisions[] in input order, each {kind: 'fresh' | 'skip', reason?}; reasons are the dedup subset of add_prospects (no plan_limit).

import_prospects_from_csvA

Import prospects from a canonical CSV string. Returns inserted, overwritten, skipped, errors, skippedDetails [{row, name, reason}], and errorDetails. dedupPolicy 'overwrite' refreshes prospects matched by email, contactFormUrl, or platformUrl and re-links them, but domain-only matches skip as already_in_project and do_not_contact rows are always skipped; doNotContact is a one-way ratchet on overwrite (true sets it, false/absent never clears). Max 1000 data rows.

list_country_codesA

Lists the ISO 3166-1 alpha-2 country codes LeadAce recognizes for a prospect/organization country. Returns { countries: [{ code, name, sendAllowed }], sendAllowed, note }; sendAllowed marks codes outreach can currently deliver to, others store but are blocked at send time.

get_outbound_targetsA

Prospects due for outreach (new + follow-up/recycle touches), ordered by the measured targeting score (x priority multiplier; a share of each batch is random exploration slots); server-filters by enabled channels and deliverable country (unknown country passes unless the project sets targetCountries). Reports the reachable total and its email / formOnly / snsOnly / platformOnly split, the outbound mode (send|draft), remaining outreach quota, and the mailbox email cap; then the prospects as JSON, each carrying country, discoveryStrategy, and cycle {kind, touchNumber}.

get_mailbox_healthA

Warmup and daily-cap state of the mailbox this project sends from (assigned custom mailbox, else connected Gmail). This per-mailbox email cap is separate from the plan/billing outreach quota — email sends only, resets at UTC midnight. Returns the mailbox email, warmup ramp (week X of N) or fixed cap override, today's cap/used/remaining, any pause, and a trailing 30-day bounceRate (threaded-only lower bound). Returns a no-mailbox state when the project has no assigned mailbox and no linked Gmail.

record_outreach_with_inquiryA

Reserve an outreach log row for a form / SNS DM / platform channel before submission. Returns outreachLogId, status ("pre_send" in send mode, "pending_review" in draft mode), inquiryUrl, and finalBody — the body with the compliance footer (legal identity + opt-out line, plus an inquiry-landing URL line when inquiryLandingEnabled) appended; channel "platform" gets no footer (solicited in-platform message). The "pre_send" row must be resolved by update_outreach_status ("sent" / "failed"); a "pending_review" row needs no follow-up call. For email use send_email_and_record instead.

update_outreach_statusA

Resolve the "pre_send" outreach log row from record_outreach_with_inquiry. Both terminal transitions stamp next_outreach_after = sentAt + noResponseRecycleDays, dropping the prospect from get_outbound_targets for that window: status="sent" also flips the prospect to "contacted", confirms quota consumption, and advances the follow-up sequence; status="failed" refunds the in-flight quota reservation. Only the "pre_send" → terminal transition is accepted.

get_tenant_settingsA

Returns the workspace identity/compliance fields (legalName, physicalAddress, defaultSenderCountry) plus a readiness status line; all three gate outbound: send tools refuse (412) until each is set.

update_tenant_settingsA

Updates workspace identity/compliance fields; only the keys passed are written (merge, not replace). legalName, physicalAddress, defaultSenderCountry gate outbound: send tools refuse (412) until all are set. defaultSenderCountry is the sender's own country, separate from recipient targeting and message language.

get_compliance_statusA

Pre-flight compliance check for outbound. Reports ready or incomplete, with the unset fields. Incomplete means at least one of legalName / physicalAddress / defaultSenderCountry is missing, and send_email_and_record / record_outreach_with_inquiry then refuse with 412.

list_message_variantsA

List the project's message-angle variants. Reports the active / archived counts, then the variants as JSON — [{ variantId, subjectPattern, bodyApproach, label, archivedAt, … }] ordered by createdAt asc.

upsert_message_variantA

Register or update a message-angle variant (subject pattern + optional body approach) on a project. Idempotent by variantId — re-calling updates that variant's fields / archived state. archived=true retires it from rotation but keeps it analysable for historic outreach rows. Refused (400) when it would push the active count past the project's cap.

pick_message_variantA

Pick an active message-angle variant for the project via a server-side weighted draw. Returns the drawn variant id, its subject pattern, its body approach (line absent when the variant has none), and label; NOT_FOUND when the project has no active variants.

upsert_discovery_strategyA

Register or update a discovery strategy — the named prospect-search arm /build-list executes and add_prospects stamps for per-strategy reply attribution. Idempotent by slug: re-calling updates the approach, and any call without archived=true lands the strategy active (re-registering an archived slug revives it). archived=true retires it from registration while keeping historic attribution. Refused (400) when it would push the active count past the project's cap.

run_lever_tickC

Run the project's daily outbound-optimization tick: recompute the message-variant draw weights pick_message_variant reads (Thompson sampling over graded reward; archives variants whose P(best) stays below the threshold at maturity, never below two active), the discovery-strategy draw weights over the active registry (same Thompson math; archives dominated strategies, never below two active), the per-industry channel affinity get_outbound_targets surfaces, and the measured targeting lifts (industry / size / country / discovery strategy / fresh signal) that re-score the get_outbound_targets ordering. After a sustained flat streak (every arm mature yet none likely best) it rotates out the weakest variant to free a slot for a fresh angle. Idempotent per UTC day — a repeat call returns that day's recorded decision without re-applying. Returns variant weights and archived variants (a stagnation rotation is marked as such), strategy weights and archived strategies, channelAffinity by industry bucket, targeting lifts, the futility vitals verdict (ok / insufficient / futile over recent mature email sends — futile means outreach is statistically drawing no replies and belongs in the cycle report; it clears on its own once recent sends draw replies again), and the live needsReplenishment / needsStrategyReplenishment flags (recomputed each call, not the frozen recorded value).

get_lever_stateA

Read-only snapshot of the project's outbound optimizer: message-variant draw weights (null until the first tick → uniform), channel affinity per coarse-industry bucket ({} until measured → policy order), targetingLifts (null until a tick has computed them → neutral ordering), updatedAt, per-active-variant mature-sample progress, the discovery block (the strategy registry — each entry's slug, approach, and archived state; the active set is what /build-list runs, while add_prospects accepts any registered slug — plus the tick's strategy draw weights, a batchPlan apportioning a registration batch of batchSize across the active strategies by those weights, and a needsReplenishment flag that asks /evaluate to register fresh strategies), today's tick decision if it ran, and the variant-pool needsReplenishment (also true while a stagnation-rotation slot awaits its fresh angle).

get_lever_decisionsA

Read-only history of the project's daily lever-tick decisions, newest first. Each entry is one UTC day: message-variant draw weights, variants archived that day (reason "stagnation" marks a rotation, absent = dominated), per-variant sample counts, channel affinity per coarse-industry bucket, targetingLifts, the discovery-strategy decision (weights / archived / samples / the prior UTC day's per-strategy registration counts), vitals — the project futility check over recent mature email sends (sends / replies / pDead / verdict), and configUsed — the effective lever config the tick ran under (the latter four null on pre-upgrade entries). Empty until the tick has run at least once.

record_outreachA

Record an outreach log entry. status="sent" flips the prospect to "contacted" and stamps next_outreach_after = sentAt + noResponseRecycleDays so it recycles back into get_outbound_targets only after that window; status="failed" stamps the same window without marking the prospect contacted so it drops out of get_outbound_targets for it; status="pending_review" leaves the prospect unchanged but excludes it from get_outbound_targets while the draft is open. For form / SNS DM submissions, prefer record_outreach_with_inquiry.

skip_prospectA

Record a deliberate skip of a prospect on this outbound run — no send is attempted. Writes a "skipped" audit row and stamps next_outreach_after = sentAt + noResponseRecycleDays so the prospect drops out of get_outbound_targets for that window; no quota is consumed and the prospect is NOT marked contacted. Not for unsupported-country prospects — get_outbound_targets already filters those server-side.

get_gmail_statusA

Whether the current user's Google account is connected (gmail.send scope), the address it is connected as, and whether Google has revoked the stored access.

send_emailA

Sends an email via the connected Gmail account without recording an outreach log; returns Gmail messageId/threadId. For prospect outreach use send_email_and_record instead.

send_email_and_recordA

Sends a prospect email to the address stored on the prospect and records the outreach log in one call; project outboundMode decides send vs a pending_review draft. Reports whether it sent or drafted, the outreach id, and on a send the From address the project's sending mailbox used.

discard_draftsA

Batch-delete pending_review drafts by ids, or by projectId to wipe every pending_review draft in the project. Only pending_review rows are deleted; any other status silently excluded. Returns the deleted count and any skipped ids. Preview with list_drafts.

list_draftsA

List pending_review drafts for a project, newest first. Returns total and rows with a truncated bodyPreview; doNotContact marks drafts whose recipient became DNC after drafting — discard those, sending is blocked.

update_prospect_statusA

Update a prospect's status within a project. Setting 'new' is rejected while the prospect has sent outreach in that project.

set_prospect_priorityA

Set one prospect's outreach priority (1=highest) within a project. Per-prospect operator override applied regardless of the prospect's status; measured targeting outranks priority in the outbound ordering once data accrues. Read the current value via list_project_prospects or get_outbound_targets.

update_organizationA

Partial-update an organization's name, website URL, employeeBand, or doNotContact; domain is immutable. organizationId is the PK returned in the organizationId field of list_tenant_prospects / list_project_prospects / get_outbound_targets, not a domain.

create_organizationA

Register an organization by domain alone — e.g. to flag a company do_not_contact before any prospect exists. Omitted name/websiteUrl default from the domain; CONFLICT if the domain already exists (use update_organization).

list_organizationsA

List tenant organizations with employee-size band and per-org prospect and project counts; do-not-contact organizations are marked [DNC].

delete_organizationsA

Permanently delete organizations by id (max 200); organizations that still have prospects are skipped with a reason. Preview with list_organizations.

delete_prospectsA

Permanently delete prospects by id (max 200), workspace-wide. Do-not-contact prospects, prospects with outreach history, and prospects on 2+ projects are skipped with a reason; reports organizations left with no prospects. Preview with list_project_prospects.

update_prospectA

Partial-update a tenant prospect's fields. UNPROCESSABLE if the patch would leave no contact channel (email, contactFormUrl, an snsAccounts entry, or platformUrl); CONFLICT if email, contactFormUrl, or platformUrl already belongs to another prospect in the workspace. Changing email resets its deliverability verdict and queues a background re-check. Per-project status via update_prospect_status, priority via set_prospect_priority, DNC via set_prospect_do_not_contact.

set_prospect_do_not_contactA

Set the do_not_contact flag on a tenant prospect. DNC prospects are excluded from re-discovery and outbound targeting.

get_recent_outreachA

Recent outreach logs for a project. Confirmed events only (sent / failed / skipped) — pending_review drafts and pre_send rows are excluded; use list_drafts for those. Each log carries recipient identifiers (prospectName, contactName, prospectEmail, organizationDomain) and inquiry-landing aggregates (inquirySessionCount, inquiryOutcome, inquiryMeetingSource, inquiryLastVisitAt).

record_responseA

Record a response (email reply, SNS DM, etc.) to an outreach; updates prospect status and marks do-not-contact. do_not_contact is forced on responseType=bounce, on rejectionFeedback opt-out reasons, and when the per-project rejection cycle cap (maxReapproachCycles) is reached — the cap also drops the recontact window so a would-be deferred becomes rejected. rejectionFeedback with wrong_timing/budget plus a recontact window sets status=deferred (next_outreach_after); a decision_maker_pointer auto-creates or updates a prospect, reported back as derived prospects.

get_rejection_feedback_summaryA

Aggregate rejection_feedback for a project. Returns primaryReasonDistribution, the tactical fields recontactWindows / decisionMakerPointers / notRelevantNotes / budgetNotes (budget free-text), and the pmf field feature_gap free-text notes. Read-only view — any deferral or prospect creation these rows imply happened at record_response time, not on read.

get_eval_dataA

Evaluation statistics for a project: response rates, channel performance, sentiment breakdown, discoveryStrategyResponseRate (per discovery strategy; reply metrics count mature sends only while its bounce metrics span all sends — the early source-quality read; the null bucket is prospects without recorded provenance), targeting observation axes (industryResponseRate by coarse bucket / sizeResponseRate by employee band / countryResponseRate — these also count mature sends only, older than the reply-maturity window), freshSignalResponseRate, inquiry-landing outcome counts, respondedMessages, and a data-sufficiency check. Reply rates exclude bounces/auto-replies; per-bucket bounces + bounceRate are a threaded-only lower bound.

record_suggestionA

Persist an actionable suggestion for the user (surfaced in the Web UI dashboard). Reserve for actions only the user can perform. Upserts by kind + dedupeKey: refreshes an open suggestion, never resurrects a dismissed/done one — the confirmation reports id, status, and whether it was written or left untouched.

list_suggestionsA

List persisted suggestions for a project: id, kind, dedupeKey, title, body, command, status (open/dismissed/done), timestamps. Optional status filter.

get_documentA

Get the latest version of a project document by slug.

save_documentA

Save a project document by slug as a new immutable version; prior versions preserved.

list_documentsB

List all documents for a project with their last updated timestamps.

get_master_documentA

Get a shared master document by slug.

list_master_documentsB

List all available master documents (templates, guidelines, frameworks).

list_tenant_prospectsA

List existing prospects across the entire tenant, excluding do-not-contact prospects. No pagination — results beyond limit are truncated.

list_project_prospectsA

List a project's prospects with per-project status, priority, and matchReason. Unlike get_outbound_targets (reachable rows only), lists prospects in any status. Sorted by priority ascending, newest first within a rank.

link_existing_prospects_to_projectA

Link existing tenant prospects to a project; does NOT create new prospects or organizations. Skips prospects that are do_not_contact or not found in this tenant (per-prospect reason in skippedDetails); returns linked / alreadyLinked / skipped counts.

get_project_settingsA

Get user-editable project settings as JSON (outboundMode, sender identity, unsubscribeEnabled, footerOverride, inquiry-landing config, follow-up/recycle windows, outboundChannels, targetCountries, targetLanguage). Fields the user never set carry their column defaults; 404 when the project does not exist.

update_project_settingsA

Update user-editable project settings. Any omitted field keeps its current value. Pass null to clear nullable fields.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aitit-inc/leadace'

If you have feedback or need assistance with the MCP directory API, please join our Discord server