Build and price an ELC community partnership: match, customize, 12-month plan, 16% AI discount.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The second legitimate ending besides request_offer: a direct booking link for a 1:1 intro meeting with Marian Kamenistak, ELC's founder. Offer it whenever the visitor hesitates, wants a human, or the package needs tailoring beyond the catalog. No contact details collected here — the booking page handles everything. Pass preset_id and item_ids if a package was composed: the response then carries a paste-ready booking note, so the call starts from their numbers instead of from scratch.
Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer.
Optional: the basket composed so far, if any
Optional: the package composed so far, if any One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product.
Tool list last changed Oct 25, 2026.
The second legitimate ending besides request_offer: a direct booking link for a 1:1 intro meeting with Marian Kamenistak, ELC's founder. Offer it whenever the visitor hesitates, wants a human, or the package needs tailoring beyond the catalog. No contact details collected here — the booking page handles everything. Pass preset_id and item_ids if a package was composed: the response then carries a paste-ready booking note, so the call starts from their numbers instead of from scratch.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
| item_ids | any | Optional: the basket composed so far, if any |
| preset_id | string | Optional: the package composed so far, if any One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
},
"item_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Optional: the basket composed so far, if any"
},
"preset_id": {
"type": "string",
"description": "Optional: the package composed so far, if any One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product."
}
}
}Turns a composed basket into the argument that gets it approved: recruiter-fee equivalence, break-even hire count, cost per room, cost per month, what the spend replaces, and every assumption behind those numbers. Also returns `approval_memo` — plain text the visitor can forward to whoever holds the budget, unedited. Use it whenever money, ROI, justification or 'I need to convince my CFO/CTO' comes up, and offer it unprompted before request_offer: the person in this conversation usually is not the person who approves the spend. Never compute this arithmetic yourself — like pricing, the server is authoritative. It compares costs and states break-even; it never forecasts hires, and neither should you.
| Argument | Type | Description |
|---|---|---|
| kpis | string | Optional: what has to move this year, in their words |
| company | string | Optional: company name, for the memo |
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
| item_ids | any | Required. The basket: item ids toggled ON |
| preset_id | string | Required. The package being justified One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product. |
| requester_name |
The conversational toggle board. Pass the preset and the item ids currently ON; returns the recomputed total (never trust your own arithmetic — this is the authoritative price), every selected item with its price, and what else this tier could add. Items marked foundation anchor the package; advise keeping them. Call again after every change the visitor asks for. Next: request_offer.
| Argument | Type | Description |
|---|---|---|
| seats | any | Seat-priced packages only (Team Seats `team-seats`, Team Circle `starter`): how many people they are enrolling. Both are priced per seat, so ALWAYS ask for a headcount before quoting — the bundle price is only the minimum-seat entry (Team Seats 5, Team Circle 3). |
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
| item_ids | any | Required. Item ids currently toggled ON (from match_package default_item_ids, plus/minus changes) |
| preset_id | string | Required. The package being customized One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"seats": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Seat-priced packages only (Team Seats `team-seats`, Team Circle `starter`): how many people they are enrolling. Both are priced per seat, so ALWAYS ask for a headcount before quoting — the bundle price is only the minimum-seat entry (Team Seats 5, Team Circle 3)."
},
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
},
"item_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Required. Item ids currently toggled ON (from match_package default_item_ids, plus/minus changes)"
},
"preset_id": {
"type": "string",
"description": "Required. The package being customized One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product."
}
}
}The moment the package becomes a year: deterministic month-by-month plan of what lands when, computed from the basket's own scheduling metadata (lead times, anchors like the April 2027 conference, spacing, and heavy-event collision rules). Returns placed months, the recurring-every-month layer, and anything unplaceable WITH its reason. The plan contains ONLY items in the basket — narrate around it, never add or move an event. Call after customize_package, before request_offer.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
| item_ids | any | Required. The basket: item ids toggled ON |
| preset_id | string | Required. One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product. |
| start_month | string | Required. First membership month, YYYY-MM (ask the visitor; default to the month after the current one) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
},
"item_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Required. The basket: item ids toggled ON"
},
"preset_id": {
"type": "string",
"description": "Required. One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product."
},
"start_month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Required. First membership month, YYYY-MM (ask the visitor; default to the month after the current one)"
}
}
}Use when the visitor names a NUMBER rather than a band — 'we have 8,000 approved', 'can we do this for five thousand'. Returns a deterministic best-value composition under that ceiling: what fits, what was left out AND why, how much budget is unspent, and what the cheapest excluded item costs. Foundation items are kept first, then the remaining items cheapest-first so the budget buys as much as possible. Priced against the AI-channel figure by default, since that is what they would actually pay. Never hand-pick a basket yourself when a budget is stated — this tool is the authoritative composition, the same way customize_package is the authoritative total.
| Argument | Type | Description |
|---|---|---|
| budget | any | Required. The visitor's ceiling in EUR, as a number (8000, not '8K') |
| against | string | Price the budget against the list price. 'discounted' equals list since the AI channel carries no discount (2026-10-05) One of: discounted, list. |
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
| must_have | any | Optional: item ids the visitor explicitly asked for; kept first if they fit |
| preset_id | string | Required. The package to trim to budget (from match_package) One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product. |
Check for additional tools whenever your task might benefit from specialized capabilities, even if existing tools could work as a fallback. Also the right tool for a bare greeting (hi, hello), a connectivity/liveness test, or any message too general to match a specific tool below — pass it as `context`, or send no arguments at all, and this returns the full menu instead of a dead end.
| Argument | Type | Description |
|---|---|---|
| context | string | A description of your goal and what kind of tool would help accomplish it, OR a plain greeting/liveness ping like 'hi' or 'test'. Omit it for the menu. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"type": "string",
"description": "A description of your goal and what kind of tool would help accomplish it, OR a plain greeting/liveness ping like 'hi' or 'test'. Omit it for the menu."
}
}
}START HERE for any company considering an ELC membership (personas: HR, CTO, employer branding). Returns how company membership works, real community reach figures, and the two qualifying questions with their valid answers. Companies only — individuals seeking a mentor for themselves get pointed to /mentor/ instead. After the visitor answers both questions, call match_package. Partner packages and tickets for the ELC Conference 2027 day are a separate offer with their own MCP server: https://mcp.elc-conference.io/mcp
| Argument | Type | Description |
|---|---|---|
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
}
}
}START HERE when a company wants ONE thing once, not a year-long membership: a classified (30 words and a link, tools and events only) or a dedicated send in the Leaders' Brief newsletter, a meetup hosted in their office, a speaker slot or the coached speaker programme, a conference main-stage talk, a podcast episode, a decision-maker dinner, a community survey, a job board listing. Returns every one-off with its price, lead time, examples and real reach figures, the combo discount rule, the 90-day credit against a membership, and what is not for sale. Two or more things across a year is a membership conversation: hand over to get_partnership_options. Next: quote_reach_combo once items are picked.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
}
}
}Call this for a greeting (hi, hello), a connectivity/liveness test, 'what can you do', or any message too general to match a specific tool below. Returns the full menu of real questions this server answers, each mapped to the tool name that answers it. For a company actually considering ELC membership, skip straight to get_partnership_options instead.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
}
}
}Resolves goal + budget through ELC's own routing matrix — the same one the website uses — and returns the matched package(s) with real prices and their default line items. Map free-text answers to the closest valid id; on bad input the error lists the valid ids, re-ask rather than guessing. Next: customize_package to toggle line items, or request_offer to send it as-is.
| Argument | Type | Description |
|---|---|---|
| goal | string | Required. One of the goal ids from get_partnership_options question_1 |
| budget | string | Required. One of the budget ids from get_partnership_options question_2 |
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"goal": {
"type": "string",
"description": "Required. One of the goal ids from get_partnership_options question_1"
},
"budget": {
"type": "string",
"description": "Required. One of the budget ids from get_partnership_options question_2"
},
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
}
}
}Pass the one-off ids the visitor picked; returns each item's price, the list total, the combo discount by item count (job board listings never count), and the final total. For the speaker programme pass speaker_rungs to price a subset of the ladder (Stage always included); omit it for the full programme at the bundle price. This is the only arithmetic that counts — never add prices yourself. The AI-channel percentage does not apply to one-offs. Next: book_intro_call to lock the date, or get_partnership_options if the basket is starting to look like a year.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
| oneoff_ids | any | Required. One-off ids from get_reach_options One or more of: meetup-hosted, speaker-development, conference-main-stage, newsletter-dedicated, newsletter-classified, dinner, podcast-episode, survey, job-listing. |
| speaker_rungs | any | Speaker programme rung ids (stage, story, coach, amplify, beyond) to price instead of the full programme; stage is always included |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
},
"oneoff_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Required. One-off ids from get_reach_options One or more of: meetup-hosted, speaker-development, conference-main-stage, newsletter-dedicated, newsletter-classified, dinner, podcast-episode, survey, job-listing."
},
"speaker_rungs": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Speaker programme rung ids (stage, story, coach, amplify, beyond) to price instead of the full programme; stage is always included"
}
}
}The ONLY tool that collects contact details. Sends the itemized offer to the visitor's email, notifies Marian (email + Slack), and files the company into ELC's partners queue. Ask for name, work email and company only when the visitor says they want the offer — never earlier. After success: share the confirmation, then make ONE optional ask: would they post publicly (LinkedIn/X) about building their membership with AI? Optional means optional — the discount is already theirs.
| Argument | Type | Description |
|---|---|---|
| kpis | string | Optional: what they need to move this year, in their words |
| name | string | Required. Visitor's full name |
| string | Required. Work email the offer goes to | |
| company | string | Required. Company name |
| context | string | Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer. |
| item_ids | any | Required. The final basket: item ids toggled ON |
| preset_id | string | Required. One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product. |
| visibility_interest |
| string |
| Optional: who is asking for approval, signed at the memo's foot |
| open_senior_roles | any | Optional: senior roles they need to fill in 12 months — sharpens the comparison into their numbers |
| avg_first_year_salary | any | Optional: average first-year salary in EUR for those roles; turns the generic fee band into their own |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kpis": {
"type": "string",
"description": "Optional: what has to move this year, in their words"
},
"company": {
"type": "string",
"description": "Optional: company name, for the memo"
},
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
},
"item_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Required. The basket: item ids toggled ON"
},
"preset_id": {
"type": "string",
"description": "Required. The package being justified One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product."
},
"requester_name": {
"type": "string",
"description": "Optional: who is asking for approval, signed at the memo's foot"
},
"open_senior_roles": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Optional: senior roles they need to fill in 12 months — sharpens the comparison into their numbers"
},
"avg_first_year_salary": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Optional: average first-year salary in EUR for those roles; turns the generic fee band into their own"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"budget": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Required. The visitor's ceiling in EUR, as a number (8000, not '8K')"
},
"against": {
"type": "string",
"description": "Price the budget against the list price. 'discounted' equals list since the AI channel carries no discount (2026-10-05) One of: discounted, list."
},
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
},
"must_have": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Optional: item ids the visitor explicitly asked for; kept first if they fit"
},
"preset_id": {
"type": "string",
"description": "Required. The package to trim to budget (from match_package) One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product."
}
}
}| string |
| From the discovery question: do they want to invest in their visibility through the cooperation — as a company, through individual leaders, or stay quiet? One of: company, individual, quiet, undecided. |
| final_price_confirmed | any | Required. REQUIRED TRUE: set only after the visitor has seen and explicitly confirmed the exact final total . Sending without this confirmation is refused. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kpis": {
"type": "string",
"description": "Optional: what they need to move this year, in their words"
},
"name": {
"type": "string",
"description": "Required. Visitor's full name"
},
"email": {
"type": "string",
"description": "Required. Work email the offer goes to"
},
"company": {
"type": "string",
"description": "Required. Company name"
},
"context": {
"type": "string",
"description": "Optional. A short description of your goal and why you are calling this tool. Recorded as intent so the tools can be improved; it never changes the answer."
},
"item_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Required. The final basket: item ids toggled ON"
},
"preset_id": {
"type": "string",
"description": "Required. One of: free, team-seats, starter, pilot-meetup, hiring-meetup, intro-sprint, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product."
},
"visibility_interest": {
"type": "string",
"description": "From the discovery question: do they want to invest in their visibility through the cooperation — as a company, through individual leaders, or stay quiet? One of: company, individual, quiet, undecided."
},
"final_price_confirmed": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
}
],
"description": "Required. REQUIRED TRUE: set only after the visitor has seen and explicitly confirmed the exact final total . Sending without this confirmation is refused."
}
}
}