Social Perks

Agent-native marketing platform: create campaigns, submit proofs, review submissions.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
86%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,223Tokens (tool definitions)
~1.0 KBTypical response size
Moderate attention impact (0.96% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "socialperks": {
      "url": "https://socialperks.app/api/mcp"
    }
  }
}

Remote endpoints

https://socialperks.app/api/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢getPricing(actionId, platformId, businessType)

Get the market-rate pricing for a marketing action. Returns USD value and recommended perk type/value.

Input Schema

{
  "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)"
    }
  }
}
🟢listActions(platformId, type, maxEffort, page, perPage)

List the 125 marketing actions available on Social Perks. Filterable by platform, type, and effort.

Input Schema

{
  "type": "object",
  "properties": {
    "platformId": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "content",
        "review",
        "engage",
        "share",
        "referral"
      ]
    },
    "maxEffort": {
      "type": "integer",
      "minimum": 0,
      "maximum": 5
    },
    "page": {
      "type": "integer",
      "default": 1
    },
    "perPage": {
      "type": "integer",
      "default": 50
    }
  }
}
🟢getBenchmarks(businessType)

Get industry benchmarks (engagement rate, conversion rate, etc.) for a business type.

Input Schema

{
  "type": "object",
  "properties": {
    "businessType": {
      "type": "string",
      "description": "Industry name or slug (e.g. 'restaurants', 'coffee-shops'). Omit for the full catalog."
    }
  }
}
🟢listCampaigns(status)

List campaigns. Requires auth — returns the caller's campaigns.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "paused",
        "completed"
      ]
    }
  }
}
🟢searchInfluencers(platform, minFollowers)

Search influencers by platform and follower count.

Input Schema

{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string"
    },
    "minFollowers": {
      "type": "integer"
    }
  }
}
🟡createCampaign(businessId, name, description, actions, discountValue, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "businessId": {
      "type": "string",
      "description": "The business owning this campaign. Must match the API key's business."
    },
    "name": {
      "type": "string",
      "description": "Customer-facing campaign name",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "description": "Optional internal description"
    },
    "actions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "description": "Action IDs the campaign accepts (e.g. ['ig_st'] for an Instagram Story Tag)."
    },
    "discountValue": {
      "type": "number",
      "minimum": 0.01,
      "description": "Discount amount. Capped at 100 for pct, 10000 for dol."
    },
    "discountType": {
      "type": "string",
      "enum": [
        "pct",
        "dol"
      ],
      "description": "Discount denomination: 'pct' for percentage, 'dol' for dollars off."
    },
    "maxCompletions": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Optional cap on total completions. Null = no cap."
    },
    "expiresInDays": {
      "type": "integer",
      "minimum": 1,
      "maximum": 365,
      "description": "Days until the campaign auto-expires. Default 60."
    }
  },
  "required": [
    "businessId",
    "name",
    "actions",
    "discountValue",
    "discountType"
  ]
}
🟡submitProof(campaignId, actionId, proofUrl, proofType, metadata)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign the submission applies to."
    },
    "actionId": {
      "type": "string",
      "description": "Specific action being completed (must be allowed by the campaign)."
    },
    "proofUrl": {
      "type": "string",
      "description": "Public URL of the proof. For url-type submissions, the platform verifier will fetch this.",
      "maxLength": 2048
    },
    "proofType": {
      "type": "string",
      "enum": [
        "screenshot",
        "url",
        "video",
        "api_verified"
      ],
      "description": "How the proof was captured. 'url' triggers automated verification."
    },
    "metadata": {
      "type": "object",
      "description": "Optional bag of context (poster handle, post timestamp, etc.).",
      "additionalProperties": true
    }
  },
  "required": [
    "campaignId",
    "actionId",
    "proofUrl",
    "proofType"
  ]
}
⚪reviewSubmission(submissionId, decision, reason)

Approve or reject a submission. Approving releases the perk; rejecting requires a reason. Use this when the business chooses manual review over auto-verification.

Input Schema

{
  "type": "object",
  "properties": {
    "submissionId": {
      "type": "string",
      "description": "Submission id from a prior submitProof call."
    },
    "decision": {
      "type": "string",
      "enum": [
        "approve",
        "reject"
      ],
      "description": "Approve releases the perk. Reject explains why the proof was insufficient."
    },
    "reason": {
      "type": "string",
      "description": "Required when decision='reject'. 1-500 chars.",
      "maxLength": 500
    }
  },
  "required": [
    "submissionId",
    "decision"
  ]
}
🟢listSubmissions(businessId, campaignId, state, page, perPage)

List submissions for a business or campaign, filterable by state (pending/approved/rejected). Returns paginated results.

Input Schema

{
  "type": "object",
  "properties": {
    "businessId": {
      "type": "string"
    },
    "campaignId": {
      "type": "string"
    },
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "approved",
        "rejected"
      ]
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "default": 1
    },
    "perPage": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 25
    }
  }
}
🟢getCampaignStats(campaignId)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign to fetch stats for."
    }
  },
  "required": [
    "campaignId"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools