MCP 서버

elc-partnership-builder

io.engineeringleaders/elc-partnership-builder
비즈니스 및 운영 영업 및 CRM 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Builds, prices, customizes, and submits company partnership and membership offers, including ROI cases and booking requests.

book_intro_call
Book an intro meeting with Marian (the human ending)
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.
읽기 전용 멱등성
입력 스키마
{'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, starter, leadership-pilot, pilot-meetup, signature-meetup, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product.'}}}
build_business_case
Compute the ROI case and a forwardable approval memo
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.
읽기 전용 멱등성
입력 스키마
{'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, starter, leadership-pilot, pilot-meetup, signature-meetup, 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 â\x80\x94 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'}}}
customize_package
Customize a package: toggle line items, recompute the total
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'seats': {'anyOf': [{'type': 'number'}, {'type': 'string'}], 'description': 'Starter only: how many people they are enrolling. Starter is priced per seat with volume bands, so ALWAYS ask for a headcount before quoting it â\x80\x94 the bundle price is only the 3-seat entry.'}, '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, starter, leadership-pilot, pilot-meetup, signature-meetup, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product.'}}}
design_journey
Lay out the 12-month membership journey for a basket
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.
읽기 전용 멱등성
입력 스키마
{'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, starter, leadership-pilot, pilot-meetup, signature-meetup, 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)'}}}
fit_to_budget
Compose the best package for an exact budget
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.
읽기 전용 멱등성
입력 스키마
{'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 AI-channel figure (default) or the list price 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, starter, leadership-pilot, pilot-meetup, signature-meetup, launch-audit, community-launch, launch-run, hiring, education, vital, visibility, story, product.'}}}
get_more_tools
Report a missing capability — also answers a bare hello/liveness ping
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.
읽기 전용 멱등성
입력 스키마
{'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."}}}
get_partnership_options
How ELC company membership works + the two qualifying questions
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.
읽기 전용 멱등성
입력 스키마
{'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.'}}}
get_reach_options
One-offs: single items a company buys once, with prices
START HERE when a company wants ONE thing once, not a year-long membership: a section or a dedicated send in the Leaders' Brief newsletter, a meetup hosted in their office, a podcast episode, a decision-maker dinner, a community survey, a demo session, a LinkedIn post, 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.
읽기 전용 멱등성
입력 스키마
{'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.'}}}
get_started
Start here — what can this MCP server do?
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.
읽기 전용 멱등성
입력 스키마
{'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.'}}}
match_package
Match a membership package to a goal and budget
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.
읽기 전용 멱등성
입력 스키마
{'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.'}}}
quote_reach_combo
Price a one-off basket (authoritative total with the combo discount)
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. 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.
읽기 전용 멱등성
입력 스키마
{'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-presence, newsletter-section, newsletter-dedicated, meetup-hosted, meetup-signature, podcast-episode, dinner, survey, demo-session, webinar, linkedin-post, job-listing, speaker-development.'}}}
request_offer
Send the composed offer to ELC (applies the AI-channel discount)
The ONLY tool that collects contact details, and the step that makes the AI-channel discount real. 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.
외부 접근 가능
입력 스키마
{'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, starter, leadership-pilot, pilot-meetup, signature-meetup, 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 â\x80\x94 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 (the discounted figure if the discount applies). Sending without this confirmation is refused.'}}}
변경됨
quote_reach_combo
2026년 9월 27일 2:43 AM
변경됨
quote_reach_combo
2026년 9월 23일 2:42 AM
변경됨
request_offer
2026년 9월 19일 2:41 AM
변경됨
design_journey
2026년 9월 19일 2:41 AM
변경됨
build_business_case
2026년 9월 19일 2:41 AM
변경됨
fit_to_budget
2026년 9월 19일 2:41 AM
변경됨
book_intro_call
2026년 9월 19일 2:41 AM
변경됨
customize_package
2026년 9월 19일 2:41 AM
변경됨
quote_reach_combo
2026년 9월 19일 2:41 AM
추가됨
request_offer
2026년 9월 17일 12:40 PM
추가됨
design_journey
2026년 9월 17일 12:40 PM
추가됨
build_business_case
2026년 9월 17일 12:40 PM
추가됨
fit_to_budget
2026년 9월 17일 12:40 PM
추가됨
book_intro_call
2026년 9월 17일 12:40 PM
추가됨
customize_package
2026년 9월 17일 12:40 PM
추가됨
match_package
2026년 9월 17일 12:40 PM
추가됨
get_partnership_options
2026년 9월 17일 12:40 PM
추가됨
quote_reach_combo
2026년 9월 17일 12:40 PM
추가됨
get_reach_options
2026년 9월 17일 12:40 PM
추가됨
get_more_tools
2026년 9월 17일 12:40 PM
추가됨
get_started
2026년 9월 17일 12:40 PM