{"serverId":"mcp-registry/co.civai.nova/product-admin","tools":[{"name":"approve_deposit","fixed":{"name":"approve_deposit","description":"Approve a pending/expired deposit and run fulfillment.","inputSchema":{"type":"object","required":["product_id","deposit_id"],"properties":{"deposit_id":{"type":"string"},"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":69,"tokensAfter":69},{"name":"assign_bank_credit","fixed":{"name":"assign_bank_credit","description":"Assign an unmatched bank credit to a pending deposit.","inputSchema":{"type":"object","required":["credit_id","deposit_id"],"properties":{"credit_id":{"type":"string"},"deposit_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":69,"tokensAfter":69},{"name":"connect_audience_resolver","fixed":{"name":"connect_audience_resolver","description":"Connect an Audience Resolver publisher token to this product, so it can push content to an AR project's calendar. The token must be minted by hand from the Audience Resolver dashboard first — there's no way to generate one here.","inputSchema":{"type":"object","required":["product_id","publisher_token"],"properties":{"product_id":{"type":"string"},"publisher_token":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":122,"tokensAfter":122},{"name":"create_product","fixed":{"name":"create_product","description":"Create a new product.","inputSchema":{"type":"object","required":["id","name","site_url"],"properties":{"id":{"type":"string","description":"Lowercase product id (letters, digits, hyphen, underscore)."},"name":{"type":"string"},"site_url":{"type":"string"},"mobile_push":{"type":"object"},"pipeline_type":{"enum":["seo_intent","reward_intent"],"type":"string"},"payment_config":{"type":"object"},"content_enabled":{"type":"boolean","description":"Enable/disable the content pipeline for this product."},"default_country":{"type":"string"},"logistics_config":{"type":"object"},"opportunity_rules":{"type":"string","description":"What counts as a worthwhile trend/opportunity for this product — used when picking seeds and expanding opportunities."},"seed_picker_rules":{"type":"string","description":"Guidance for the seed-selection step specifically."},"opportunity_system":{"type":"string","description":"System context for generation prompts: what this product is, in the product's own voice."},"article_intent_rules":{"type":"string","description":"Structure/intent guidance for generated articles."},"publish_destinations":{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"enum":["webhook","x_post","ar_calendar"],"type":"string"},"webhook_url":{"type":"string"},"webhook_secret":{"type":"string"},"twitter_account_id":{"type":"string"},"audience_resolver_project_id":{"type":"string"},"audience_resolver_calendar_id":{"type":"string"}}},"description":"Where generated content publishes to. Each entry is one of {type: 'webhook', webhook_url, webhook_secret?}, {type: 'x_post', twitter_account_id}, or {type: 'ar_calendar', audience_resolver_project_id, audience_resolver_calendar_id} (requires audience_resolver_publisher_token to be connected first)."},"content_target_markets":{"type":"array","items":{"type":"string"},"description":"ISO-2 country codes this product's autonomous trend tweets should draw trends from (e.g. ['NG'] for a Nigeria-only product, ['NG','US'] to target more than one market). Empty/unset falls back to [default_country]. Without this, trend-driven tweets pull from a US-only trend pool regardless of the product's actual audience."},"content_posting_frequency":{"anyOf":[{"enum":["daily","3x_week","weekly","off"],"type":"string"},{"type":"object","required":["days"],"properties":{"days":{"type":"array","items":{"enum":["mon","tue","wed","thu","fri","sat","sun"],"type":"string"}},"time":{"type":"string","description":"HH:MM, 24-hour, Africa/Lagos"},"posts_per_day":{"type":"integer","maximum":5,"minimum":1}}}],"description":"When this product's connected X account posts autonomous trend tweets. Either the legacy string preset ('daily' | '3x_week' | 'weekly' | 'off', defaults to 3x_week = Mon/Wed/Fri) or the object {days: ['mon','wed','fri'], time: '09:00' (Africa/Lagos, 24h), posts_per_day: 1-5}."},"intent_creative_direction":{"type":"string","description":"Free-form style/voice guidance for generated content."},"audience_resolver_publisher_token":{"type":"string","description":"Publisher JWT minted from the Audience Resolver dashboard, connecting this product to an AR account so content can be pushed to its calendars. Set via connect_audience_resolver, not directly."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":916,"tokensAfter":916},{"name":"delete_product","fixed":{"name":"delete_product","description":"Permanently delete a product.","inputSchema":{"type":"object","required":["product_id"],"properties":{"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":49,"tokensAfter":49},{"name":"get_onboarding_status","fixed":{"name":"get_onboarding_status","description":"Bank-transfer onboarding status (merchant bank, alert inbox, auto-approve).","inputSchema":{"type":"object","properties":{"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":57,"tokensAfter":57},{"name":"get_product","fixed":{"name":"get_product","description":"Return full product detail including payment/logistics/mobile-push config.","inputSchema":{"type":"object","required":["product_id"],"properties":{"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":61,"tokensAfter":61},{"name":"get_webhook_secret","fixed":{"name":"get_webhook_secret","description":"Return the product's fulfillment webhook signing secret.","inputSchema":{"type":"object","required":["product_id"],"properties":{"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":58,"tokensAfter":58},{"name":"list_audience_resolver_calendars","fixed":{"name":"list_audience_resolver_calendars","description":"List the content calendars within an Audience Resolver project.","inputSchema":{"type":"object","required":["product_id","project_id"],"properties":{"product_id":{"type":"string"},"project_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":76,"tokensAfter":76},{"name":"list_audience_resolver_projects","fixed":{"name":"list_audience_resolver_projects","description":"List the Audience Resolver projects reachable by this product's connected publisher token.","inputSchema":{"type":"object","required":["product_id"],"properties":{"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":71,"tokensAfter":71},{"name":"list_bank_alert_guides","fixed":{"name":"list_bank_alert_guides","description":"List supported banks and their alert-forwarding setup guides.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":45,"tokensAfter":45},{"name":"list_bank_credits","fixed":{"name":"list_bank_credits","description":"List unmatched/review bank credits for reconciliation.","inputSchema":{"type":"object","properties":{"status":{"enum":["unmatched","review","matched","dismissed"],"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63},{"name":"list_deposits","fixed":{"name":"list_deposits","description":"List payment deposits for a product.","inputSchema":{"type":"object","required":["product_id"],"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"status":{"enum":["pending","approved","rejected","expired"],"type":"string"},"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88},{"name":"list_products","fixed":{"name":"list_products","description":"List all products for the signed-in owner.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":37,"tokensAfter":37},{"name":"list_twitter_accounts","fixed":{"name":"list_twitter_accounts","description":"List connected X/Twitter accounts available to use as an x_post publish destination.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":51,"tokensAfter":51},{"name":"remove_product_icon","fixed":{"name":"remove_product_icon","description":"Remove the product's icon/logo.","inputSchema":{"type":"object","required":["product_id"],"properties":{"product_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":51,"tokensAfter":51},{"name":"set_deposit_refund_status","fixed":{"name":"set_deposit_refund_status","description":"Set the refund_status on an approved deposit.","inputSchema":{"type":"object","required":["product_id","deposit_id","refund_status"],"properties":{"note":{"type":"string"},"deposit_id":{"type":"string"},"product_id":{"type":"string"},"refund_status":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"set_logistics_config","fixed":{"name":"set_logistics_config","description":"Set the product's logistics_config.","inputSchema":{"type":"object","required":["product_id","logistics_config"],"properties":{"product_id":{"type":"string"},"logistics_config":{"type":"object"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":68,"tokensAfter":68},{"name":"set_mobile_push_config","fixed":{"name":"set_mobile_push_config","description":"Set the product's mobile_push config.","inputSchema":{"type":"object","required":["product_id","mobile_push"],"properties":{"product_id":{"type":"string"},"mobile_push":{"type":"object"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":66,"tokensAfter":66},{"name":"set_payment_config","fixed":{"name":"set_payment_config","description":"Set/merge the product's payment_config (enable payments, catalog_mode, skus, discount, custom_fields, webhook URLs, return URLs, sandbox).","inputSchema":{"type":"object","required":["product_id","payment_config"],"properties":{"product_id":{"type":"string"},"payment_config":{"type":"object"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":95,"tokensAfter":95},{"name":"update_product","fixed":{"name":"update_product","description":"Update product fields (partial patch — only send fields to change).","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Lowercase product id (letters, digits, hyphen, underscore)."},"name":{"type":"string"},"site_url":{"type":"string"},"mobile_push":{"type":"object"},"pipeline_type":{"enum":["seo_intent","reward_intent"],"type":"string"},"payment_config":{"type":"object"},"content_enabled":{"type":"boolean","description":"Enable/disable the content pipeline for this product."},"default_country":{"type":"string"},"logistics_config":{"type":"object"},"opportunity_rules":{"type":"string","description":"What counts as a worthwhile trend/opportunity for this product — used when picking seeds and expanding opportunities."},"seed_picker_rules":{"type":"string","description":"Guidance for the seed-selection step specifically."},"opportunity_system":{"type":"string","description":"System context for generation prompts: what this product is, in the product's own voice."},"article_intent_rules":{"type":"string","description":"Structure/intent guidance for generated articles."},"publish_destinations":{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"enum":["webhook","x_post","ar_calendar"],"type":"string"},"webhook_url":{"type":"string"},"webhook_secret":{"type":"string"},"twitter_account_id":{"type":"string"},"audience_resolver_project_id":{"type":"string"},"audience_resolver_calendar_id":{"type":"string"}}},"description":"Where generated content publishes to. Each entry is one of {type: 'webhook', webhook_url, webhook_secret?}, {type: 'x_post', twitter_account_id}, or {type: 'ar_calendar', audience_resolver_project_id, audience_resolver_calendar_id} (requires audience_resolver_publisher_token to be connected first)."},"content_target_markets":{"type":"array","items":{"type":"string"},"description":"ISO-2 country codes this product's autonomous trend tweets should draw trends from (e.g. ['NG'] for a Nigeria-only product, ['NG','US'] to target more than one market). Empty/unset falls back to [default_country]. Without this, trend-driven tweets pull from a US-only trend pool regardless of the product's actual audience."},"content_posting_frequency":{"anyOf":[{"enum":["daily","3x_week","weekly","off"],"type":"string"},{"type":"object","required":["days"],"properties":{"days":{"type":"array","items":{"enum":["mon","tue","wed","thu","fri","sat","sun"],"type":"string"}},"time":{"type":"string","description":"HH:MM, 24-hour, Africa/Lagos"},"posts_per_day":{"type":"integer","maximum":5,"minimum":1}}}],"description":"When this product's connected X account posts autonomous trend tweets. Either the legacy string preset ('daily' | '3x_week' | 'weekly' | 'off', defaults to 3x_week = Mon/Wed/Fri) or the object {days: ['mon','wed','fri'], time: '09:00' (Africa/Lagos, 24h), posts_per_day: 1-5}."},"intent_creative_direction":{"type":"string","description":"Free-form style/voice guidance for generated content."},"audience_resolver_publisher_token":{"type":"string","description":"Publisher JWT minted from the Audience Resolver dashboard, connecting this product to an AR account so content can be pushed to its calendars. Set via connect_audience_resolver, not directly."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"schema","detail":"Removed required entries with no matching property: product_id.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":926,"tokensAfter":919},{"name":"upload_product_icon","fixed":{"name":"upload_product_icon","description":"Upload a product icon/logo (base64-encoded JPEG/PNG/WebP, max 2MB).","inputSchema":{"type":"object","required":["product_id","image_base64","content_type"],"properties":{"product_id":{"type":"string"},"content_type":{"enum":["image/jpeg","image/jpg","image/png","image/webp"],"type":"string"},"image_base64":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104}],"toolsChanged":22,"tokensSaved":7,"todo":[{"tool":"approve_deposit","params":["deposit_id","product_id"]},{"tool":"assign_bank_credit","params":["credit_id","deposit_id"]},{"tool":"connect_audience_resolver","params":["product_id","publisher_token"]},{"tool":"create_product","params":["name","site_url","mobile_push","pipeline_type","payment_config","default_country","logistics_config"]},{"tool":"delete_product","params":["product_id"]},{"tool":"dismiss_bank_credit","params":["credit_id"]},{"tool":"get_onboarding_status","params":["product_id"]},{"tool":"get_product","params":["product_id"]},{"tool":"get_webhook_secret","params":["product_id"]},{"tool":"list_audience_resolver_calendars","params":["product_id","project_id"]},{"tool":"list_audience_resolver_projects","params":["product_id"]},{"tool":"list_bank_credits","params":["status"]},{"tool":"list_deposits","params":["limit","offset","status","product_id"]},{"tool":"reject_deposit","params":["reason","deposit_id","product_id"]},{"tool":"remove_product_icon","params":["product_id"]},{"tool":"resend_deposit_fulfillment","params":["deposit_id","product_id"]},{"tool":"rotate_webhook_secret","params":["product_id"]},{"tool":"save_alert_sources","params":["alert_source_emails"]},{"tool":"save_merchant_bank","params":["bank_name","product_id","account_name","alert_source_emails","auto_approve_enabled"]},{"tool":"set_deposit_refund_status","params":["note","deposit_id","product_id","refund_status"]},{"tool":"set_logistics_config","params":["product_id","logistics_config"]},{"tool":"set_mobile_push_config","params":["product_id","mobile_push"]},{"tool":"set_payment_config","params":["product_id","payment_config"]},{"tool":"test_parse_bank_alert","params":["html","text","subject","from_addr"]},{"tool":"update_product","params":["name","site_url","mobile_push","pipeline_type","payment_config","default_country","logistics_config"]},{"tool":"upload_product_icon","params":["product_id","content_type","image_base64"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}