{"serverId":"mcp-registry/io.github.benzatkulak-collab/socialperks","tools":[{"name":"createCampaign","fixed":{"name":"createCampaign","description":"Create and launch a new campaign for the calling business. Returns the campaign id, name, and dashboard URL. The campaign goes live immediately — no separate publish step.","inputSchema":{"type":"object","required":["businessId","name","actions","discountValue","discountType"],"properties":{"name":{"type":"string","maxLength":200,"description":"Customer-facing campaign name"},"actions":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Action IDs the campaign accepts (e.g. ['ig_st'] for an Instagram Story Tag)."},"businessId":{"type":"string","description":"The business owning this campaign. Must match the API key's business."},"description":{"type":"string","description":"Optional internal description"},"discountType":{"enum":["pct","dol"],"type":"string","description":"Discount denomination: 'pct' for percentage, 'dol' for dollars off."},"discountValue":{"type":"number","minimum":0.01,"description":"Discount amount. Capped at 100 for pct, 10000 for dol."},"expiresInDays":{"type":"integer","maximum":365,"minimum":1,"description":"Days until the campaign auto-expires. Default 60."},"maxCompletions":{"type":["integer","null"],"description":"Optional cap on total completions. Null = no cap."}}},"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":354,"tokensAfter":354},{"name":"getBenchmarks","fixed":{"name":"getBenchmarks","description":"Get industry benchmarks (engagement rate, conversion rate, etc.) for a business type.","inputSchema":{"type":"object","properties":{"businessType":{"type":"string","description":"Industry name or slug (e.g. 'restaurants', 'coffee-shops'). Omit for the full catalog."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":86,"tokensAfter":86},{"name":"getCampaignStats","fixed":{"name":"getCampaignStats","description":"Get summary stats for a single campaign — total submissions, approved count, conversion rate, perks issued, and time-to-first-submission. Useful for an agent reporting back to its user.","inputSchema":{"type":"object","required":["campaignId"],"properties":{"campaignId":{"type":"string","description":"Campaign to fetch stats for."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"getPricing","fixed":{"name":"getPricing","description":"Get the market-rate pricing for a marketing action. Returns USD value and recommended perk type/value.","inputSchema":{"type":"object","properties":{"actionId":{"type":"string","description":"Action ID (e.g. ig_post, google_review)"},"platformId":{"type":"string","description":"Platform ID (e.g. instagram, google)"},"businessType":{"type":"string","description":"Business type modifier (default: general)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"listActions","fixed":{"name":"listActions","description":"List the 125 marketing actions available on Social Perks. Filterable by platform, type, and effort.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":1},"type":{"enum":["content","review","engage","share","referral"],"type":"string"},"perPage":{"type":"integer","default":50},"maxEffort":{"type":"integer","maximum":5,"minimum":0},"platformId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"listCampaigns","fixed":{"name":"listCampaigns","description":"List campaigns. Requires auth — returns the caller's campaigns.","inputSchema":{"type":"object","properties":{"status":{"enum":["draft","active","paused","completed"],"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63},{"name":"listSubmissions","fixed":{"name":"listSubmissions","description":"List submissions for a business or campaign, filterable by state (pending/approved/rejected). Returns paginated results.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":1,"minimum":1},"state":{"enum":["pending","approved","rejected"],"type":"string"},"perPage":{"type":"integer","default":25,"maximum":100,"minimum":1},"businessId":{"type":"string"},"campaignId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"searchInfluencers","fixed":{"name":"searchInfluencers","description":"Search influencers by platform and follower count.","inputSchema":{"type":"object","properties":{"platform":{"type":"string"},"minFollowers":{"type":"integer"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":57,"tokensAfter":57},{"name":"submitProof","fixed":{"name":"submitProof","description":"Submit proof of completion for a campaign action — a public URL to a post, a screenshot, a video, or platform-verified data. The submission enters a review queue (or auto-approves depending on the campaign's verification mode).","inputSchema":{"type":"object","required":["campaignId","actionId","proofUrl","proofType"],"properties":{"actionId":{"type":"string","description":"Specific action being completed (must be allowed by the campaign)."},"metadata":{"type":"object","description":"Optional bag of context (poster handle, post timestamp, etc.).","additionalProperties":true},"proofUrl":{"type":"string","maxLength":2048,"description":"Public URL of the proof. For url-type submissions, the platform verifier will fetch this."},"proofType":{"enum":["screenshot","url","video","api_verified"],"type":"string","description":"How the proof was captured. 'url' triggers automated verification."},"campaignId":{"type":"string","description":"Campaign the submission applies to."}}},"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":284,"tokensAfter":284}],"toolsChanged":9,"tokensSaved":0,"todo":[{"tool":"listActions","params":["page","type","perPage","maxEffort","platformId"]},{"tool":"listCampaigns","params":["status"]},{"tool":"listSubmissions","params":["page","state","perPage","businessId","campaignId"]},{"tool":"searchInfluencers","params":["platform","minFollowers"]}],"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."}