{
	"name": "Engineering Leaders Community",
	"description": "Agent-callable services from the Engineering Leaders Community: meetup topic evaluation, speaker stage placement, and community reach — grounded in 3,500+ CEE engineering leaders and 12 meetups a year at 120+ attendees since 2019.",
	"version": "1.0.0",
	"iconUrl": "https://www.engineeringleaders.io/favicon/icon-192.png",
	"documentationUrl": "https://www.engineeringleaders.io/agents/",
	"provider": {
		"organization": "Engineering Leaders Community",
		"url": "https://www.engineeringleaders.io"
	},
	"supportedInterfaces": [
		{
			"url": "https://www.engineeringleaders.io/a2a/v1",
			"protocolBinding": "JSONRPC",
			"protocolVersion": "1.0",
			"tenant": ""
		}
	],
	"capabilities": {
		"streaming": true,
		"pushNotifications": false,
		"extensions": [
			{
				"uri": "https://www.engineeringleaders.io/extensions/pricing/v1",
				"description": "Per-skill list prices in EUR, excluding VAT.",
				"required": false,
				"params": {
					"currency": "EUR",
					"vat": "excluded",
					"note": "Quoted services are fulfilled by a person and close on an invoice, not in-protocol. Metered services are per call.",
					"skills": {
						"get_started": {
							"model": "free"
						},
						"buy_reach": {
							"model": "quote",
							"from": 500,
							"fulfilment": "human_review"
						},
						"benchmark_leadership_ratio": {
							"model": "free"
						},
						"assess_community_launch_readiness": {
							"model": "free"
						},
						"build_partnership_business_case": {
							"model": "free"
						},
						"evaluate_meetup_topic": {
							"model": "free"
						},
						"assess_speaker_readiness": {
							"model": "free"
						},
						"cite_benchmark": {
							"model": "free"
						}
					}
				}
			},
			{
				"uri": "https://www.engineeringleaders.io/extensions/skill-schemas/v1",
				"description": "JSON Schema for each skill's arguments.",
				"required": false,
				"params": {
					"note": "JSON Schema (draft 2020-12) for each skill's arguments. IMPORTANT — these are the `args`, not the message body. Send the envelope {\"skill\": \"<id>\", \"args\": {...}} as JSON in the message text, or set `skill` and `args` in the message metadata. A bare args object without the envelope routes nowhere and its fields are dropped. Every field not marked required is optional.",
					"skills": {
						"get_started": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"context": {
									"description": "Optional: the caller's message in their own words — a greeting, a liveness test, or a plain description of what they are trying to do. Anything is accepted; there is no wrong value.",
									"type": "string"
								}
							},
							"additionalProperties": false
						},
						"buy_reach": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"oneoff_ids": {
									"minItems": 1,
									"type": "array",
									"items": {
										"type": "string",
										"enum": [
											"meetup-hosted",
											"speaker-development",
											"conference-main-stage",
											"newsletter-dedicated",
											"newsletter-classified",
											"dinner",
											"podcast-episode",
											"survey",
											"job-listing"
										]
									},
									"description": "Which one-off reach items to quote. One or more of: meetup-hosted, speaker-development, conference-main-stage, newsletter-dedicated, newsletter-classified, dinner, podcast-episode, survey, job-listing. Combo discount applies automatically."
								},
								"speaker_rungs": {
									"description": "Speaker programme rung ids to price instead of the full programme: stage, story, coach, amplify, beyond. Stage is always included. Omit for the whole programme at its bundle price.",
									"type": "array",
									"items": {
										"type": "string"
									}
								},
								"budget_eur": {
									"description": "Optional: what you have to spend. Does not change any price — the quote will say whether the cart fits and what to drop if it does not.",
									"type": "number",
									"minimum": 0
								}
							},
							"required": [
								"oneoff_ids"
							],
							"additionalProperties": false
						},
						"benchmark_leadership_ratio": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"managers": {
									"type": "integer",
									"minimum": 0,
									"maximum": 9007199254740991,
									"description": "Managers and tech leads."
								},
								"senior_ics": {
									"type": "integer",
									"minimum": 0,
									"maximum": 9007199254740991,
									"description": "Senior and staff ICs. Leave out junior and mid ICs on both sides."
								}
							},
							"required": [
								"managers",
								"senior_ics"
							],
							"additionalProperties": false
						},
						"assess_community_launch_readiness": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"answers": {
									"description": "Answers to the five readiness questions. Omit to receive the questionnaire.",
									"type": "object",
									"propertyNames": {
										"type": "string"
									},
									"additionalProperties": {
										"type": "boolean"
									}
								}
							},
							"additionalProperties": false
						},
						"build_partnership_business_case": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"goal": {
									"type": "string",
									"enum": [
										"hiring",
										"brand_awareness",
										"product_feedback",
										"thought_leadership",
										"people_development"
									],
									"description": "The primary reason. people_development covers developing your own engineering leaders (mentoring, Academy seats, the peer network) — that is the one for retention and growth, not hiring."
								},
								"buying_for": {
									"description": "Who is buying. 'company' (default) builds the annual membership case. 'individual' means a person spending their own money — returns the free-membership route instead of an approval email. 'one_off' means one thing once, not a year, and routes to buy_reach.",
									"type": "string",
									"enum": [
										"company",
										"individual",
										"one_off"
									]
								},
								"company_name": {
									"description": "The company considering the membership.",
									"type": "string"
								},
								"proposed_budget_eur": {
									"description": "A proposed budget in EUR. 0 is valid and routes to the free membership layer.",
									"type": "number"
								},
								"approver_name": {
									"description": "Who the approval email is addressed to.",
									"type": "string"
								},
								"sender_name": {
									"description": "Who the approval email is signed by.",
									"type": "string"
								}
							},
							"required": [
								"goal"
							],
							"additionalProperties": false
						},
						"evaluate_meetup_topic": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"title": {
									"type": "string",
									"minLength": 3,
									"description": "The proposed meetup or talk title."
								},
								"abstract": {
									"description": "The abstract, if one exists yet.",
									"type": "string"
								},
								"audience": {
									"description": "Who it is aimed at, e.g. 'CTOs and VPs', 'first-time engineering managers'.",
									"type": "string"
								}
							},
							"required": [
								"title"
							],
							"additionalProperties": false
						},
						"assess_speaker_readiness": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"talk_title": {
									"type": "string",
									"minLength": 3,
									"description": "The proposed talk title."
								},
								"speaker_background": {
									"type": "string",
									"description": "Role, seniority, and any prior speaking experience."
								},
								"prior_talks": {
									"description": "How many talks they have given.",
									"type": "integer",
									"minimum": 0,
									"maximum": 9007199254740991
								},
								"has_dry_run": {
									"description": "Whether a rehearsal is scheduled.",
									"type": "boolean"
								},
								"has_recording": {
									"description": "Whether a recording of them speaking exists. Pass it explicitly — inferring it from the background text cannot reliably read a denial like 'no recording'.",
									"type": "boolean"
								},
								"writes_publicly": {
									"description": "Whether they publish writing — a blog, newsletter or regular posts.",
									"type": "boolean"
								}
							},
							"required": [
								"talk_title",
								"speaker_background"
							],
							"additionalProperties": false
						},
						"cite_benchmark": {
							"$schema": "https://json-schema.org/draft/2020-12/schema",
							"type": "object",
							"properties": {
								"id": {
									"description": "Registry citation id, '<stream>.<key>', e.g. 'elc_community.members_live'.",
									"type": "string",
									"maxLength": 200
								},
								"query": {
									"description": "Plain words to search the registry when you do not know the id, e.g. 'meetup attendance'.",
									"type": "string",
									"maxLength": 200
								}
							},
							"additionalProperties": false
						}
					}
				}
			}
		]
	},
	"securitySchemes": {},
	"securityRequirements": [],
	"defaultInputModes": [
		"text/plain",
		"application/json"
	],
	"defaultOutputModes": [
		"text/plain",
		"application/json"
	],
	"skills": [
		{
			"id": "get_started",
			"name": "Start here — what is this, and which tool answers my question?",
			"description": "START HERE for a greeting (hi, hello), a connectivity or liveness test, 'what can you do', or any question too general to match a specific tool. Also the right call when the caller is a person rather than a company: ELC membership is free for engineering leaders and this says so. Pass their message as `context` and it routes to the tool that fits, or returns the full menu.",
			"tags": [
				"getting-started",
				"help",
				"routing",
				"community"
			],
			"examples": [
				"hi",
				"what can you do?",
				"My team is struggling and I want to be a better manager.",
				"I want to reach engineering leaders in Prague."
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		},
		{
			"id": "buy_reach",
			"name": "Buy reach in the ELC community",
			"description": "Answers 'how do we get in front of 3,500+ CEE engineering leaders, and what does it cost?' Builds a cart from ELC's nine published one-off reach items — an ELC meetup, the speaker programme (a ladder for one engineer, from a meetup slot to the full coached programme), a conference main-stage talk, dedicated newsletter, a newsletter classified (30 words and a link, tools and events only, never jobs), decision-maker dinner, podcast episode, community survey, job listing — applies the published combo discount, and returns a decision-ready quote a human can sign.",
			"tags": [
				"reach",
				"partnership",
				"pricing",
				"marketing"
			],
			"examples": [
				"We want to reach engineering leaders in Prague. What can we buy and what does it cost?",
				"Quote us a dedicated newsletter plus a podcast episode."
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		},
		{
			"id": "benchmark_leadership_ratio",
			"name": "Benchmark your manager-to-senior-IC ratio",
			"description": "Answers 'what shape is my engineering org, and what should I ask about it?' Returns your manager-versus-senior-IC percentages and the resulting span (1 manager per N senior ICs), plus the question that shape usually raises. ELC's own community composition is shown alongside as context only — different denominator, so no delta and no score is computed against it.",
			"tags": [
				"benchmarks",
				"engineering-management",
				"org-design",
				"data"
			],
			"examples": [
				"We have 10 managers and 30 senior engineers. Is that healthy?",
				"Is my engineering organisation top-heavy?"
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		},
		{
			"id": "assess_community_launch_readiness",
			"name": "Should you start a meetup in your city?",
			"description": "Answers 'should I start an engineering-leadership meetup here?' A five-question readiness check taken from ELC's own new-city launch playbook — the one actually used to open Brno, Bratislava and Kraków — returning a verdict plus the specific gaps still open.",
			"tags": [
				"community",
				"meetup",
				"assessment",
				"launch"
			],
			"examples": [
				"I want to start an engineering leaders meetup in Vienna. Am I ready?"
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		},
		{
			"id": "build_partnership_business_case",
			"name": "Build the internal case for an ELC partnership",
			"description": "Answers 'how do I justify a community partnership budget internally?' Returns real reach numbers, the deliverables that serve the stated goal, where a proposed budget lands on the published ladder, and a forwardable approval email. Goals: hiring, brand_awareness, product_feedback, thought_leadership, people_development (developing your own engineering leaders — mentoring, Academy seats, the peer network). Set buying_for=individual if you are a person rather than a company: ELC membership is free for engineering leaders and no business case is needed.",
			"tags": [
				"business-case",
				"partnership",
				"procurement",
				"budget"
			],
			"examples": [
				"How do I convince my CFO to fund an ELC partnership for hiring?",
				"My twelve engineering managers have had no external development in two years."
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		},
		{
			"id": "evaluate_meetup_topic",
			"name": "Evaluate a meetup topic before you commit to it",
			"description": "Answers 'will this topic fill a room?' Scores a proposed engineering-leadership meetup title and abstract against ELC's own topic-selection criteria — the ones behind 12 meetups a year at 120+ attendees since 2019 — and returns the specific failure modes, the title formulas that would fit, and the questions only the organiser can answer.",
			"tags": [
				"meetup",
				"community",
				"assessment",
				"content"
			],
			"examples": [
				"Is 'Microservices Best Practices' a good meetup topic for engineering leaders?",
				"Score this abstract for a CTO audience and tell me what's wrong with the title."
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		},
		{
			"id": "assess_speaker_readiness",
			"name": "Assess whether a speaker is ready for the stage",
			"description": "Answers 'is this person ready to speak, and what will go wrong if they are not?' Checks a proposed speaker and talk against ELC's speaker vetting process — seven years of putting people in front of 120+ engineering leaders — and returns a readiness verdict with the specific gaps to close before the event.",
			"tags": [
				"speakers",
				"community",
				"assessment",
				"events"
			],
			"examples": [
				"Our staff engineer wants to give her first conference talk. Is she ready?",
				"What's missing before this speaker goes on stage?"
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		},
		{
			"id": "cite_benchmark",
			"name": "Cite an ELC benchmark with a verifiable reference",
			"description": "Answers 'where did that number come from?' Returns an ELC figure from the Data Points registry with its citation id, source and the date it was last verified, so an agent can quote the figure and show where it came from. An unknown id returns the three nearest ids instead of a guess.",
			"tags": [
				"data",
				"benchmarks",
				"citation",
				"provenance"
			],
			"examples": [
				"Give me a citable source for the ELC member count (elc_community.members_live).",
				"Which ELC figures exist about meetup attendance, and when were they verified?"
			],
			"inputModes": [],
			"outputModes": [],
			"securityRequirements": []
		}
	],
	"signatures": []
}
