MCP 服务器

padel.how Racket Reviews

how.padel/racket-reviews
电商与零售 媒体与内容 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Provides a catalog of padel racket reviews, comparisons, brands, retailer offers, and review methodology.

compare_rackets
Compare two to four distinct published racket slugs.
只读 幂等
输入模式
{'type': 'object', 'title': 'compare_racketsArguments', 'required': ['slugs'], 'properties': {'slugs': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[a-z0-9]+(?:-[a-z0-9]+)*$'}, 'title': 'Slugs', 'maxItems': 4, 'minItems': 2, 'uniqueItems': True}}}
输出模式
{'type': 'object', '$defs': {'KnownValue': {'type': 'object', 'title': 'KnownValue', 'required': ['value', 'known'], 'properties': {'known': {'type': 'boolean', 'title': 'Known'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}], 'title': 'Value'}}, 'additionalProperties': False}, 'OfferPrice': {'type': 'object', 'title': 'OfferPrice', 'required': ['amount', 'currency', 'observed_at', 'region', 'availability', 'freshness'], 'properties': {'amount': {'type': 'number', 'title': 'Amount', 'exclusiveMinimum': 0}, 'region': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Region'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'freshness': {'enum': ['current', 'last_known'], 'type': 'string', 'title': 'Freshness'}, 'observed_at': {'type': 'string', 'title': 'Observed At'}, 'availability': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Availability'}}, 'additionalProperties': False}, 'RacketRecord': {'type': 'object', 'title': 'RacketRecord', 'required': ['slug', 'name', 'brand', 'year', 'score', 'review_url', 'specifications', 'scores', 'editorial_player_level_tag', 'audience_tags'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name'}, 'slug': {'type': 'string', 'title': 'Slug'}, 'year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year'}, 'brand': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Brand'}, 'offer': {'anyOf': [{'$ref': '#/$defs/AffiliateOffer'}, {'type': 'null'}], 'default': None}, 'score': {'anyOf': [{'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Score'}, 'offers': {'type': 'array', 'items': {'$ref': '#/$defs/AffiliateOffer'}, 'title': 'Offers', 'default': []}, 'scores': {'type': 'object', 'title': 'Scores', 'additionalProperties': {'anyOf': [{'type': 'integer'}, {'type': 'number'}]}}, 'review_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Review Url'}, 'audience_tags': {'type': 'array', 'items': {'enum': ['women', 'junior'], 'type': 'string'}, 'title': 'Audience Tags'}, 'specifications': {'type': 'object', 'title': 'Specifications', 'additionalProperties': {'$ref': '#/$defs/KnownValue'}}, 'editorial_player_level_tag': {'anyOf': [{'enum': ['beginner', 'intermediate', 'advanced'], 'type': 'string'}, {'type': 'null'}], 'title': 'Editorial Player Level Tag'}}, 'additionalProperties': False}, 'CompareResult': {'type': 'object', 'title': 'CompareResult', 'required': ['items', 'numeric_deltas'], 'properties': {'items': {'type': 'array', 'items': {'$ref': '#/$defs/RacketRecord'}, 'title': 'Items'}, 'numeric_deltas': {'$ref': '#/$defs/NumericDeltas'}}, 'additionalProperties': False}, 'NumericDeltas': {'type': 'object', 'title': 'NumericDeltas', 'required': ['overall_score', 'score_categories'], 'properties': {'overall_score': {'type': 'array', 'items': {'anyOf': [{'type': 'integer'}, {'type': 'number'}]}, 'title': 'Overall Score'}, 'score_categories': {'type': 'object', 'title': 'Score Categories', 'additionalProperties': {'type': 'array', 'items': {'anyOf': [{'type': 'integer'}, {'type': 'number'}]}}}}, 'additionalProperties': False}, 'AffiliateOffer': {'type': 'object', 'title': 'AffiliateOffer', 'required': ['state', 'retailer', 'url', 'price', 'disclosure'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'price': {'anyOf': [{'$ref': '#/$defs/OfferPrice'}, {'type': 'null'}]}, 'state': {'enum': ['verified_price', 'last_known_price', 'link_only'], 'type': 'string', 'title': 'State'}, 'store': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Store', 'default': None}, 'retailer': {'enum': ['Amazon', 'Padel Market', 'PadelDogs', 'Tennis Point', 'Racketshop.com', 'SPORTLET'], 'type': 'string', 'title': 'Retailer'}, 'disclosure': {'type': 'string', 'title': 'Disclosure'}}, 'additionalProperties': False}, 'DatasetMetadata': {'type': 'object', 'title': 'DatasetMetadata', 'required': ['source_endpoint', 'source_generated', 'record_count', 'dataset_version', 'methodology_url'], 'properties': {'record_count': {'type': 'integer', 'title': 'Record Count'}, 'dataset_version': {'type': 'string', 'title': 'Dataset Version'}, 'methodology_url': {'type': 'string', 'title': 'Methodology Url'}, 'source_endpoint': {'type': 'string', 'title': 'Source Endpoint'}, 'source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source Generated'}, 'offer_record_count': {'type': 'integer', 'title': 'Offer Record Count', 'default': 0}, 'offer_source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Offer Source Generated', 'default': None}}, 'additionalProperties': False}, 'LocatorCitation': {'type': 'object', 'title': 'LocatorCitation', 'required': ['url', 'label'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'type': {'type': 'string', 'const': 'locator', 'title': 'Type', 'default': 'locator'}, 'label': {'type': 'string', 'title': 'Label'}}, 'additionalProperties': False}}, 'title': 'CompareRacketsEnvelope', 'required': ['schema_version', 'dataset', 'tool', 'result', 'citations', 'warnings'], 'properties': {'tool': {'type': 'string', 'const': 'compare_rackets', 'title': 'Tool'}, 'result': {'$ref': '#/$defs/CompareResult'}, 'dataset': {'$ref': '#/$defs/DatasetMetadata'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'citations': {'type': 'array', 'items': {'$ref': '#/$defs/LocatorCitation'}, 'title': 'Citations'}, 'schema_version': {'type': 'string', 'const': '1.2.0', 'title': 'Schema Version'}}, 'additionalProperties': False}
get_offers
List published retailer offers per racket; prices carry observed_at and are not live.
只读 幂等
输入模式
{'type': 'object', 'title': 'get_offersArguments', 'properties': {'slug': {'anyOf': [{'type': 'string', 'pattern': '^[a-z0-9]+(?:-[a-z0-9]+)*$'}, {'type': 'null'}], 'title': 'Slug', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 25, 'maximum': 25, 'minimum': 1}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'retailer': {'anyOf': [{'enum': ['Amazon', 'Padel Market', 'PadelDogs', 'Tennis Point', 'Racketshop.com', 'SPORTLET'], 'type': 'string'}, {'type': 'null'}], 'title': 'Retailer', 'default': None}, 'snapshot_version': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Snapshot Version', 'default': None}}}
输出模式
{'type': 'object', '$defs': {'OfferEntry': {'type': 'object', 'title': 'OfferEntry', 'required': ['slug', 'name', 'review_url', 'offers'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name'}, 'slug': {'type': 'string', 'title': 'Slug'}, 'offers': {'type': 'array', 'items': {'$ref': '#/$defs/AffiliateOffer'}, 'title': 'Offers'}, 'review_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Review Url'}}, 'additionalProperties': False}, 'OfferPrice': {'type': 'object', 'title': 'OfferPrice', 'required': ['amount', 'currency', 'observed_at', 'region', 'availability', 'freshness'], 'properties': {'amount': {'type': 'number', 'title': 'Amount', 'exclusiveMinimum': 0}, 'region': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Region'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'freshness': {'enum': ['current', 'last_known'], 'type': 'string', 'title': 'Freshness'}, 'observed_at': {'type': 'string', 'title': 'Observed At'}, 'availability': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Availability'}}, 'additionalProperties': False}, 'AffiliateOffer': {'type': 'object', 'title': 'AffiliateOffer', 'required': ['state', 'retailer', 'url', 'price', 'disclosure'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'price': {'anyOf': [{'$ref': '#/$defs/OfferPrice'}, {'type': 'null'}]}, 'state': {'enum': ['verified_price', 'last_known_price', 'link_only'], 'type': 'string', 'title': 'State'}, 'store': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Store', 'default': None}, 'retailer': {'enum': ['Amazon', 'Padel Market', 'PadelDogs', 'Tennis Point', 'Racketshop.com', 'SPORTLET'], 'type': 'string', 'title': 'Retailer'}, 'disclosure': {'type': 'string', 'title': 'Disclosure'}}, 'additionalProperties': False}, 'DatasetMetadata': {'type': 'object', 'title': 'DatasetMetadata', 'required': ['source_endpoint', 'source_generated', 'record_count', 'dataset_version', 'methodology_url'], 'properties': {'record_count': {'type': 'integer', 'title': 'Record Count'}, 'dataset_version': {'type': 'string', 'title': 'Dataset Version'}, 'methodology_url': {'type': 'string', 'title': 'Methodology Url'}, 'source_endpoint': {'type': 'string', 'title': 'Source Endpoint'}, 'source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source Generated'}, 'offer_record_count': {'type': 'integer', 'title': 'Offer Record Count', 'default': 0}, 'offer_source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Offer Source Generated', 'default': None}}, 'additionalProperties': False}, 'LocatorCitation': {'type': 'object', 'title': 'LocatorCitation', 'required': ['url', 'label'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'type': {'type': 'string', 'const': 'locator', 'title': 'Type', 'default': 'locator'}, 'label': {'type': 'string', 'title': 'Label'}}, 'additionalProperties': False}, 'OfferListResult': {'type': 'object', 'title': 'OfferListResult', 'required': ['items', 'total_matches', 'offer_count', 'limit', 'offset', 'has_more', 'applied_filters'], 'properties': {'items': {'type': 'array', 'items': {'$ref': '#/$defs/OfferEntry'}, 'title': 'Items'}, 'limit': {'type': 'integer', 'title': 'Limit'}, 'offset': {'type': 'integer', 'title': 'Offset'}, 'has_more': {'type': 'boolean', 'title': 'Has More'}, 'offer_count': {'type': 'integer', 'title': 'Offer Count'}, 'total_matches': {'type': 'integer', 'title': 'Total Matches'}, 'applied_filters': {'type': 'object', 'title': 'Applied Filters', 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}}, 'title': 'GetOffersEnvelope', 'required': ['schema_version', 'dataset', 'tool', 'result', 'citations', 'warnings'], 'properties': {'tool': {'type': 'string', 'const': 'get_offers', 'title': 'Tool'}, 'result': {'$ref': '#/$defs/OfferListResult'}, 'dataset': {'$ref': '#/$defs/DatasetMetadata'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'citations': {'type': 'array', 'items': {'$ref': '#/$defs/LocatorCitation'}, 'title': 'Citations'}, 'schema_version': {'type': 'string', 'const': '1.2.0', 'title': 'Schema Version'}}, 'additionalProperties': False}
get_racket
Get one published racket by its validated catalogue slug.
只读 幂等
输入模式
{'type': 'object', 'title': 'get_racketArguments', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'title': 'Slug', 'pattern': '^[a-z0-9]+(?:-[a-z0-9]+)*$'}}}
输出模式
{'type': 'object', '$defs': {'KnownValue': {'type': 'object', 'title': 'KnownValue', 'required': ['value', 'known'], 'properties': {'known': {'type': 'boolean', 'title': 'Known'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}], 'title': 'Value'}}, 'additionalProperties': False}, 'OfferPrice': {'type': 'object', 'title': 'OfferPrice', 'required': ['amount', 'currency', 'observed_at', 'region', 'availability', 'freshness'], 'properties': {'amount': {'type': 'number', 'title': 'Amount', 'exclusiveMinimum': 0}, 'region': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Region'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'freshness': {'enum': ['current', 'last_known'], 'type': 'string', 'title': 'Freshness'}, 'observed_at': {'type': 'string', 'title': 'Observed At'}, 'availability': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Availability'}}, 'additionalProperties': False}, 'RacketRecord': {'type': 'object', 'title': 'RacketRecord', 'required': ['slug', 'name', 'brand', 'year', 'score', 'review_url', 'specifications', 'scores', 'editorial_player_level_tag', 'audience_tags'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name'}, 'slug': {'type': 'string', 'title': 'Slug'}, 'year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year'}, 'brand': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Brand'}, 'offer': {'anyOf': [{'$ref': '#/$defs/AffiliateOffer'}, {'type': 'null'}], 'default': None}, 'score': {'anyOf': [{'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Score'}, 'offers': {'type': 'array', 'items': {'$ref': '#/$defs/AffiliateOffer'}, 'title': 'Offers', 'default': []}, 'scores': {'type': 'object', 'title': 'Scores', 'additionalProperties': {'anyOf': [{'type': 'integer'}, {'type': 'number'}]}}, 'review_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Review Url'}, 'audience_tags': {'type': 'array', 'items': {'enum': ['women', 'junior'], 'type': 'string'}, 'title': 'Audience Tags'}, 'specifications': {'type': 'object', 'title': 'Specifications', 'additionalProperties': {'$ref': '#/$defs/KnownValue'}}, 'editorial_player_level_tag': {'anyOf': [{'enum': ['beginner', 'intermediate', 'advanced'], 'type': 'string'}, {'type': 'null'}], 'title': 'Editorial Player Level Tag'}}, 'additionalProperties': False}, 'AffiliateOffer': {'type': 'object', 'title': 'AffiliateOffer', 'required': ['state', 'retailer', 'url', 'price', 'disclosure'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'price': {'anyOf': [{'$ref': '#/$defs/OfferPrice'}, {'type': 'null'}]}, 'state': {'enum': ['verified_price', 'last_known_price', 'link_only'], 'type': 'string', 'title': 'State'}, 'store': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Store', 'default': None}, 'retailer': {'enum': ['Amazon', 'Padel Market', 'PadelDogs', 'Tennis Point', 'Racketshop.com', 'SPORTLET'], 'type': 'string', 'title': 'Retailer'}, 'disclosure': {'type': 'string', 'title': 'Disclosure'}}, 'additionalProperties': False}, 'DatasetMetadata': {'type': 'object', 'title': 'DatasetMetadata', 'required': ['source_endpoint', 'source_generated', 'record_count', 'dataset_version', 'methodology_url'], 'properties': {'record_count': {'type': 'integer', 'title': 'Record Count'}, 'dataset_version': {'type': 'string', 'title': 'Dataset Version'}, 'methodology_url': {'type': 'string', 'title': 'Methodology Url'}, 'source_endpoint': {'type': 'string', 'title': 'Source Endpoint'}, 'source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source Generated'}, 'offer_record_count': {'type': 'integer', 'title': 'Offer Record Count', 'default': 0}, 'offer_source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Offer Source Generated', 'default': None}}, 'additionalProperties': False}, 'LocatorCitation': {'type': 'object', 'title': 'LocatorCitation', 'required': ['url', 'label'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'type': {'type': 'string', 'const': 'locator', 'title': 'Type', 'default': 'locator'}, 'label': {'type': 'string', 'title': 'Label'}}, 'additionalProperties': False}}, 'title': 'GetRacketEnvelope', 'required': ['schema_version', 'dataset', 'tool', 'result', 'citations', 'warnings'], 'properties': {'tool': {'type': 'string', 'const': 'get_racket', 'title': 'Tool'}, 'result': {'$ref': '#/$defs/RacketRecord'}, 'dataset': {'$ref': '#/$defs/DatasetMetadata'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'citations': {'type': 'array', 'items': {'$ref': '#/$defs/LocatorCitation'}, 'title': 'Citations'}, 'schema_version': {'type': 'string', 'const': '1.2.0', 'title': 'Schema Version'}}, 'additionalProperties': False}
list_racket_brands
List brand variants grouped by case-insensitive normalized spelling.
只读 幂等
输入模式
{'type': 'object', 'title': 'list_racket_brandsArguments', 'properties': {}}
输出模式
{'type': 'object', '$defs': {'BrandGroup': {'type': 'object', 'title': 'BrandGroup', 'required': ['normalized', 'display_names', 'racket_count'], 'properties': {'normalized': {'type': 'string', 'title': 'Normalized'}, 'racket_count': {'type': 'integer', 'title': 'Racket Count'}, 'display_names': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Display Names'}}, 'additionalProperties': False}, 'BrandListResult': {'type': 'object', 'title': 'BrandListResult', 'required': ['brands'], 'properties': {'brands': {'type': 'array', 'items': {'$ref': '#/$defs/BrandGroup'}, 'title': 'Brands'}}, 'additionalProperties': False}, 'DatasetMetadata': {'type': 'object', 'title': 'DatasetMetadata', 'required': ['source_endpoint', 'source_generated', 'record_count', 'dataset_version', 'methodology_url'], 'properties': {'record_count': {'type': 'integer', 'title': 'Record Count'}, 'dataset_version': {'type': 'string', 'title': 'Dataset Version'}, 'methodology_url': {'type': 'string', 'title': 'Methodology Url'}, 'source_endpoint': {'type': 'string', 'title': 'Source Endpoint'}, 'source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source Generated'}, 'offer_record_count': {'type': 'integer', 'title': 'Offer Record Count', 'default': 0}, 'offer_source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Offer Source Generated', 'default': None}}, 'additionalProperties': False}, 'LocatorCitation': {'type': 'object', 'title': 'LocatorCitation', 'required': ['url', 'label'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'type': {'type': 'string', 'const': 'locator', 'title': 'Type', 'default': 'locator'}, 'label': {'type': 'string', 'title': 'Label'}}, 'additionalProperties': False}}, 'title': 'ListRacketBrandsEnvelope', 'required': ['schema_version', 'dataset', 'tool', 'result', 'citations', 'warnings'], 'properties': {'tool': {'type': 'string', 'const': 'list_racket_brands', 'title': 'Tool'}, 'result': {'$ref': '#/$defs/BrandListResult'}, 'dataset': {'$ref': '#/$defs/DatasetMetadata'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'citations': {'type': 'array', 'items': {'$ref': '#/$defs/LocatorCitation'}, 'title': 'Citations'}, 'schema_version': {'type': 'string', 'const': '1.2.0', 'title': 'Schema Version'}}, 'additionalProperties': False}
search_rackets
Search published rackets using literal, case-insensitive catalogue filters.
只读 幂等
输入模式
{'type': 'object', 'title': 'search_racketsArguments', 'properties': {'sort': {'enum': ['score_desc', 'name_asc'], 'type': 'string', 'title': 'Sort', 'default': 'score_desc'}, 'year': {'anyOf': [{'type': 'integer', 'maximum': 2200, 'minimum': 1900}, {'type': 'null'}], 'title': 'Year', 'default': None}, 'brand': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Brand', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 10, 'maximum': 25, 'minimum': 1}, 'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Query', 'default': None}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'audience': {'anyOf': [{'type': 'string', 'const': 'women'}, {'type': 'null'}], 'title': 'Audience', 'default': None}, 'max_score': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Score', 'default': None}, 'min_score': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'title': 'Min Score', 'default': None}, 'snapshot_version': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Snapshot Version', 'default': None}, 'editorial_player_level_tag': {'anyOf': [{'enum': ['beginner', 'intermediate', 'advanced'], 'type': 'string'}, {'type': 'null'}], 'title': 'Editorial Player Level Tag', 'default': None}}}
输出模式
{'type': 'object', '$defs': {'KnownValue': {'type': 'object', 'title': 'KnownValue', 'required': ['value', 'known'], 'properties': {'known': {'type': 'boolean', 'title': 'Known'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}], 'title': 'Value'}}, 'additionalProperties': False}, 'OfferPrice': {'type': 'object', 'title': 'OfferPrice', 'required': ['amount', 'currency', 'observed_at', 'region', 'availability', 'freshness'], 'properties': {'amount': {'type': 'number', 'title': 'Amount', 'exclusiveMinimum': 0}, 'region': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Region'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'freshness': {'enum': ['current', 'last_known'], 'type': 'string', 'title': 'Freshness'}, 'observed_at': {'type': 'string', 'title': 'Observed At'}, 'availability': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Availability'}}, 'additionalProperties': False}, 'RacketRecord': {'type': 'object', 'title': 'RacketRecord', 'required': ['slug', 'name', 'brand', 'year', 'score', 'review_url', 'specifications', 'scores', 'editorial_player_level_tag', 'audience_tags'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name'}, 'slug': {'type': 'string', 'title': 'Slug'}, 'year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year'}, 'brand': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Brand'}, 'offer': {'anyOf': [{'$ref': '#/$defs/AffiliateOffer'}, {'type': 'null'}], 'default': None}, 'score': {'anyOf': [{'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Score'}, 'offers': {'type': 'array', 'items': {'$ref': '#/$defs/AffiliateOffer'}, 'title': 'Offers', 'default': []}, 'scores': {'type': 'object', 'title': 'Scores', 'additionalProperties': {'anyOf': [{'type': 'integer'}, {'type': 'number'}]}}, 'review_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Review Url'}, 'audience_tags': {'type': 'array', 'items': {'enum': ['women', 'junior'], 'type': 'string'}, 'title': 'Audience Tags'}, 'specifications': {'type': 'object', 'title': 'Specifications', 'additionalProperties': {'$ref': '#/$defs/KnownValue'}}, 'editorial_player_level_tag': {'anyOf': [{'enum': ['beginner', 'intermediate', 'advanced'], 'type': 'string'}, {'type': 'null'}], 'title': 'Editorial Player Level Tag'}}, 'additionalProperties': False}, 'SearchResult': {'type': 'object', 'title': 'SearchResult', 'required': ['items', 'total_matches', 'limit', 'offset', 'sort', 'has_more', 'applied_filters'], 'properties': {'sort': {'enum': ['score_desc', 'name_asc'], 'type': 'string', 'title': 'Sort'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/RacketRecord'}, 'title': 'Items'}, 'limit': {'type': 'integer', 'title': 'Limit'}, 'offset': {'type': 'integer', 'title': 'Offset'}, 'has_more': {'type': 'boolean', 'title': 'Has More'}, 'total_matches': {'type': 'integer', 'title': 'Total Matches'}, 'applied_filters': {'type': 'object', 'title': 'Applied Filters', 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}]}}}, 'additionalProperties': False}, 'AffiliateOffer': {'type': 'object', 'title': 'AffiliateOffer', 'required': ['state', 'retailer', 'url', 'price', 'disclosure'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'price': {'anyOf': [{'$ref': '#/$defs/OfferPrice'}, {'type': 'null'}]}, 'state': {'enum': ['verified_price', 'last_known_price', 'link_only'], 'type': 'string', 'title': 'State'}, 'store': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Store', 'default': None}, 'retailer': {'enum': ['Amazon', 'Padel Market', 'PadelDogs', 'Tennis Point', 'Racketshop.com', 'SPORTLET'], 'type': 'string', 'title': 'Retailer'}, 'disclosure': {'type': 'string', 'title': 'Disclosure'}}, 'additionalProperties': False}, 'DatasetMetadata': {'type': 'object', 'title': 'DatasetMetadata', 'required': ['source_endpoint', 'source_generated', 'record_count', 'dataset_version', 'methodology_url'], 'properties': {'record_count': {'type': 'integer', 'title': 'Record Count'}, 'dataset_version': {'type': 'string', 'title': 'Dataset Version'}, 'methodology_url': {'type': 'string', 'title': 'Methodology Url'}, 'source_endpoint': {'type': 'string', 'title': 'Source Endpoint'}, 'source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source Generated'}, 'offer_record_count': {'type': 'integer', 'title': 'Offer Record Count', 'default': 0}, 'offer_source_generated': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Offer Source Generated', 'default': None}}, 'additionalProperties': False}, 'LocatorCitation': {'type': 'object', 'title': 'LocatorCitation', 'required': ['url', 'label'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'type': {'type': 'string', 'const': 'locator', 'title': 'Type', 'default': 'locator'}, 'label': {'type': 'string', 'title': 'Label'}}, 'additionalProperties': False}}, 'title': 'SearchRacketsEnvelope', 'required': ['schema_version', 'dataset', 'tool', 'result', 'citations', 'warnings'], 'properties': {'tool': {'type': 'string', 'const': 'search_rackets', 'title': 'Tool'}, 'result': {'$ref': '#/$defs/SearchResult'}, 'dataset': {'$ref': '#/$defs/DatasetMetadata'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'citations': {'type': 'array', 'items': {'$ref': '#/$defs/LocatorCitation'}, 'title': 'Citations'}, 'schema_version': {'type': 'string', 'const': '1.2.0', 'title': 'Schema Version'}}, 'additionalProperties': False}
已添加
get_offers
2026年9月17日 12:39
已添加
list_racket_brands
2026年9月17日 12:39
已添加
compare_rackets
2026年9月17日 12:39
已添加
get_racket
2026年9月17日 12:39
已添加
search_rackets
2026年9月17日 12:39