The agent-first social media planner: an AI agent drafts and schedules posts across Instagram, Facebook, LinkedIn, YouTube, X, Telegram, Discord, Mastodon, Nostr, WordPress, Ghost, and more, behind a human approval gate you control. Free, open source (MIT), local-first, MCP-native.
- capability exposure inferred + 35
- tool safety inferred + 12
- trust mitigators mixed − 11
inferred mixed
The A–E grade is our heuristic synthesis — a "review this" prompt, not a verdict. Each factor is tagged by what backs it: attested (a verifiable record), reported (a third party's claim), or inferred (our own heuristic, e.g. permissions). See methodology.
grade last moved 1w ago · see ecosystem CVEs →
- C · 44 → C · 36
- B · 32 → C · 44
- C · 44 → B · 32
No known CVEs for this server.
- high dangerous code
credential logged in 6 file(s) · obfuscated payload: dynamic require()/import()
- low dangerous code
env-secret-flows-to-network-js: A process environment value reaches a network call. Review whether it is a credential leaving the process; the ordinary API-wrapper shape (read a ke
- low dangerous code
env-secret-flows-to-network-js: A process environment value reaches a network call. Review whether it is a credential leaving the process; the ordinary API-wrapper shape (read a ke
analyzed commit 4848ee8 · analyzer v33 · 1w ago
skills & prompt files 1
- agent-rules pendpost-pendpost-4848ee8/AGENTS.md
danger signals17
- suspicious endpoint t.me pendpost-pendpost-4848ee8/app/src/components/__tests__/comments-panel.test.jsx :68
{ kind: 'comment', commentId: 'c-1', author: 'mock_reader', text: 'Great post!', ts: new Date(now).toISOString(), permalink: 'https://t.me/x/1' }, - suspicious endpoint discord.com pendpost-pendpost-4848ee8/app/src/components/__tests__/setup.test.jsx :841
await user.type(webhookField, 'https://discord.com/api/webhooks/1/abc'); - suspicious endpoint t.me pendpost-pendpost-4848ee8/lib/accounts.mjs :179
telegram: tgChannel.startsWith('@') ? `https://t.me/${tgChannel.slice(1)}` : null, - suspicious endpoint api.telegram.org pendpost-pendpost-4848ee8/lib/comments.mjs :482
const url = `https://api.telegram.org/bot${token}/getUpdates?allowed_updates=["message"]&limit=100`; - suspicious endpoint t.me pendpost-pendpost-4848ee8/lib/drivers/mock-driver.mjs :689
if (p === 'telegram') return `https://t.me/mockchannel/${post.tgMessageId}`; - suspicious endpoint t.me pendpost-pendpost-4848ee8/lib/playbooks.mjs :270
portalUrl: 'https://t.me/BotFather', - suspicious endpoint api.telegram.org pendpost-pendpost-4848ee8/scripts/telegram-social.mjs :88
const apiBase = () => `https://api.telegram.org/bot${readEnv('TELEGRAM_BOT_TOKEN')}`; - suspicious endpoint t.me pendpost-pendpost-4848ee8/scripts/telegram-social.mjs :208
if (ch.startsWith('@')) return `https://t.me/${ch.slice(1)}/${post.tgMessageId}`; - suspicious endpoint discord.com pendpost-pendpost-4848ee8/test/cloud-vault-lanes.test.mjs :33
const DC_URL = `https://discord.com/api/webhooks/${DC_ID}/fake-DISCORD-webhook-secret`; - suspicious endpoint t.me pendpost-pendpost-4848ee8/test/mark-posted-lane.test.mjs :98
const whole = await markPosted({ campaign: 'lane-camp', postId: 'single-1', actor: 'owner', externalUrl: 'https://t.me/c/1' }); - suspicious endpoint discord.com pendpost-pendpost-4848ee8/test/platform-validate-lanes.test.mjs :126
'DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/1/sentinel', - credential in logs credential in log pendpost-pendpost-4848ee8/scripts/gbp-social.mjs :250
console.log(`[ok] Token refreshed ${tokenTail(data.access_token)}, expires ${new Date(Number(vars.GBP_TOKEN_EXPIRES_AT)).toLocaleString('en-US')}.`); - credential in logs credential in log pendpost-pendpost-4848ee8/scripts/linkedin-social.mjs :170
console.log(`[ok] Token refreshed ${tokenTail(data.access_token)}, expires ${new Date(Number(vars.LINKEDIN_TOKEN_EXPIRES_AT)).toLocaleString('en-US')}.`); - credential in logs credential in log pendpost-pendpost-4848ee8/scripts/pinterest-social.mjs :239
console.log(`[ok] Token refreshed ${tokenTail(data.access_token)}, expires ${new Date(Number(vars.PINTEREST_TOKEN_EXPIRES_AT)).toLocaleString('en-US')}.`); - credential in logs credential in log pendpost-pendpost-4848ee8/scripts/tiktok-social.mjs :549
console.log(`\n[ok] Access token stored (${tokenTail(vars.TIKTOK_ACCESS_TOKEN)}).`); - credential in logs credential in log pendpost-pendpost-4848ee8/scripts/x-social.mjs :240
console.log(`[ok] Token refreshed ${tokenTail(data.access_token)}, expires ${new Date(Number(vars.X_TOKEN_EXPIRES_AT)).toLocaleString('en-US')}.`); - credential in logs credential in log pendpost-pendpost-4848ee8/scripts/yt-social.mjs :519
console.log(`\n[ok] Refresh token stored (${tokenTail(data.refresh_token)}).`);
Heuristic, inferred signals — false positives (legitimately powerful tools, forks, language ports) are expected. Treat each as "review this", not a verdict. See the ecosystem-wide picture on the security hub, or the fleet security of pendpost.