Commerce for Agents
Ce que fait ce MCP
Compares US mobile and broadband plans and German energy tariffs, provides tariff details, and supports energy-switch booking requests.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ref', 'salutation', 'firstName', 'lastName', 'birthDate', 'email', 'street', 'houseNumber', 'switchType', 'iban', 'consent'], 'properties': {'ref': {'type': 'string', 'pattern': '^[a-z0-9]+\\.\\d+$', 'description': 'Offer reference from a compare-tariffs result (field `ref`).'}, 'iban': {'type': 'string', 'pattern': '^[A-Z]{2}\\d{2}[A-Z0-9]{10,30}$', 'description': 'IBAN for the SEPA direct-debit mandate, no spaces (e.g. DE89370400440532013000).'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address — receives the booking confirmation and provider documents.'}, 'phone': {'type': 'string', 'maxLength': 40, 'description': 'Phone number (optional, some providers ask for it).'}, 'street': {'type': 'string', 'maxLength': 150, 'minLength': 1, 'description': 'Street of the supply address (Straße).'}, 'consent': {'type': 'boolean', 'const': True, 'description': "The user has explicitly agreed to: (1) Commerce for Agents submitting this contract on their behalf, (2) the provider's contract terms as shown by tariff-details, (3) the SEPA mandate for the given IBAN, (4) the privacy policy — and has been told the contract can be withdrawn within 14 days. True only after that agreement."}, 'language': {'enum': ['de', 'en'], 'type': 'string', 'description': 'Language of the conversation — used for the confirmation email. Default: "de".'}, 'lastName': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Last name (Nachname).'}, 'birthDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date of birth, ISO format YYYY-MM-DD. Energy providers require it for the contract.'}, 'firstName': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'First name (Vorname).'}, 'moveInDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Move-in date (Umzugsdatum), ISO YYYY-MM-DD. Required for switchType "relocation", ignored for a switch.'}, 'salutation': {'enum': ['herr', 'frau', 'divers'], 'type': 'string', 'description': 'Salutation (Anrede), required by the providers: "herr", "frau" or "divers".'}, 'switchType': {'enum': ['switch', 'relocation'], 'type': 'string', 'description': '"switch": changing provider at the current address (Anbieterwechsel). "relocation": moving in / first contract at this address (Umzug/Neueinzug).'}, 'houseNumber': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'House number (Hausnummer), e.g. "12a".'}, 'meterNumber': {'type': 'string', 'maxLength': 60, 'description': 'Meter number (Zählernummer, optional — printed on the meter or the last bill).'}, 'accountHolder': {'type': 'string', 'maxLength': 150, 'description': 'Account holder if different from the contract holder.'}, 'desiredStartDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Desired contract start, ISO YYYY-MM-DD. Omit for the next possible date.'}, 'previousProvider': {'type': 'string', 'maxLength': 150, 'description': 'Current/previous energy provider. Required for switchType "switch".'}, 'previousCustomerNumber': {'type': 'string', 'maxLength': 60, 'description': 'Customer number at the previous provider (Kundennummer, optional but speeds up the switch).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['requestId', 'status', 'provider', 'tariff', 'annualTotalEur', 'nextSteps'], 'properties': {'status': {'type': 'string', 'const': 'received'}, 'tariff': {'type': 'string'}, 'provider': {'type': 'string'}, 'nextSteps': {'type': 'string'}, 'requestId': {'type': 'string'}, 'annualTotalEur': {'type': 'number'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude, if no address is given.'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude, if no address is given.'}, 'address': {'type': 'string', 'minLength': 5, 'description': 'US street address incl. city and state or ZIP.'}, 'technology': {'type': 'array', 'items': {'enum': ['fiber', 'cable', 'dsl', 'fixed_wireless', 'satellite', 'other'], 'type': 'string'}, 'description': 'Only these technologies.'}, 'minDownloadMbps': {'type': 'number', 'minimum': 0, 'description': 'Only providers advertising at least this download speed.'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'lines': {'type': 'integer', 'default': 1, 'maximum': 6, 'minimum': 1, 'description': 'Number of phone lines to price.'}, 'data_need': {'enum': ['light', 'moderate', 'heavy', 'unlimited'], 'type': 'string', 'description': 'Minimum data: light ≥2GB, moderate ≥5GB, heavy ≥20GB, unlimited = unlimited plans only.'}, 'must_haves': {'type': 'array', 'items': {'enum': ['hotspot', '5g', 'premium_data', 'unlimited_data'], 'type': 'string'}, 'description': 'Required features: hotspot, 5g, premium_data (deprioritization-free), unlimited_data.'}, 'budget_per_line': {'type': 'number', 'minimum': 0, 'description': 'Max USD/month per line.'}, 'preferred_network': {'type': 'string', 'description': 'Preferred underlying network, e.g. AT&T, Verizon, T-Mobile.'}, 'prepaid_or_postpaid': {'enum': ['prepaid', 'postpaid'], 'type': 'string', 'description': 'Restrict to prepaid or postpaid plans; omit for both.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['plans', 'lines', 'selectionNote', 'catalogPlanCount', 'catalogProviderCount', 'coverageNote', 'priceNote', 'source'], 'properties': {'lines': {'type': 'number'}, 'plans': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'id', 'provider', 'plan', 'network', 'prepaid', 'effectivePricePerLine', 'steadyStatePricePerLine', 'effectiveTotalMonthly', 'verifiedDate', 'sourceUrl'], 'properties': {'id': {'type': 'string'}, 'plan': {'type': 'string'}, 'rank': {'type': 'number'}, 'network': {'type': 'string'}, 'prepaid': {'type': 'boolean'}, 'offerUrl': {'type': 'string'}, 'provider': {'type': 'string'}, 'sourceUrl': {'type': 'string'}, 'verifiedDate': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'taxesIncluded': {'type': 'boolean'}, 'billedAnnually': {'type': 'boolean', 'description': 'Paid upfront for a year; price is the per-month equivalent.'}, 'autopayRequired': {'type': 'boolean'}, 'promoPricePerLine': {'type': 'number'}, 'promoDurationMonths': {'type': 'number'}, 'effectivePricePerLine': {'type': 'number', 'description': '12-month average USD per line; the ranking price.'}, 'effectiveTotalMonthly': {'type': 'number'}, 'steadyStatePricePerLine': {'type': 'number', 'description': 'Regular USD per line after any promo.'}}, 'additionalProperties': {}}}, 'source': {'type': 'string'}, 'message': {'type': 'string'}, 'priceNote': {'type': 'string'}, 'coverageNote': {'type': 'string'}, 'selectionNote': {'type': 'string', 'description': 'Curated selection of N plans from M providers, not the whole market.'}, 'catalogPlanCount': {'type': 'number'}, 'oldestVerifiedDate': {'type': 'string', 'description': 'Oldest verified_date among the plans shown.'}, 'catalogProviderCount': {'type': 'number'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postalCode', 'annualConsumptionKwh'], 'properties': {'page': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Result page (1-based). The response reports totalResults; request further pages to see more of the ranking.'}, 'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Tariffs per page. Default: 10, max 20.'}, 'sortBy': {'enum': ['price', 'rating', 'providerName'], 'type': 'string', 'description': 'Market-wide sort: "price" (first-year total, default), "rating" (customer rating, best first), "providerName".'}, 'district': {'type': 'string', 'maxLength': 100, 'description': "City district (Ortsteil), only needed when the response reports multiple districts for the postal code and the user's district changes the result."}, 'language': {'enum': ['de', 'en'], 'type': 'string', 'description': "Language of the conversation. The widget's texts and its follow-up messages use it; omit only if unsure, then the user's interface locale is used."}, 'bonusMode': {'enum': ['compliant', 'all', 'none'], 'type': 'string', 'description': 'How one-time bonuses count in prices and ranking. "compliant" (default): only bonuses meeting consumer-protection guidelines; "all": every bonus; "none": prices without any bonus.'}, 'greenOnly': {'type': 'boolean', 'description': 'Only eco tariffs (EU EmpCo definition): electricity from 100% renewable energy proven by guarantees of origin; gas with a declared biogas/hydrogen share. CO2-compensated ("Klimagas", "klimaneutral") tariffs are NOT eco. Default: false.'}, 'providers': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'maxItems': 10, 'description': 'Only offers from these providers (names, e.g. ["Vattenfall", "E WIE EINFACH"]). Restricts the ranking to these providers.'}, 'energyType': {'enum': ['electricity', 'gas'], 'type': 'string', 'description': 'Which energy contract to compare: "electricity" (Strom) or "gas". Default: "electricity".'}, 'postalCode': {'type': 'string', 'pattern': '^\\d{5}$', 'description': 'German postal code (Postleitzahl) — 5 digits, e.g. "10115" for Berlin.'}, 'regionalOnly': {'type': 'boolean', 'description': 'Only regional providers / local utilities. Default: false.'}, 'currentTariff': {'type': 'string', 'maxLength': 150, 'description': "The user's current tariff name, if known (e.g. from the bill)."}, 'goodRatingOnly': {'type': 'boolean', 'description': "Only providers with good customer ratings (market operator's threshold). Default: false."}, 'includeDeposit': {'type': 'boolean', 'description': 'Include tariffs requiring a deposit (Kaution). Default: false.'}, 'cancellationMax': {'enum': ['1_month', '6_weeks', '3_months'], 'type': 'string', 'description': 'Maximum cancellation period (Kündigungsfrist). Omit = no filter.'}, 'currentProvider': {'type': 'string', 'maxLength': 150, 'description': "The user's current provider, if known (e.g. from the bill)."}, 'contractMonthsMax': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 6}, {'type': 'number', 'const': 12}, {'type': 'number', 'const': 24}, {'type': 'null'}], 'description': 'Maximum initial contract duration in months (1, 3, 6, 12 or 24). Default: no limit.'}, 'includePrepayment': {'type': 'boolean', 'description': 'Include tariffs requiring prepayment (Vorauskasse). Default: false.'}, 'annualConsumptionKwh': {'type': 'integer', 'maximum': 1000000, 'description': "The household's actual annual consumption in kWh, from the user or their last bill; no default. The ranking depends on it. Typical values by household size: electricity ~1500 (1 person), 2500 (2), 3500 (3), 4500 (4+); gas ~9000 (flat), ~20000 (house).", 'exclusiveMinimum': 0}, 'currentAnnualCostEur': {'type': 'number', 'maximum': 100000, 'description': "The user's ONGOING yearly cost on their current contract in EUR: current prices, one-time bonuses EXCLUDED. Not the bill total: a new-customer bonus is paid once, so the total of a bonus year understates what they pay next year. Compute Arbeitspreis × kWh / 100 + 12 × Grundpreis (post-increase prices if the bill announces one), or better: pass currentWorkingPriceCtKwh + currentBasePriceEurMonth and let the server compute it. When given, savings are computed against this instead of the default utility tariff.", 'exclusiveMinimum': 0}, 'includeDynamicTariffs': {'type': 'boolean', 'description': 'Include dynamic (spot-price) tariffs whose first-year price is only a forecast. Default: false, since most German households book fixed-price tariffs.'}, 'includePackageTariffs': {'type': 'boolean', 'description': 'Include kWh-package tariffs (Pakettarife). Default: false.'}, 'maxTariffsPerProvider': {'type': 'integer', 'maximum': 5, 'minimum': 0, 'description': 'Tariffs per provider in the ranking. Default 1 (best per provider); 0 = all tariffs of every provider.'}, 'priceGuaranteeMonthsMin': {'anyOf': [{'type': 'number', 'const': 6}, {'type': 'number', 'const': 12}, {'type': 'number', 'const': 24}, {'type': 'null'}], 'description': 'Minimum price-guarantee duration in months. null = no filter (default).'}, 'currentBasePriceEurMonth': {'type': 'number', 'maximum': 1000, 'minimum': 0, 'description': "Grundpreis of the user's current contract in EUR per month, gross (a yearly Grundpreis divided by 12)."}, 'currentMonthlyPaymentEur': {'type': 'number', 'maximum': 10000, 'description': "The FUTURE monthly payment (Abschlag) stated on the bill for the coming period, e.g. 'Ihr monatlicher Zahlbetrag beträgt zukünftig 159,00 €'. It already reflects price changes after the billing period, which the bill's Arbeitspreis/Grundpreis lines predate. Takes precedence over the price components.", 'exclusiveMinimum': 0}, 'currentWorkingPriceCtKwh': {'type': 'number', 'maximum': 500, 'description': "Arbeitspreis of the user's current contract in ct/kWh, gross, as printed on the bill (the new price if an increase is announced). Together with currentBasePriceEurMonth the server computes the ongoing yearly cost itself — preferred over currentAnnualCostEur.", 'exclusiveMinimum': 0}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query', 'city', 'totalResults', 'page', 'hiddenDynamicTariffs', 'coverageNote', 'tariffs'], 'properties': {'city': {'type': 'object', 'required': ['name', 'zipcode'], 'properties': {'name': {'type': 'string'}, 'zipcode': {'type': 'string'}, 'district': {'type': 'string'}}, 'additionalProperties': False}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'query': {'type': 'object', 'required': ['postalCode', 'annualConsumptionKwh'], 'properties': {'page': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Result page (1-based). The response reports totalResults; request further pages to see more of the ranking.'}, 'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Tariffs per page. Default: 10, max 20.'}, 'sortBy': {'enum': ['price', 'rating', 'providerName'], 'type': 'string', 'description': 'Market-wide sort: "price" (first-year total, default), "rating" (customer rating, best first), "providerName".'}, 'district': {'type': 'string', 'maxLength': 100, 'description': "City district (Ortsteil), only needed when the response reports multiple districts for the postal code and the user's district changes the result."}, 'language': {'enum': ['de', 'en'], 'type': 'string', 'description': "Language of the conversation. The widget's texts and its follow-up messages use it; omit only if unsure, then the user's interface locale is used."}, 'bonusMode': {'enum': ['compliant', 'all', 'none'], 'type': 'string', 'description': 'How one-time bonuses count in prices and ranking. "compliant" (default): only bonuses meeting consumer-protection guidelines; "all": every bonus; "none": prices without any bonus.'}, 'greenOnly': {'type': 'boolean', 'description': 'Only eco tariffs (EU EmpCo definition): electricity from 100% renewable energy proven by guarantees of origin; gas with a declared biogas/hydrogen share. CO2-compensated ("Klimagas", "klimaneutral") tariffs are NOT eco. Default: false.'}, 'providers': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'maxItems': 10, 'description': 'Only offers from these providers (names, e.g. ["Vattenfall", "E WIE EINFACH"]). Restricts the ranking to these providers.'}, 'energyType': {'enum': ['electricity', 'gas'], 'type': 'string', 'description': 'Which energy contract to compare: "electricity" (Strom) or "gas". Default: "electricity".'}, 'postalCode': {'type': 'string', 'pattern': '^\\d{5}$', 'description': 'German postal code (Postleitzahl) — 5 digits, e.g. "10115" for Berlin.'}, 'regionalOnly': {'type': 'boolean', 'description': 'Only regional providers / local utilities. Default: false.'}, 'currentTariff': {'type': 'string', 'maxLength': 150, 'description': "The user's current tariff name, if known (e.g. from the bill)."}, 'goodRatingOnly': {'type': 'boolean', 'description': "Only providers with good customer ratings (market operator's threshold). Default: false."}, 'includeDeposit': {'type': 'boolean', 'description': 'Include tariffs requiring a deposit (Kaution). Default: false.'}, 'cancellationMax': {'enum': ['1_month', '6_weeks', '3_months'], 'type': 'string', 'description': 'Maximum cancellation period (Kündigungsfrist). Omit = no filter.'}, 'currentProvider': {'type': 'string', 'maxLength': 150, 'description': "The user's current provider, if known (e.g. from the bill)."}, 'contractMonthsMax': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 6}, {'type': 'number', 'const': 12}, {'type': 'number', 'const': 24}, {'type': 'null'}], 'description': 'Maximum initial contract duration in months (1, 3, 6, 12 or 24). Default: no limit.'}, 'includePrepayment': {'type': 'boolean', 'description': 'Include tariffs requiring prepayment (Vorauskasse). Default: false.'}, 'annualConsumptionKwh': {'type': 'integer', 'maximum': 1000000, 'description': "The household's actual annual consumption in kWh, from the user or their last bill; no default. The ranking depends on it. Typical values by household size: electricity ~1500 (1 person), 2500 (2), 3500 (3), 4500 (4+); gas ~9000 (flat), ~20000 (house).", 'exclusiveMinimum': 0}, 'currentAnnualCostEur': {'type': 'number', 'maximum': 100000, 'description': "The user's ONGOING yearly cost on their current contract in EUR: current prices, one-time bonuses EXCLUDED. Not the bill total: a new-customer bonus is paid once, so the total of a bonus year understates what they pay next year. Compute Arbeitspreis × kWh / 100 + 12 × Grundpreis (post-increase prices if the bill announces one), or better: pass currentWorkingPriceCtKwh + currentBasePriceEurMonth and let the server compute it. When given, savings are computed against this instead of the default utility tariff.", 'exclusiveMinimum': 0}, 'includeDynamicTariffs': {'type': 'boolean', 'description': 'Include dynamic (spot-price) tariffs whose first-year price is only a forecast. Default: false, since most German households book fixed-price tariffs.'}, 'includePackageTariffs': {'type': 'boolean', 'description': 'Include kWh-package tariffs (Pakettarife). Default: false.'}, 'maxTariffsPerProvider': {'type': 'integer', 'maximum': 5, 'minimum': 0, 'description': 'Tariffs per provider in the ranking. Default 1 (best per provider); 0 = all tariffs of every provider.'}, 'priceGuaranteeMonthsMin': {'anyOf': [{'type': 'number', 'const': 6}, {'type': 'number', 'const': 12}, {'type': 'number', 'const': 24}, {'type': 'null'}], 'description': 'Minimum price-guarantee duration in months. null = no filter (default).'}, 'currentBasePriceEurMonth': {'type': 'number', 'maximum': 1000, 'minimum': 0, 'description': "Grundpreis of the user's current contract in EUR per month, gross (a yearly Grundpreis divided by 12)."}, 'currentMonthlyPaymentEur': {'type': 'number', 'maximum': 10000, 'description': "The FUTURE monthly payment (Abschlag) stated on the bill for the coming period, e.g. 'Ihr monatlicher Zahlbetrag beträgt zukünftig 159,00 €'. It already reflects price changes after the billing period, which the bill's Arbeitspreis/Grundpreis lines predate. Takes precedence over the price components.", 'exclusiveMinimum': 0}, 'currentWorkingPriceCtKwh': {'type': 'number', 'maximum': 500, 'description': "Arbeitspreis of the user's current contract in ct/kWh, gross, as printed on the bill (the new price if an increase is announced). Together with currentBasePriceEurMonth the server computes the ongoing yearly cost itself — preferred over currentAnnualCostEur.", 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'tariffs': {'type': 'array', 'items': {'type': 'object', 'required': ['ref', 'tariffId', 'resultPosition', 'provider', 'providerId', 'name', 'price', 'contract', 'flags', 'rating', 'badges', 'remarks'], 'properties': {'eco': {'type': 'object', 'required': ['kind', 'statement', 'proof'], 'properties': {'kind': {'enum': ['electricity', 'gas'], 'type': 'string'}, 'proof': {'type': 'string', 'description': 'Proof text that belongs to the marker (guarantees of origin, or the biogas/hydrogen shares). Legally required wording (EmpCo): quote verbatim.'}, 'statement': {'type': 'string', 'description': 'Marker text in the request language. Legally required wording (EmpCo): quote verbatim.'}, 'certificates': {'type': 'array', 'items': {'type': 'string'}}, 'biogasPercent': {'type': 'number'}, 'hydrogenPercent': {'type': 'number'}}, 'additionalProperties': False}, 'ref': {'type': 'string'}, 'name': {'type': 'string'}, 'flags': {'type': 'object', 'required': ['isDynamic', 'isEco', 'isSecureTariff', 'isMostFairTariff', 'imminentPriceChange', 'isLocalUtility'], 'properties': {'isEco': {'type': 'boolean'}, 'isDynamic': {'type': 'boolean'}, 'isLocalUtility': {'type': 'boolean'}, 'isSecureTariff': {'type': 'boolean'}, 'isMostFairTariff': {'type': 'boolean'}, 'imminentPriceChange': {'type': 'boolean'}}, 'additionalProperties': False}, 'price': {'type': 'object', 'required': ['yearlyEur', 'monthlyAvgEur', 'yearlyWithoutBonusEur', 'bonusEur', 'bonuses'], 'properties': {'bonuses': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'amountEur'], 'properties': {'label': {'type': 'string'}, 'amountEur': {'type': 'number'}}, 'additionalProperties': False}}, 'bonusEur': {'type': 'number'}, 'yearlyEur': {'type': 'number'}, 'monthlyAvgEur': {'type': 'number'}, 'effectiveCtKwh': {'type': 'number'}, 'basePriceEurMonth': {'type': 'number'}, 'workingPriceCtKwh': {'type': 'number'}, 'savingsVsCurrentEur': {'type': 'number'}, 'savingsVsDefaultEur': {'type': 'number'}, 'paymentMonthsPerYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'yearlyWithoutBonusEur': {'type': 'number'}}, 'additionalProperties': False}, 'badges': {'type': 'array', 'items': {'type': 'string'}}, 'rating': {'type': 'object', 'properties': {'stars': {'type': 'number'}, 'reviews': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'pricePct': {'type': 'number'}, 'servicePct': {'type': 'number'}, 'switchingPct': {'type': 'number'}, 'wouldSwitchAgainPct': {'type': 'number'}}, 'additionalProperties': False}, 'remarks': {'type': 'array', 'items': {'type': 'string'}}, 'contract': {'type': 'object', 'properties': {'prolongation': {'type': 'string'}, 'durationMonths': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'cancellationPeriod': {'type': 'string'}, 'priceGuaranteeType': {'type': 'string'}, 'priceGuaranteeUntil': {'type': 'string'}, 'priceGuaranteeMonths': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'provider': {'type': 'string'}, 'tariffId': {'type': 'string'}, 'providerId': {'type': 'string'}, 'resultPosition': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'providerLogoUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}}, 'coverageNote': {'type': 'string'}, 'priceSpanEur': {'type': 'object', 'required': ['min', 'max'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}}, 'additionalProperties': False}, 'totalResults': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'referenceNote': {'type': 'string'}, 'otherDistricts': {'type': 'array', 'items': {'type': 'string'}}, 'referenceTariff': {'type': 'object', 'required': ['provider', 'name', 'annualTotalEur', 'source'], 'properties': {'name': {'type': 'string'}, 'basis': {'enum': ['monthlyPayment', 'priceComponents', 'statedAnnualCost'], 'type': 'string'}, 'source': {'enum': ['default', 'current'], 'type': 'string'}, 'provider': {'type': 'string'}, 'annualTotalEur': {'type': 'number'}, 'monthlyPaymentEur': {'type': 'number'}, 'workingPriceCtKwh': {'type': 'number'}}, 'additionalProperties': False}, 'hiddenDynamicTariffs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ref'], 'properties': {'ref': {'type': 'string', 'pattern': '^[a-z0-9]+\\.\\d+$', 'description': 'Offer reference from a compare-tariffs result (field `ref`). No personal data.'}, 'language': {'enum': ['de', 'en'], 'type': 'string', 'description': 'Language of the conversation; the booking form uses it. Default: de.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ref', 'provider', 'tariff', 'annualTotalEur', 'monthlyAvgEur', 'energyType', 'annualConsumptionKwh', 'postalCode', 'language', 'instruction'], 'properties': {'ref': {'type': 'string'}, 'city': {'type': 'string'}, 'tariff': {'type': 'string'}, 'language': {'enum': ['de', 'en'], 'type': 'string'}, 'provider': {'type': 'string'}, 'energyType': {'enum': ['electricity', 'gas'], 'type': 'string'}, 'postalCode': {'type': 'string'}, 'instruction': {'type': 'string'}, 'monthlyAvgEur': {'type': 'number'}, 'annualTotalEur': {'type': 'number'}, 'providerLogoUrl': {'type': 'string'}, 'annualConsumptionKwh': {'type': 'number'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ref', 'salutation', 'firstName', 'lastName', 'birthDate', 'email', 'street', 'houseNumber', 'switchType', 'iban', 'authorization', 'idempotencyKey'], 'properties': {'ref': {'type': 'string', 'pattern': '^[a-z0-9]+\\.\\d+$', 'description': 'Offer reference from a compare-tariffs result (field `ref`).'}, 'iban': {'type': 'string', 'maxLength': 40, 'minLength': 15, 'description': 'IBAN as entered in the form; spaces allowed.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address — receives the booking confirmation and provider documents.'}, 'phone': {'type': 'string', 'maxLength': 40, 'description': 'Phone number (optional, some providers ask for it).'}, 'street': {'type': 'string', 'maxLength': 150, 'minLength': 1, 'description': 'Street of the supply address (Straße).'}, 'language': {'enum': ['de', 'en'], 'type': 'string', 'description': 'Language of the conversation — used for the confirmation email. Default: "de".'}, 'lastName': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Last name (Nachname).'}, 'birthDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date of birth, ISO format YYYY-MM-DD. Energy providers require it for the contract.'}, 'firstName': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'First name (Vorname).'}, 'moveInDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Move-in date (Umzugsdatum), ISO YYYY-MM-DD. Required for switchType "relocation", ignored for a switch.'}, 'salutation': {'enum': ['herr', 'frau', 'divers'], 'type': 'string', 'description': 'Salutation (Anrede), required by the providers: "herr", "frau" or "divers".'}, 'switchType': {'enum': ['switch', 'relocation'], 'type': 'string', 'description': '"switch": changing provider at the current address (Anbieterwechsel). "relocation": moving in / first contract at this address (Umzug/Neueinzug).'}, 'houseNumber': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'House number (Hausnummer), e.g. "12a".'}, 'meterNumber': {'type': 'string', 'maxLength': 60, 'description': 'Meter number (Zählernummer, optional — printed on the meter or the last bill).'}, 'accountHolder': {'type': 'string', 'maxLength': 150, 'description': 'Account holder if different from the contract holder.'}, 'authorization': {'type': 'object', 'required': ['type', 'contractSubmissionAccepted', 'sepaMandateAccepted', 'privacyPolicyAccepted', 'privacyPolicyVersion', 'sepaMandateVersion'], 'properties': {'type': {'type': 'string', 'const': 'interactive'}, 'sepaMandateVersion': {'type': 'string'}, 'sepaMandateAccepted': {'type': 'boolean', 'const': True}, 'privacyPolicyVersion': {'type': 'string'}, 'privacyPolicyAccepted': {'type': 'boolean', 'const': True}, 'contractSubmissionAccepted': {'type': 'boolean', 'const': True}}, 'description': 'The three consents the user gave in the form, with the wording versions shown to them.'}, 'idempotencyKey': {'type': 'string', 'maxLength': 128, 'minLength': 8, 'description': 'Random per form instance. A retry with the same key returns the first result instead of filing twice.'}, 'desiredStartDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Desired contract start, ISO YYYY-MM-DD. Omit for the next possible date.'}, 'previousProvider': {'type': 'string', 'maxLength': 150, 'description': 'Current/previous energy provider. Required for switchType "switch".'}, 'previousCustomerNumber': {'type': 'string', 'maxLength': 60, 'description': 'Customer number at the previous provider (Kundennummer, optional but speeds up the switch).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['requestId', 'status', 'provider', 'tariff', 'annualTotalEur', 'maskedIban', 'nextSteps'], 'properties': {'status': {'type': 'string', 'const': 'received'}, 'tariff': {'type': 'string'}, 'provider': {'type': 'string'}, 'nextSteps': {'type': 'string'}, 'requestId': {'type': 'string'}, 'maskedIban': {'type': 'string'}, 'annualTotalEur': {'type': 'number'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ref'], 'properties': {'ref': {'type': 'string', 'pattern': '^[a-z0-9]+\\.\\d+$', 'description': 'Offer reference from a compare-tariffs result (field `ref`).'}, 'language': {'enum': ['de', 'en'], 'type': 'string', 'description': 'Language of the conversation (for the eco statement and proof texts). Default: de.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ref', 'provider', 'tariff', 'energyType', 'annualTotalEur', 'costBreakdown', 'contract'], 'properties': {'eco': {'type': 'object', 'required': ['kind', 'statement', 'proof'], 'properties': {'kind': {'enum': ['electricity', 'gas'], 'type': 'string'}, 'proof': {'type': 'string', 'description': 'Proof text that belongs to the marker (guarantees of origin, or the biogas/hydrogen shares). Legally required wording (EmpCo): quote verbatim.'}, 'statement': {'type': 'string', 'description': 'Marker text in the request language. Legally required wording (EmpCo): quote verbatim.'}, 'certificates': {'type': 'array', 'items': {'type': 'string'}}, 'biogasPercent': {'type': 'number'}, 'hydrogenPercent': {'type': 'number'}}, 'additionalProperties': False}, 'ref': {'type': 'string'}, 'tariff': {'type': 'string'}, 'remarks': {'type': 'array', 'items': {'type': 'string'}}, 'contract': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}, 'provider': {'type': 'string'}, 'energyType': {'enum': ['electricity', 'gas'], 'type': 'string'}, 'costBreakdown': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}, 'energySources': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}, 'annualTotalEur': {'type': 'number'}, 'customerRatings': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Modifications récentes des outils
Serveurs MCP similaires
AgentLot Marketplace
Enables agents and users to discover, bid on, purchase, deliver, and settle paid digital services and compute work.
zobrx
Provides read-only ecommerce operations and analytics for orders, inventory, marketplace performance, advertising, settlements, t…
SupplySlate
Supports component sourcing, fabrication requests, supplier RFQs, catalog imports, quotes, purchase planning, checkout handoffs, …
Obriym CRM
Manages CRM records, sales pipelines, activities, orders, products, inventory, and marketplace catalog operations.
velora
Provides Argentine commerce operations including catalog and inventory, customer and supplier management, cash register tracking,…
Shopify
Provides read access to Shopify Admin data for store operations through the Shopify REST API.
Woocommerce
Provides access to WooCommerce store data through the WooCommerce REST API.
Troostwijk
Searches European industrial and insolvency liquidation auctions and retrieves auction lot details.