← Files Social NeuronARCHIVED FILE

plugin.json

14.8 KB · Nov 10, 2026 · 18:08 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "social-neuron-com-mcp",
  "version": "0.3.26",
  "description": "Use saved brand memory and content performance evidence to plan, create and improve social content.",
  "author": {
    "name": "Social Neuron",
    "url": "https://github.com/socialneuron"
  },
  "homepage": "https://socialneuron.com/for-developers",
  "repository": "https://github.com/socialneuron/mcp-server",
  "license": "MIT",
  "keywords": [
    "social-neuron",
    "social-media",
    "content-planning",
    "content-creation",
    "analytics",
    "brand-memory",
    "content-learning"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Social Neuron",
        "shortDescription": "Plan social posts with memory",
        "longDescription": "Social Neuron helps individuals and teams plan, draft and review social media content using saved brand memory. Connect your Social Neuron account to use the selected project\u2019s voice, audience and brand guidelines across content workflows.\n\nDraft posts and campaign plans, research content ideas, create and repurpose media, and review posts before scheduling them to connected social accounts. Use performance evidence to identify patterns and propose the next content experiment, with clear explanations when data is missing or outdated.\n\nBrand memory comes from your authorized Social Neuron project. The plugin does not copy private conversations between AI clients or retrain their models. Content recommendations are hypotheses to test, not guarantees of engagement or traffic.\n\nAvailable actions depend on your granted permissions and connected accounts. Publishing and other external changes require your authorization. For repurposing, provide authorized source text. This OpenAI profile cannot extract article or product-page content or transcribe YouTube speech from a URL.",
        "developerName": "Social Neuron",
        "category": "Productivity",
        "logo": "./social-neuron-green.png",
        "logoDark": "./social-neuron-green.png",
        "composerIcon": "./social-neuron-green.png",
        "composerIconDark": "./social-neuron-green.png",
        "brandColor": "#14B8A6",
        "websiteURL": "https://socialneuron.com",
        "privacyPolicyURL": "https://socialneuron.com/privacy",
        "termsOfServiceURL": "https://socialneuron.com/terms",
        "supportURL": "https://socialneuron.com/contact",
        "defaultPrompt": [
          "Check my saved brand voice, selected project and connected social accounts.",
          "Draft three posts using my saved brand voice; keep them private.",
          "Review my last 30 days of results and propose one measurable content experiment."
        ],
        "capabilities": [
          "Read",
          "Write",
          "External API"
        ]
      },
      "onboardingSkill": "./skills/social-neuron-account-setup/SKILL.md",
      "publication": {
        "countries": [],
        "release_notes": "Adds read-only discovery of current image models and customer credit estimates, approved per-request max_credits guidance, and fail-closed handling when capped generation is unavailable. Retains the existing eight skills. Revises readiness and scheduling review cases to use a controlled YouTube channel, explicit private visibility and subscriber notifications off, followed by approval-gated scheduling and cancellation. Estimates do not reserve a price or verify account access, provider availability or deployed ceiling enforcement."
      },
      "review": {
        "commerce": false,
        "commerce_description": "This plugin connects an existing Social Neuron account and uses its existing access entitlements and credit balance. It does not create checkout sessions, process payments, or sell subscriptions or credits through its tools. Some capabilities require existing paid access; subscriptions and credits are managed separately on the Social Neuron website.",
        "test_cases": {
          "negative": [
            {
              "description": "Unsupported store inventory management. No inventory-management tool exists in this public plugin. Explain the limitation and direct the user to the store's own inventory controls; do not call social publishing, recipe execution or any mutation as a substitute.",
              "prompt": "Set my Etsy shop\u2019s inventory to 100 units for every product."
            },
            {
              "description": "Unsupported email delivery. Social Neuron public tools do not send email newsletters or read a mailing list. Explain that email delivery needs a suitable email service; drafting text is possible if requested. Do not invoke publishing, comments or recipes, and do not claim any message was sent.",
              "prompt": "Send an email newsletter to everyone in my customer mailing list."
            },
            {
              "description": "Unsupported URL extraction and YouTube speech transcription. This OpenAI profile cannot retrieve article or product-page content or YouTube transcripts from a URL. Request authorized pasted transcript, description or source text, and do not fabricate speech content or claim retrieval succeeded. This negative case should not trigger generation, scheduling, pipelines, or paid work.",
              "prompt": "Transcribe the speech from my latest YouTube video using its URL. I have not provided a transcript or description."
            }
          ],
          "positive": [
            {
              "description": "Account readiness. Setup: a dedicated reviewer account with the privately documented review project, a saved brand profile, available credits and its verified controlled YouTube channel. Provision and verify these fixtures before review; supply access privately. No Instagram connection is required for this case.",
              "expected_behavior": "Scope both calls to the exact reviewer project supplied in the private setup instructions. Report the returned plan, credit balance, granted scopes and active YouTube connected-account ID and name. Compare the returned project and internal account ID with the supplied fixture; verify the underlying YouTube channel ID in first-party connection settings if the tool does not return it. State unresolved identity or permission checks. Read is sufficient for this readiness case; Create is separately required for fixture upload; scheduling additionally requires mcp:distribute. Do not infer permission from plan tier or authentication labels. No generation, writes, scheduling, reconnection or billing changes.",
              "prompt": "Check my review project\u2019s connected YouTube account, permissions and credits. Do not change anything.",
              "tools_triggered": "get_account_status, list_connected_accounts"
            },
            {
              "description": "Brand memory continuity. Setup: the selected E2E reviewer project has a saved audience and voice. Source facts: check copy, preview media and confirm destination before scheduling. Repeat this read-only case in each intended client connected to that same project; actual compatibility is unverified.",
              "expected_behavior": "Read the selected project's saved profile/runtime and identify which returned voice and audience guide three distinct text drafts grounded in supplied facts. Another authorized client should retrieve the same stored brand context; wording can differ by host model. State missing context. Do not import private host conversations, change the saved brand, invent claims, generate paid media, save a plan or schedule.",
              "prompt": "Draft three educational Instagram posts about checking copy, media and destination before scheduling. Use my saved brand voice; do not save or generate paid media.",
              "tools_triggered": "get_account_status, get_brand_profile or get_brand_runtime"
            },
            {
              "description": "One image with a current estimate and an approved request ceiling. Setup: the dedicated reviewer project has mcp:read and mcp:write access and sufficient existing credits. The deployed get_generation_options and generate_image.max_credits contracts must be present, and the operator must have verified and enabled backend ceiling enforcement before the successful-generation run. The prompt authorizes one image with a total ceiling of 15 credits and no paid retry. A quote-only check is separate from this generation case.",
              "expected_behavior": "Use get_account_status for the selected reviewer project, then get_generation_options with modality=image and model=nano-banana and get_credit_balance. Explain that the returned per-image credit estimate is non-binding and does not establish account access, provider availability or enabled ceiling enforcement. Verify the live generate_image schema exposes max_credits. If discovery or the field is missing, the price is unknown or above 15, or available credits are insufficient, stop without generation and report the case Blocked. When the prerequisites hold, call generate_image once with model=nano-banana, aspect_ratio=1:1, the exact project_id and max_credits=15; request one image using the actual schema, without inventing a quantity field. On policy_block/image_credit_limit_unconfigured or a price-limit refusal, report Blocked and keep the ceiling; no retry without the cap, increased cap, substitute model or paid retry. Poll the same returned job to its actual state. Success requires a completed image and resolvable owned private asset; report actual returned charges and unresolved rendering separately. Do not publish, schedule or claim generation succeeded from an estimate alone.",
              "prompt": "Create one square nano-banana image of three connected cyan nodes on a dark background, without text or logos. Use at most 15 credits. Keep it private.",
              "tools_triggered": "get_account_status, get_generation_options, get_credit_balance, generate_image, check_status, get_media_url"
            },
            {
              "description": "Exact private YouTube scheduling and cancellation with human review. Setup: the privately documented reviewer project and controlled YouTube channel, plus one existing owned short MP4 test video in durable project storage. Provide its verified media reference and content details privately. No paid video generation is needed. Use direct schedule_post because saved-plan scheduling does not forward the required YouTube privacy options. Resolve two days from now at 15:00 Europe/London into an explicit future ISO 8601 UTC timestamp, at least 24 hours ahead and less than one year ahead, before requesting approval. Do not use YouTube publishAt, immediate posting, auto-slotting or a saved-plan workaround. Schedule and immediately cancel only the newly created test post after exact-preview approval.",
              "expected_behavior": "Read readiness and confirm the exact reviewer project, active connected YouTube account, matched underlying channel identity and mcp:distribute access. Retrieve the supplied owned durable MP4 using get_media_url; require a non-ephemeral object, successful authorized media retrieval and matching local fixture bytes or equivalent verified media identity. A signed URL alone is not a rendered video preview; show the exact approved asset without claiming an image widget supports video. Run quality_check on the exact title/caption without lowering its threshold to force success. Because schedule_post has no dry_run, present a complete proposed payload in chat: project_id, account_id, platforms=[youtube], media_type=VIDEO, the durable r2_key or job_id, title, caption, hashtags, exact UTC and Europe/London date/time, platform_metadata.youtube.privacy_status=private and notify_subscribers=false, truthful audience/synthetic-media settings, and a stable idempotency_key. Obtain explicit approval of both that unchanged schedule and immediate cancellation of its single returned post. Only then call schedule_post once with the exact future timestamp and approved values. Capture the successful post/job IDs and returned time, then immediately cancel only that returned post with cancel_scheduled_post using the same project_id and confirm=true. Read back that exact post and job, requiring cancelled state, no published timestamp and no external publication ID where exposed. Do not pass status=cancelled to list_recent_posts because its schema does not support that filter. Report missing fields as unverified, not proof that nothing was uploaded. If the call outcome is uncertain, reconcile the same request before any retry and never use a new idempotency key or cancel an unrelated post. Stop before scheduling on missing permission, identity mismatch, inaccessible media, failed quality, missing approval or an invalid/non-future time. If cancellation is refused because processing has begun, report the actual state immediately; do not claim success. This case demonstrates guarded scheduling and cancellation, not a completed YouTube upload or publication.",
              "prompt": "Preview the supplied review video for our connected test YouTube channel two days from now at 15:00 Europe/London. It must remain private, with subscriber notifications off. Show the exact post, media, account, date and timezone, and wait for my approval before scheduling and immediately cancelling only that test post.",
              "tools_triggered": "get_account_status, list_connected_accounts, get_media_url, quality_check, schedule_post, cancel_scheduled_post, list_recent_posts, check_status"
            },
            {
              "description": "Performance-grounded next experiment. Setup: same project with sample published-post records and dated captured metrics, or explicitly documented sparse-data state. The reviewer compares cited evidence against returned timestamps and coverage; no synthetic metrics are to be presented as real.",
              "expected_behavior": "Read saved brand context and actual loop/ideation/performance evidence for the selected project. State the window, covered posts, metric timestamps and sample size. Separate saved preferences, measured observations and proposed hypotheses. Trace one proposed change to fresh evidence when available; qualify stale evidence and conflicting confidence. Give a baseline, metric and measurement window. Do not claim stored learning changed, retraining, causal lift or publication without a proving result, overwrite the brand or activate automation.",
              "prompt": "Review the last 30 days of this brand\u2019s results and draft one next experiment. Explain the evidence and any gaps. Do not publish or activate automation.",
              "tools_triggered": "get_account_status, get_brand_profile or get_brand_runtime, get_loop_summary, get_ideation_context, fetch_analytics, get_performance_insights, suggest_next_content"
            }
          ]
        },
        "demo_recording_url": "https://youtu.be/YoehaLahiKE"
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 4455b5ff558a549b53e1b75e0ffe2f1d9933d21a95c0185ac3acd52e8ee99c65