← MCP servers · pollinations

Pollinations

BLOCKgrade F · trust 21/100

Your Friendly Open-Source Gen-AI Platform

colaboratorycolaboratory notebookdiffusiongangenerativegsochacktoberfest acceptedhacktoberfest2025

Overview

From the repository's own README, as read at the audited commit.

<div align="center">  <picture>    <source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/brand/lockup-horizontal-white.svg" />    <img src="packages/ui/src/brand/lockup-horizontal-black.svg" alt="pollinations.ai" width="100%" />  </picture>    <p><strong>Open-source AI for people who make things.</strong></p>[![Stars](https://img.shields.io/github/stars/pollinations/pollinations?style=for-the-badge&logo=github)](https://github.com/pollinations/pollinations/stargazers)[![License](https://img.shields.io/github/license/pollinations/pollinations?style=for-the-badge)](LICENSE)[![Discord](https://img.shields.io/discord/885844321461485618?style=for-the-badge&logo=discord&label=Discord&color=5865F2)](https://discord.gg/pollinations-ai-885844321461485618)[Website](https://pollinations.ai) · [Dashboard](https://enter.pollinations.ai) · [Playground](https://pollinations.ai/play) · [API Docs](APIDOCS.md) · [Discord](https://discord.gg/pollinations-ai-885844321461485618)</div>> [!IMPORTANT]> **Model IDs are now standardized**>> Model IDs now follow `publisher/model`—for example, `flux` → `black-forest-labs/flux.1-schnell`. The model catalog uses the new IDs. Existing IDs remain supported as aliases in API requests.>> [Browse models and their aliases →](https://enter.pollinations.ai/models)<p align="center"><img src="https://media.pollinations.ai/eb3be88cf66d7491" alt="Pixel art cozy hackerspace — robot at terminal, nomnom creature eating code, bee with glasses" width="800" /></p><!-- recent-apps:start -->## 🆕 Recent Apps| Name | Description | Author ||------|-------------|--------|| [🛠️ ApiScribe](https://fadyabohamza-netizen.github.io/apiscribe) | Describe an API in plain English, get organized REST or GraphQL endpoint blueprints with params and responses. BYOP Pollinations-powered. | [@fadyabohamza-netizen](https://github.com/fadyabohamza-netizen) || [🛠️ TestMine](https://fadyabohamza-netizen.github.io/testmine) | Paste source code, pick a framework, get unit te

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add shared --env AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} --env AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} --env AZURE_MYCELI_PROD_API_KEY=${AZURE_MYCELI_PROD_API_KEY} --env AZURE_MYCELI_PROD_SWEDEN_API_KEY=${AZURE_MYCELI_PROD_SWEDEN_API_KEY} -- npx -y shared
claude-desktop
{
  "mcpServers": {
    "shared": {
      "command": "npx",
      "args": [
        "-y",
        "shared"
      ],
      "env": {
        "AWS_ACCESS_KEY_ID": "${AWS_ACCESS_KEY_ID}",
        "AWS_SECRET_ACCESS_KEY": "${AWS_SECRET_ACCESS_KEY}",
        "AZURE_MYCELI_PROD_API_KEY": "${AZURE_MYCELI_PROD_API_KEY}",
        "AZURE_MYCELI_PROD_SWEDEN_API_KEY": "${AZURE_MYCELI_PROD_SWEDEN_API_KEY}"
      }
    }
  }
}

Exposed tools (23) 22 read · 1 write · 0 destructive

ToolRiskDescription
ComposioreadUse Gmail, Slack, GitHub, Drive, and hundreds of other apps. Agents ask you to connect when needed.
ComputerreadA private persistent computer: files and a bash shell that survive between runs.
FFmpegreadTrim, convert, resize, compress, and remix audio and video.
GitHubreadCode hosting
PollinationsreadGenerate images, video, audio, text and embeddings from your own wallet.
agentreadSame description
agentsreadExample agents
answerreadThe answer
bashread
brief-agentreadConcise answers
create_chartwriteCreate a chart or graph visualization from data points.
external-agentreadRuns on its owner
generateImagereadGenerate an image
modelreadTest
my-second-modelreadAccount API model
my-test-modelreadAccount API model
repo-agentreadFrom GitHub
researcherread
runFfmpegread
unused-prompt-agent-namereadUnused description
weatherreadGet weather
web_fetch_exaread
web_search_exaread

Details

Source
pollinations/pollinations
npm
shared
PyPI
llm-pollinations
Transports
streamable-http
Credentials it reads
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAZURE_MYCELI_PROD_API_KEYAZURE_MYCELI_PROD_SWEDEN_API_KEYBOT_TOKEN_CATGPTBOT_TOKEN_OPPOSITE_PROMPTCLOUDFLARE_API_TOKENCLOUDFLARE_API_TOKEN_MYCELIDASHSCOPE_API_KEYDEEPINFRA_API_KEYDISCORD_TOKENGH_TOKEN
License
MIT
Stars
5,085 · pushed 0d ago

