MCP Server

Seerxo

io.github.semihbugrasezer/seerxo
Commerce & Retail Marketing & Advertising Public & reachable MCP 2025-11-25

What this MCP does

Generates, audits, optimizes, and provides keyword suggestions for SEO-focused Etsy product listings.

generate_etsy_seo
Generate Etsy listing
Use this when the user wants a complete SEO-optimized Etsy listing from a product idea. Returns a title, A/B title variants, description, exactly 13 tags, and attributes. Uses one generation from the monthly quota.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['product_name'], 'properties': {'category': {'type': 'string', 'maxLength': 120, 'description': 'Etsy category, e.g. "Home & Living"'}, 'product_name': {'type': 'string', 'maxLength': 300, 'minLength': 2, 'description': 'Product description, e.g. "handmade ceramic coffee mug, speckled glaze, 12oz"'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title', 'title_alternatives', 'description', 'tags', 'features', 'target_keywords', 'cross_sell', 'suggested_attributes', 'shipping_tip', 'usage'], 'properties': {'tags': {'type': 'array', 'items': {'$ref': '#/properties/title_alternatives/items'}, 'description': 'All 13 Etsy tags.'}, 'title': {'type': 'string', 'description': 'Primary SEO title.'}, 'usage': {'type': 'object', 'required': ['limit', 'remaining', 'tier', 'usageByChannel'], 'properties': {'tier': {'type': 'string', 'description': 'Seerxo account tier.'}, 'limit': {'type': 'number', 'description': 'Monthly generation limit.'}, 'remaining': {'type': 'number', 'description': 'Generations remaining this month.'}, 'dailyLimit': {'type': 'number', 'description': 'Daily generation limit when one applies.'}, 'dailyRemaining': {'type': 'number', 'description': 'Generations remaining today when a daily limit applies.'}, 'usageByChannel': {'type': 'object', 'required': ['mcp', 'web'], 'properties': {'mcp': {'type': 'number', 'description': 'Generations used through MCP.'}, 'web': {'type': 'number', 'description': 'Generations used through the web app.'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'features': {'type': 'array', 'items': {'$ref': '#/properties/title_alternatives/items'}, 'description': 'Product feature highlights.'}, 'cross_sell': {'type': 'string', 'description': 'Suggested complementary product.'}, 'description': {'type': 'string', 'description': 'SEO-optimized product description.'}, 'shipping_tip': {'type': 'string', 'description': 'Shipping pricing guidance.'}, 'target_keywords': {'type': 'array', 'items': {'$ref': '#/properties/title_alternatives/items'}, 'description': 'Primary keyword phrases targeted by the listing.'}, 'title_alternatives': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Alternative titles for A/B testing.'}, 'suggested_attributes': {'anyOf': [{'type': 'object', 'required': ['occasion', 'style', 'color', 'material', 'recipient'], 'properties': {'color': {'type': 'string'}, 'style': {'type': 'string'}, 'material': {'type': 'string'}, 'occasion': {'type': 'string'}, 'recipient': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Suggested Etsy attribute values.'}}, 'additionalProperties': False}
seerxo_analyze_listing
Audit Etsy listing
Use this when the user wants to assess an existing Etsy listing. Returns a versioned Listing Readiness score with official Etsy sources, limitations, weak points, missing keywords, and tag utilization. It does not predict search rank or sales. Free — does not use quota.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': 'Current Etsy tags'}, 'title': {'type': 'string', 'maxLength': 500, 'description': 'Current Etsy listing title'}, 'description': {'type': 'string', 'maxLength': 20000, 'description': 'Current Etsy listing description'}, 'product_name': {'type': 'string', 'maxLength': 300, 'minLength': 2, 'description': 'Short product description, e.g. "handmade ceramic coffee mug, speckled glaze, 12oz"'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scoringVersion', 'scoreType', 'overallScore', 'evaluatedAt', 'evidence', 'limitations', 'seoScore', 'subScores', 'weakPoints', 'missingKeywords', 'tagUtilization', 'percent', 'grade', 'coverage', 'passed', 'total', 'fixes', 'checks'], 'properties': {'fixes': {'type': 'array', 'items': {'type': 'object', 'required': ['check', 'fix'], 'properties': {'fix': {'type': 'string', 'description': 'Recommended fix.'}, 'check': {'type': 'string', 'description': 'Failed SEO check.'}}, 'additionalProperties': False}, 'description': 'Legacy actionable fix list.'}, 'grade': {'enum': ['A', 'B', 'C', 'D', 'F'], 'type': 'string', 'description': 'Legacy letter grade derived from the readiness score.'}, 'total': {'type': 'number', 'description': 'Total number of SEO checks.'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'field', 'label', 'pass'], 'properties': {'id': {'type': 'string', 'description': 'Stable check identifier.'}, 'pass': {'type': 'boolean', 'description': 'Whether the check passed.'}, 'field': {'type': 'string', 'description': 'Listing field checked.'}, 'label': {'type': 'string', 'description': 'Human-readable check label.'}}, 'additionalProperties': False}, 'description': 'All evaluated SEO checks.'}, 'passed': {'type': 'number', 'description': 'Number of SEO checks that passed.'}, 'percent': {'type': 'number', 'description': 'Legacy alias for the overall readiness score.'}, 'coverage': {'type': 'number', 'description': 'Percentage of product keywords covered by the listing.'}, 'evidence': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'source', 'title', 'url'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'source': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Official Etsy sources used by this scoring version.'}, 'seoScore': {'type': 'number', 'description': 'Deprecated compatibility alias for overallScore.'}, 'scoreType': {'type': 'string', 'const': 'listing_readiness'}, 'subScores': {'type': 'object', 'required': ['title', 'tags', 'description', 'completeness'], 'properties': {'tags': {'type': 'number', 'description': 'Tag readiness from 0 to 100.'}, 'title': {'type': 'number', 'description': 'Title readiness from 0 to 100.'}, 'description': {'type': 'number', 'description': 'Description readiness from 0 to 100.'}, 'completeness': {'type': 'number', 'description': 'Listing completeness score from 0 to 100.'}}, 'additionalProperties': False}, 'weakPoints': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'ruleId', 'field', 'severity', 'reason', 'explanation', 'fix', 'source'], 'properties': {'id': {'type': 'string', 'description': 'Stable identifier for the failed SEO check.'}, 'fix': {'type': 'string', 'description': 'Concrete action that resolves the finding.'}, 'field': {'type': 'string', 'description': 'Listing field that needs improvement.'}, 'reason': {'type': 'string', 'description': 'Human-readable explanation of the finding.'}, 'ruleId': {'type': 'string', 'description': 'Version-stable rule identifier.'}, 'source': {'type': 'object', 'required': ['id', 'source', 'title', 'url'], 'properties': {'id': {'$ref': '#/properties/evidence/items/properties/id'}, 'url': {'$ref': '#/properties/evidence/items/properties/url'}, 'title': {'$ref': '#/properties/evidence/items/properties/title'}, 'source': {'$ref': '#/properties/evidence/items/properties/source'}}, 'description': 'Official Etsy source connected to this finding.', 'additionalProperties': False}, 'severity': {'enum': ['high', 'medium', 'low'], 'type': 'string', 'description': 'Priority of the finding.'}, 'explanation': {'type': 'string', 'description': 'Why the deterministic rule produced this finding.'}}, 'additionalProperties': False}, 'description': 'Ranked, sourced readiness findings and fixes.'}, 'evaluatedAt': {'type': 'string', 'description': 'ISO-8601 evaluation timestamp.'}, 'limitations': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Important fields and outcomes this audit does not evaluate.'}, 'overallScore': {'type': 'number', 'description': 'Deterministic Listing Readiness score from 0 to 100; not a ranking prediction.'}, 'scoringVersion': {'type': 'string', 'const': 'etsy-guidance-2026-04-27'}, 'tagUtilization': {'type': 'object', 'required': ['used', 'max', 'duplicates', 'tooBroad', 'overLong'], 'properties': {'max': {'type': 'number', 'description': 'Maximum Etsy tag slots available.'}, 'used': {'type': 'number', 'description': 'Number of tag slots currently used.'}, 'overLong': {'type': 'array', 'items': {'$ref': '#/properties/limitations/items'}, 'description': 'Tags longer than Etsy allows.'}, 'tooBroad': {'type': 'array', 'items': {'$ref': '#/properties/limitations/items'}, 'description': 'Single-word tags that are too broad.'}, 'duplicates': {'type': 'array', 'items': {'$ref': '#/properties/limitations/items'}, 'description': 'Duplicate tags.'}}, 'additionalProperties': False}, 'missingKeywords': {'type': 'array', 'items': {'$ref': '#/properties/limitations/items'}, 'description': 'Product keywords missing from the listing.'}}, 'additionalProperties': False}
seerxo_optimize_listing
Optimize Etsy listing
Use this when the user wants to rewrite an existing Etsy title, description, or tags based on audit findings. A re-audit gate prevents score regression. Uses one generation from the monthly quota.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'mode': {'enum': ['full', 'title_only', 'description_only', 'tags_only'], 'type': 'string', 'description': 'Which fields to rewrite (default: full)'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': 'Current Etsy tags'}, 'title': {'type': 'string', 'maxLength': 500, 'description': 'Current Etsy listing title'}, 'description': {'type': 'string', 'maxLength': 20000, 'description': 'Current Etsy listing description'}, 'product_name': {'type': 'string', 'maxLength': 300, 'minLength': 2, 'description': 'Short product description, e.g. "handmade ceramic coffee mug, speckled glaze, 12oz"'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['before', 'optimized', 'after', 'resolved', 'unresolved', 'diff', 'fallback', 'mode', 'usage'], 'properties': {'diff': {'type': 'object', 'required': ['title', 'description', 'tags'], 'properties': {'tags': {'type': 'object', 'required': ['before', 'after'], 'properties': {'after': {'$ref': '#/properties/diff/properties/tags/properties/before'}, 'before': {'type': 'array', 'items': {'$ref': '#/properties/optimized/properties/tags/items'}}}, 'additionalProperties': False}, 'title': {'type': 'object', 'required': ['before', 'after'], 'properties': {'after': {'type': 'string'}, 'before': {'type': 'string'}}, 'additionalProperties': False}, 'description': {'type': 'object', 'required': ['before', 'after'], 'properties': {'after': {'type': 'string'}, 'before': {'type': 'string'}}, 'additionalProperties': False}}, 'description': 'Before and after values for each listing field.', 'additionalProperties': False}, 'mode': {'enum': ['full', 'title_only', 'description_only', 'tags_only'], 'type': 'string', 'description': 'Optimization mode that was applied.'}, 'after': {'type': 'object', 'required': ['scoringVersion', 'scoreType', 'overallScore', 'seoScore', 'subScores', 'weakPoints'], 'properties': {'seoScore': {'$ref': '#/properties/before/properties/seoScore'}, 'scoreType': {'$ref': '#/properties/before/properties/scoreType'}, 'subScores': {'$ref': '#/properties/before/properties/subScores'}, 'weakPoints': {'$ref': '#/properties/before/properties/weakPoints'}, 'overallScore': {'$ref': '#/properties/before/properties/overallScore'}, 'scoringVersion': {'$ref': '#/properties/before/properties/scoringVersion'}}, 'description': 'Audit summary after optimization.', 'additionalProperties': False}, 'usage': {'type': 'object', 'required': ['limit', 'remaining', 'tier', 'usageByChannel'], 'properties': {'tier': {'type': 'string', 'description': 'Seerxo account tier.'}, 'limit': {'type': 'number', 'description': 'Monthly generation limit.'}, 'remaining': {'type': 'number', 'description': 'Generations remaining this month.'}, 'dailyLimit': {'type': 'number', 'description': 'Daily generation limit when one applies.'}, 'dailyRemaining': {'type': 'number', 'description': 'Generations remaining today when a daily limit applies.'}, 'usageByChannel': {'type': 'object', 'required': ['mcp', 'web'], 'properties': {'mcp': {'type': 'number', 'description': 'Generations used through MCP.'}, 'web': {'type': 'number', 'description': 'Generations used through the web app.'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'before': {'type': 'object', 'required': ['scoringVersion', 'scoreType', 'overallScore', 'seoScore', 'subScores', 'weakPoints'], 'properties': {'seoScore': {'type': 'number', 'description': 'Deprecated compatibility alias for overallScore.'}, 'scoreType': {'type': 'string', 'const': 'listing_readiness'}, 'subScores': {'type': 'object', 'required': ['title', 'tags', 'description', 'completeness'], 'properties': {'tags': {'type': 'number', 'description': 'Tag readiness from 0 to 100.'}, 'title': {'type': 'number', 'description': 'Title readiness from 0 to 100.'}, 'description': {'type': 'number', 'description': 'Description readiness from 0 to 100.'}, 'completeness': {'type': 'number', 'description': 'Listing completeness score from 0 to 100.'}}, 'additionalProperties': False}, 'weakPoints': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'ruleId', 'field', 'severity', 'reason', 'explanation', 'fix', 'source'], 'properties': {'id': {'type': 'string', 'description': 'Stable identifier for the failed SEO check.'}, 'fix': {'type': 'string', 'description': 'Concrete action that resolves the finding.'}, 'field': {'type': 'string', 'description': 'Listing field that needs improvement.'}, 'reason': {'type': 'string', 'description': 'Human-readable explanation of the finding.'}, 'ruleId': {'type': 'string', 'description': 'Version-stable rule identifier.'}, 'source': {'type': 'object', 'required': ['id', 'source', 'title', 'url'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'source': {'type': 'string'}}, 'description': 'Official Etsy source connected to this finding.', 'additionalProperties': False}, 'severity': {'enum': ['high', 'medium', 'low'], 'type': 'string', 'description': 'Priority of the finding.'}, 'explanation': {'type': 'string', 'description': 'Why the deterministic rule produced this finding.'}}, 'additionalProperties': False}, 'description': 'Ranked, sourced readiness findings and fixes.'}, 'overallScore': {'type': 'number', 'description': 'Deterministic Listing Readiness score from 0 to 100.'}, 'scoringVersion': {'type': 'string', 'const': 'etsy-guidance-2026-04-27'}}, 'description': 'Audit summary before optimization.', 'additionalProperties': False}, 'fallback': {'type': 'boolean', 'description': 'Whether the original listing was kept to prevent a score regression.'}, 'resolved': {'type': 'array', 'items': {'$ref': '#/properties/optimized/properties/tags/items'}, 'description': 'Finding IDs resolved by the rewrite.'}, 'optimized': {'type': 'object', 'required': ['title', 'description', 'tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Etsy listing tags.'}, 'title': {'type': 'string', 'description': 'Etsy listing title.'}, 'description': {'type': 'string', 'description': 'Etsy listing description.'}}, 'additionalProperties': False}, 'unresolved': {'type': 'array', 'items': {'$ref': '#/properties/optimized/properties/tags/items'}, 'description': 'Finding IDs still present after the rewrite.'}}, 'additionalProperties': False}
seerxo_quota
Check quota
Use this when the user asks about Seerxo credits or usage. Shows the authenticated account's remaining monthly generation quota. Free.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['current', 'limit', 'remaining', 'tier', 'usageByChannel'], 'properties': {'tier': {'type': 'string', 'description': 'Seerxo account tier.'}, 'limit': {'type': 'number', 'description': 'Monthly generation limit.'}, 'current': {'type': 'number', 'description': 'Generations used this month.'}, 'remaining': {'type': 'number', 'description': 'Generations remaining this month.'}, 'usageByChannel': {'type': 'object', 'required': ['mcp', 'web'], 'properties': {'mcp': {'type': 'number', 'description': 'Generations used through MCP.'}, 'web': {'type': 'number', 'description': 'Generations used through the web app.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
seerxo_suggest_keywords
Suggest Etsy keywords
Use this when the user wants Etsy keyword ideas for a product or listing. Returns ranked autosuggest phrases with relative demand and placement guidance; never fabricates search volumes. Uses one generation from the monthly quota.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'seed': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Seed phrase to expand'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': 'Current Etsy tags'}, 'title': {'type': 'string', 'maxLength': 500, 'description': 'Current Etsy listing title'}, 'description': {'type': 'string', 'maxLength': 20000, 'description': 'Current Etsy listing description'}, 'product_name': {'type': 'string', 'maxLength': 300, 'minLength': 2, 'description': 'Short product description, e.g. "handmade ceramic coffee mug, speckled glaze, 12oz"'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['seed', 'confidence', 'keywords', 'source', 'usage'], 'properties': {'seed': {'type': 'string', 'description': 'Normalized seed phrase used for suggestions.'}, 'usage': {'type': 'object', 'required': ['limit', 'remaining', 'tier', 'usageByChannel'], 'properties': {'tier': {'type': 'string', 'description': 'Seerxo account tier.'}, 'limit': {'type': 'number', 'description': 'Monthly generation limit.'}, 'remaining': {'type': 'number', 'description': 'Generations remaining this month.'}, 'dailyLimit': {'type': 'number', 'description': 'Daily generation limit when one applies.'}, 'dailyRemaining': {'type': 'number', 'description': 'Generations remaining today when a daily limit applies.'}, 'usageByChannel': {'type': 'object', 'required': ['mcp', 'web'], 'properties': {'mcp': {'type': 'number', 'description': 'Generations used through MCP.'}, 'web': {'type': 'number', 'description': 'Generations used through the web app.'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'source': {'type': 'string', 'description': 'Source used for keyword suggestions.'}, 'keywords': {'type': 'array', 'items': {'type': 'object', 'required': ['keyword', 'demandRank', 'placement', 'inListing'], 'properties': {'keyword': {'type': 'string', 'description': 'Suggested keyword phrase.'}, 'inListing': {'type': 'boolean', 'description': 'Whether the listing already contains the keyword.'}, 'placement': {'enum': ['title', 'tags', 'description'], 'type': 'string', 'description': 'Recommended listing placement.'}, 'demandRank': {'type': 'number', 'description': 'Relative rank from Etsy autosuggest.'}}, 'additionalProperties': False}, 'description': 'Keyword suggestions in Etsy autosuggest demand order.'}, 'confidence': {'enum': ['medium', 'low'], 'type': 'string', 'description': 'Confidence in the available suggestions.'}}, 'additionalProperties': False}
Changed
seerxo_optimize_listing
Oct. 1, 2026, 2:50 a.m.
Changed
seerxo_analyze_listing
Oct. 1, 2026, 2:50 a.m.
Added
seerxo_quota
Sept. 17, 2026, 12:52 p.m.
Added
seerxo_suggest_keywords
Sept. 17, 2026, 12:52 p.m.
Added
seerxo_optimize_listing
Sept. 17, 2026, 12:52 p.m.
Added
seerxo_analyze_listing
Sept. 17, 2026, 12:52 p.m.
Added
generate_etsy_seo
Sept. 17, 2026, 12:52 p.m.