Autonomous AI market-making agent platform for tokenized equities on Robinhood Chain, built on OpenHermit and metered with x402.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport streamable-http · http counts 20 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
meridian_agent_thoughts
-
meridian_basis_feed
-
meridian_bridge_execute
-
meridian_bridge_quote
-
meridian_carry_quote
-
meridian_index_execute
-
meridian_index_yield
-
meridian_index_yield_execute
-
meridian_launch_token_pons
-
meridian_list_assets
-
meridian_list_chains
-
meridian_lp_score
-
meridian_market_data
-
meridian_market_universe
-
meridian_perp_feed
-
meridian_propose_lp_action
-
meridian_settle_x402
-
meridian_submit_research
-
meridian_suggest_route
-
meridian_universe_status
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit f071244 · analyzer v33 · 1w ago
skills & prompt files 4
danger signals1
- suspicious endpoint api.telegram.org Meridian402-meridian-f071244/agent/_merd-telegram.mts :87
await fetch(`https://api.telegram.org/bot${TOKEN}/sendMessage`, {
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 277
filesystem 100
- fs Meridian402-meridian-f071244/agent/_merd-autopilot.mts :9
import { existsSync, readFileSync, appendFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-bridge.mts :18
import { appendFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-burn.mts :15
import { appendFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-commission.mts :12
import { readFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-daily-print.mts :19
import { writeFileSync, readFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-daily.mts :12
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-engage.mts :18
import { existsSync, readFileSync, writeFileSync, rmSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-outreach.mts :20
import { existsSync, readFileSync, writeFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-payout.mts :15
import { readFileSync, writeFileSync, appendFileSync, existsSync, unlinkSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-telegram.mts :10
import { readFileSync, writeFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-thread.mts :6
import { existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_merd-treasury.mts :15
import { readFileSync, writeFileSync, appendFileSync, existsSync, unlinkSync } from "node:fs";
show 28 more
- fs Meridian402-meridian-f071244/agent/_sk-1-deploy-safe.mjs :10
import { readFileSync, writeFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_sk-2-deploy-roles.mjs :7
import { readFileSync, writeFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_sk-3-enable-module.mjs :7
import { readFileSync, writeFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_sk-4-scope-session.mjs :7
import { readFileSync, writeFileSync, appendFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_sk-5-prove-containment.mjs :7
import { readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_sk-7-prove-revocation.mjs :7
import { readFileSync, writeFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_sk-8-owner-setup.mjs :8
import { readFileSync, writeFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/_sk-9-prove-swap.mts :7
import { readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/accounts.ts :8
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/agentProposals.ts :15
import { readFileSync, writeFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/assetScorecard.ts :8
import { readFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/attribution.ts :21
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/attributionBackfill.ts :7
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/backtest/simulate.legacy-momentum.ts :31
import { readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/backtest/simulate.ts :27
import { readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/backup.ts :14
import { existsSync, readFileSync, writeFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/bookSnapshot.ts :10
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/consistency.ts :6
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/credits.ts :6
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/dailyReconcile.ts :10
import { readFileSync, writeFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/dataDir.ts :1
import { existsSync, mkdirSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/deploy/fleets.ts :10
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/deploy/userAgents.ts :6
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/dumpWatch.ts :26
import { readFileSync, writeFileSync, existsSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/earn/scout.ts :10
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/earn/xTalk.ts :21
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/earningsHistory.ts :11
import { existsSync, readFileSync } from "node:fs"; - fs Meridian402-meridian-f071244/agent/src/executionsLog.ts :7
import { existsSync, readFileSync } from "node:fs";
60 more not shown — this panel samples each group; the count above is the real total.
shell / exec 4
- shell Meridian402-meridian-f071244/agent/_merd-daily-print.mts :18
import { execFileSync } from "node:child_process"; - shell (weak) Meridian402-meridian-f071244/agent/test/mcp-server.test.ts :3
import { spawn, type ChildProcess } from "node:child_process"; - shell (weak) Meridian402-meridian-f071244/agent/test/risk-limiter.test.ts :6
import { spawnSync } from "node:child_process"; - shell (weak) Meridian402-meridian-f071244/agent/test/signer-assert.test.ts :4
import { spawnSync } from "node:child_process";
network 29
- net Meridian402-meridian-f071244/agent/_feegrowthprobe.mjs :38
const ethRes = await fetch("https://query1.finance.yahoo.com/v8/finance/chart/ETH-USD?range=1d&interval=1d", { headers: { "User-Agent": "Mozilla/5.0 (Meridian probe)" } }); - net Meridian402-meridian-f071244/agent/_indexlpbacktest.mjs :59
const ethRes = await fetch("https://query1.finance.yahoo.com/v8/finance/chart/ETH-USD?range=1d&interval=1d", { headers: { "User-Agent": "Mozilla/5.0 (Meridian probe)" } }); - net Meridian402-meridian-f071244/agent/_indexlpprobe.mjs :40
const ethRes = await fetch("https://query1.finance.yahoo.com/v8/finance/chart/ETH-USD?range=1d&interval=1d", { headers: { "User-Agent": "Mozilla/5.0 (Meridian probe)" } }); - net Meridian402-meridian-f071244/agent/_merd-autopilot.mts :32
return await (await fetch(API + p, { signal: AbortSignal.timeout(20_000) })).json(); - net Meridian402-meridian-f071244/agent/_merd-bridge.mts :65
const res = await fetch("https://api.relay.link/quote", { - net Meridian402-meridian-f071244/agent/_merd-daily-print.mts :52
const j = async (path: string) => (await fetch(`${API}${path}`, { signal: AbortSignal.timeout(20000) })).json(); - net Meridian402-meridian-f071244/agent/_merd-daily.mts :48
return await (await fetch(API + p, { signal: AbortSignal.timeout(20_000) })).json(); - net Meridian402-meridian-f071244/agent/_merd-milestone.mts :17
(await fetch(u, { headers: { "User-Agent": "Mozilla/5.0" }, signal: AbortSignal.timeout(30000) })).json(); - net Meridian402-meridian-f071244/agent/_merd-payout.mts :95
const pending = (await (await fetch(`${API}/api/admin/pending-payouts`, { headers, signal: AbortSignal.timeout(20_000) })).json()) as { - net Meridian402-meridian-f071244/agent/_merd-steward.mts :29
return await (await fetch(`${API}${path}`, { headers: auth ? headers : undefined, signal: AbortSignal.timeout(20_000) })).json(); - net Meridian402-meridian-f071244/agent/_merd-telegram.mts :33
const j = async (path: string) => (await fetch(`${API}${path}`, { signal: AbortSignal.timeout(20000) })).json(); - net Meridian402-meridian-f071244/agent/src/assetScorecard.ts :92
const info = (await fetch(`https://robinhoodchain.blockscout.com/api/v2/tokens/${p.token}`, {
show 17 more
- net Meridian402-meridian-f071244/agent/src/attributionBackfill.ts :31
const res = await fetch("https://query1.finance.yahoo.com/v8/finance/chart/ETH-USD?range=3mo&interval=1d", { - net Meridian402-meridian-f071244/agent/src/capitalFlows.ts :62
const res = await fetch(`${EXPLORER_API}?${params}`, { signal: AbortSignal.timeout(20_000) }); - net Meridian402-meridian-f071244/agent/src/deploy/myAgent.ts :101
if (init?.signal) return fetch(input, init); - net Meridian402-meridian-f071244/agent/src/earn/xTalk.ts :141
const r = await fetch(`https://cdn.syndication.twimg.com/tweet-result?id=${id}&token=a`, { - net Meridian402-meridian-f071244/agent/src/indexYield.ts :103
const res = await fetch(url, { ...init, signal: AbortSignal.timeout(8000) }); - net Meridian402-meridian-f071244/agent/src/launch/watch.ts :161
const r = await fetch(`${PUSH_URL}/api/launch-venues`, { method: "POST", headers: { "content-type": "application/json", authorization: `Bearer ${PUSH_TOKEN}` }, body: JSON.stringify(body), signal: Abo - net Meridian402-meridian-f071244/agent/src/marketData.ts :137
const res = await fetch(url, { - net Meridian402-meridian-f071244/agent/src/research/basisLogger.ts :74
const res = await fetch(`https://query1.finance.yahoo.com/v8/finance/chart/${symbol}?interval=1d&range=1d`, { - net Meridian402-meridian-f071244/agent/src/research/lighterLogger.ts :18
const res = await fetch(`${API}${path}`, { signal: AbortSignal.timeout(20_000) }); - net Meridian402-meridian-f071244/agent/src/signals/basis.ts :23
const res = await fetch( - net Meridian402-meridian-f071244/agent/src/signals/flowScan.ts :74
sink(await fetch(cur, end)); - net Meridian402-meridian-f071244/agent/src/signals/perpFeed.ts :36
const res = await fetch(`${API}${path}`, { signal: AbortSignal.timeout(15_000) }); - net Meridian402-meridian-f071244/agent/src/signals/tokenAnalyst.ts :54
sink(await fetch(cur, end)); - net Meridian402-meridian-f071244/agent/src/social/xOAuth.ts :150
const tr = await fetch(TOKEN, { - net Meridian402-meridian-f071244/agent/src/venues/uniswapV4.ts :110
const res = await fetch("https://query1.finance.yahoo.com/v8/finance/chart/ETH-USD?range=1d&interval=1d", { - net (weak) Meridian402-meridian-f071244/agent/test/mcp-server.test.ts :34
const res = await fetch(`http://127.0.0.1:${PORT}/health`); - net (weak) Meridian402-meridian-f071244/contracts/test/rpcproxy.mjs :3
import http from "node:http";
secrets 32
- secrets Meridian402-meridian-f071244/agent/_merd-autopilot.mts :11
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/_merd-bridge.mts :40
const key = (process.env.MERD_TREASURY_WALLET_KEY ?? "").trim(); - secrets Meridian402-meridian-f071244/agent/_merd-burn.mts :45
const key = (process.env.MERD_TREASURY_WALLET_KEY ?? "").trim(); - secrets Meridian402-meridian-f071244/agent/_merd-commission.mts :19
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/_merd-daily.mts :20
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/_merd-engage.mts :20
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/_merd-outreach.mts :22
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/_merd-payout.mts :23
const TOKEN = (process.env.MERIDIAN_MCP_TOKEN ?? "").trim(); - secrets Meridian402-meridian-f071244/agent/_merd-steward.mts :12
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/_merd-telegram.mts :13
const TOKEN = process.env.MERD_TG_BOT_TOKEN; - secrets Meridian402-meridian-f071244/agent/_merd-treasury.mts :49
const key = (process.env.MERD_TREASURY_WALLET_KEY ?? "").trim(); - secrets Meridian402-meridian-f071244/agent/_ohschedule.mjs :2
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN });
show 20 more
- secrets Meridian402-meridian-f071244/agent/_ohsetup.mjs :2
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/_sk-1-deploy-safe.mjs :23
const key = process.env.AGENT_SIGNER_PRIVATE_KEY; - secrets Meridian402-meridian-f071244/agent/_sk-2-deploy-roles.mjs :23
const key = process.env.AGENT_SIGNER_PRIVATE_KEY; - secrets Meridian402-meridian-f071244/agent/_sk-3-enable-module.mjs :19
const account = privateKeyToAccount((process.env.AGENT_SIGNER_PRIVATE_KEY.startsWith("0x") ? "" : "0x") + process.env.AGENT_SIGNER_PRIVATE_KEY); - secrets Meridian402-meridian-f071244/agent/_sk-4-scope-session.mjs :20
const account = privateKeyToAccount((process.env.AGENT_SIGNER_PRIVATE_KEY.startsWith("0x") ? "" : "0x") + process.env.AGENT_SIGNER_PRIVATE_KEY); - secrets Meridian402-meridian-f071244/agent/_sk-5-prove-containment.mjs :20
const session = privateKeyToAccount(process.env.SPIKE_SESSION_KEY); - secrets Meridian402-meridian-f071244/agent/_sk-7-prove-revocation.mjs :21
const owner = privateKeyToAccount((process.env.AGENT_SIGNER_PRIVATE_KEY.startsWith("0x") ? "" : "0x") + process.env.AGENT_SIGNER_PRIVATE_KEY); - secrets Meridian402-meridian-f071244/agent/_sk-8-owner-setup.mjs :22
const owner = privateKeyToAccount((process.env.AGENT_SIGNER_PRIVATE_KEY.startsWith("0x") ? "" : "0x") + process.env.AGENT_SIGNER_PRIVATE_KEY); - secrets Meridian402-meridian-f071244/agent/_sk-9-prove-swap.mts :18
const owner = privateKeyToAccount(((process.env.AGENT_SIGNER_PRIVATE_KEY!.startsWith("0x") ? "" : "0x") + process.env.AGENT_SIGNER_PRIVATE_KEY) as `0x${string}`); - secrets Meridian402-meridian-f071244/agent/src/accounts.ts :23
const SESSION_SECRET = process.env.MERIDIAN_SESSION_SECRET || randomBytes(32).toString("hex"); - secrets Meridian402-meridian-f071244/agent/src/config.ts :104
mcpToken: process.env.MERIDIAN_MCP_TOKEN ?? "", - secrets Meridian402-meridian-f071244/agent/src/deploy/fleets.ts :173
const gw = new GatewayClient({ baseUrl: process.env.OPENHERMIT_GATEWAY_URL, token: process.env.GATEWAY_ADMIN_TOKEN }); - secrets Meridian402-meridian-f071244/agent/src/launch/custodialLaunch.ts :81
const key = (process.env.MERD_LAUNCH_WALLET_KEY ?? "").trim(); - secrets Meridian402-meridian-f071244/agent/src/launch/watch.ts :142
const PUSH_TOKEN = process.env.MERIDIAN_MCP_TOKEN ?? ""; - secrets Meridian402-meridian-f071244/agent/src/social/xClient.ts :20
const appKey = process.env.X_API_KEY; - secrets Meridian402-meridian-f071244/agent/src/social/xOAuth.ts :26
return Boolean(process.env.X_OAUTH_CLIENT_ID && process.env.X_OAUTH_CLIENT_SECRET); - secrets Meridian402-meridian-f071244/agent/src/venues/signer.ts :69
const key = process.env.AGENT_SIGNER_PRIVATE_KEY; - secrets (weak) Meridian402-meridian-f071244/agent/test/custodial-launch.test.ts :31
delete process.env.MERD_LAUNCH_WALLET_KEY; - secrets (weak) Meridian402-meridian-f071244/agent/test/launch-from-x.test.ts :9
delete process.env.MERD_LAUNCH_WALLET_KEY; // dormant - secrets (weak) Meridian402-meridian-f071244/agent/test/signer-assert.test.ts :18
delete process.env.AGENT_SIGNER_PRIVATE_KEY;
database 2
- db Meridian402-meridian-f071244/agent/src/backup.ts :16
import type pg from "pg"; - db Meridian402-meridian-f071244/agent/src/db.ts :5
import pg from "pg";
tool registrations 20
- meridian_list_chains Meridian402-meridian-f071244/agent/src/mcp/server.ts :96
- meridian_list_assets Meridian402-meridian-f071244/agent/src/mcp/server.ts :107
- meridian_market_data Meridian402-meridian-f071244/agent/src/mcp/server.ts :118
- meridian_suggest_route Meridian402-meridian-f071244/agent/src/mcp/server.ts :135
- meridian_index_yield Meridian402-meridian-f071244/agent/src/mcp/server.ts :151
- meridian_basis_feed Meridian402-meridian-f071244/agent/src/mcp/server.ts :162
- meridian_perp_feed Meridian402-meridian-f071244/agent/src/mcp/server.ts :173
- meridian_carry_quote Meridian402-meridian-f071244/agent/src/mcp/server.ts :184
- meridian_propose_lp_action Meridian402-meridian-f071244/agent/src/mcp/server.ts :201
- meridian_lp_score Meridian402-meridian-f071244/agent/src/mcp/server.ts :235
- meridian_agent_thoughts Meridian402-meridian-f071244/agent/src/mcp/server.ts :246
- meridian_bridge_quote Meridian402-meridian-f071244/agent/src/mcp/server.ts :257
show 8 more
- meridian_bridge_execute Meridian402-meridian-f071244/agent/src/mcp/server.ts :293
- meridian_index_execute Meridian402-meridian-f071244/agent/src/mcp/server.ts :338
- meridian_index_yield_execute Meridian402-meridian-f071244/agent/src/mcp/server.ts :355
- meridian_settle_x402 Meridian402-meridian-f071244/agent/src/mcp/server.ts :386
- meridian_market_universe Meridian402-meridian-f071244/agent/src/mcp/server.ts :404
- meridian_universe_status Meridian402-meridian-f071244/agent/src/mcp/server.ts :430
- meridian_submit_research Meridian402-meridian-f071244/agent/src/mcp/server.ts :455
- meridian_launch_token_pons Meridian402-meridian-f071244/agent/src/mcp/server.ts :483
declared dependencies 12
- @modelcontextprotocol/sdk@^1.18.0
- @openhermit/sdk@^0.7.0
- express@^4.21.2
- pg@^8.22.0
- twitter-api-v2@^1.29.0
- viem@^2.55.0
- zod@^3.24.1
- @types/express@^4.17.21
- @types/node@^20.14.10
- @types/pg@^8.20.0
- tsx@^4.16.2
- typescript@^5.5.4
perm:untrusted 7
- untrusted Meridian402-meridian-f071244/agent/_merd-autopilot.mts :32
return await (await fetch(API + p, { signal: AbortSignal.timeout(20_000) })).json(); - untrusted Meridian402-meridian-f071244/agent/_merd-daily-print.mts :52
const j = async (path: string) => (await fetch(`${API}${path}`, { signal: AbortSignal.timeout(20000) })).json(); - untrusted Meridian402-meridian-f071244/agent/_merd-daily.mts :48
return await (await fetch(API + p, { signal: AbortSignal.timeout(20_000) })).json(); - untrusted Meridian402-meridian-f071244/agent/_merd-milestone.mts :17
(await fetch(u, { headers: { "User-Agent": "Mozilla/5.0" }, signal: AbortSignal.timeout(30000) })).json(); - untrusted Meridian402-meridian-f071244/agent/_merd-payout.mts :95
const pending = (await (await fetch(`${API}/api/admin/pending-payouts`, { headers, signal: AbortSignal.timeout(20_000) })).json()) as { - untrusted Meridian402-meridian-f071244/agent/_merd-steward.mts :29
return await (await fetch(`${API}${path}`, { headers: auth ? headers : undefined, signal: AbortSignal.timeout(20_000) })).json(); - untrusted Meridian402-meridian-f071244/agent/_merd-telegram.mts :33
const j = async (path: string) => (await fetch(`${API}${path}`, { signal: AbortSignal.timeout(20000) })).json();