Trust audit

Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (14 observation(s))
Network
declared (2 observation(s))
Shell
declared (2 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
enter.pollinations.ai/worker-runtime.d.ts:2944
exec(input?: (string | URLPatternInit), baseURL?: string): URLPatternResult | null;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
enter.pollinations.ai/worker-runtime.d.ts:9768
exec(query: string): Promise<D1ExecResult>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
operations/infrastructure/gpu/zimage/deploy-all-ionet.sh:8
SSH_KEY="${SSH_KEY:-$HOME/.ssh/thomashkey}"
Why it matters. touches a credential store
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/model-debugging/SKILL.md:22
- **403 errors**: Users denied access to specific models (API key restrictions)
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
APIDOCS.md:3247
models ignore text inputs — any text prompt passed to the Trellis 2/Asset Harvester family will
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
gen.pollinations.ai/src/docs/3d-generation.md:5
models ignore text inputs — any text prompt passed to the Trellis 2/Asset Harvester family will
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/polli/SKILL.md
.claude/skills/polli/SKILL.md
Why it matters. link not followed
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
operations/observability/scripts/push-secrets.mjs:36
console.log(`Skipping non-Worker secret ${name}`);
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
apps/composio-mcp/worker.js:156
callback_url: callbackUrl,
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/monitor-services/SKILL.md:46
curl -s --connect-timeout 5 --max-time 10 http://192.222.51.105:8765/health
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/monitor-services/SKILL.md:79
curl -s --connect-timeout 5 --max-time 10 http://192.222.51.105:8189/health
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/ai-dungeon-master/src/components/figma/ImageWithFallback.tsx:4
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/computer-mcp/secrets.vars.json:3
"GITHUB_APP_PRIVATE_KEY": "ENC[AES256_GCM,data:8B9WeHKttha0jbRDpL0ehHCbcJZSxps6tVHt0eNrxCaEDysfmbB2xKiKgLJPe0gu0TEHHUdwLSxmLOmzbbMPPcZ6UrgkwRhleZPidJ7yuWgGUqC39jnvAOpqRS+6PG1C9DiLNylupVvXYhjqCNWatCdjs
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
enter.pollinations.ai/secrets/dev.vars.json:12
"SSH_RUNPOD_KLEIN": "ENC[AES256_GCM,data:wnWlFH7oUX0qPWZ9/OMEkzV5MTlubVdD+/ZvHT4wXG9B5rU+LP4xsQdRms6vpsUT9byS7QaRPse3B+WBq+nM+Xu5ck8dEETSGSDrSnewSi1oKCwwHPVGz9KACknVTH11d0OJLuAkBPGQAdopLmilWL60ZJCNg28
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
enter.pollinations.ai/secrets/dev.vars.json:18
"GITHUB_APP_PRIVATE_KEY": "ENC[AES256_GCM,data:zyTCGnoZfDyeoCBgQ3ix9kIVKBVzQ4zUWZi+UCl2vlrRcG8Kcs4EE5JHXISarkLpajNjgobyEJw7TKbKjdMRLFFOrU9Nv+z22j/xP9cIZFVW5Lt/F3oD3Od+0pEbRHVr+SRcf4F1qazQMjgg9AHqfbJKq
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
enter.pollinations.ai/secrets/prod.vars.json:12
"SSH_RUNPOD_KLEIN": "ENC[AES256_GCM,data:z3u2POkOeuFFf8Hn4uiqLX4Lzz6z4kzwof+FbZo/8y8olfcfnq+mk9ufSa9SSWhLofKlPcE1w6+WdlxxSCVzXrM3MbGuiw2kswH8Wjvtzphs6xC7tqkWSuDo2bevKqSS2Qick4oCTeY2jqpX7G5m4omPlzbUemi
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
apps/catgpt/script.js:56
"🐈⬛",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
enter.pollinations.ai/frontend/src/components/news-faq/news-banner.tsx:30
emoji: "🧑💻",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
operations/app-management/app.json:2275
"emoji": "🧑💻",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
operations/app-management/app.json:4648
"emoji": "🧑🏫",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
operations/app-management/app.json:5005
"emoji": "🧑💻",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/mcp/worker.test.js:9
const TOKEN = "sk_test_request_scoped";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
enter.pollinations.ai/test/github-secret-scanning.test.ts:145
token: "sk_00000000000000000000000000000000",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
enter.pollinations.ai/test/oauth-code.test.ts:331
apiKey: "sk_minted_by_consent",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
enter.pollinations.ai/test/oauth-code.test.ts:392
apiKey: "sk_minted_by_consent",

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-09-18 · audit v0.4.0 · source sha 4b9e15302921 · full audit: observations/trust-audit/mcp-server/pollinations__pollinations-2.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-184b9e15302921BLOCKF21first audit

Also audited

Servers with a similar trust profile.

Questions

What is the Pollinations MCP server?

Your Friendly Open-Source Gen-AI Platform

What tools does Pollinations expose?

23 in total: 22 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Pollinations safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (21/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Pollinations need?

It reads AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AZURE_MYCELI_PROD_API_KEY, AZURE_MYCELI_PROD_SWEDEN_API_KEY, BOT_TOKEN_CATGPT, BOT_TOKEN_OPPOSITE_PROMPT, CLOUDFLARE_API_TOKEN, CLOUDFLARE_API_TOKEN_MYCELI, DASHSCOPE_API_KEY, DEEPINFRA_API_KEY, DISCORD_TOKEN and GH_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Pollinations run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as shared.

How current is this page?

The grade is for one exact copy of the source (4b9e15302921), read on 2026-09-18. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-18 · job trust-audit-2026-09-18