Log aggregation + browser script + headless page scanner + performance monitoring for AI agents
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed v0.5.0 · analyzer v33 · 1d ago
danger signals3
- dynamic code execution new Function() package/dist/mcp/index.js :2929
const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode); - suspicious endpoint 169.254.169.254 (cloud metadata) package/dist/index-cymcm9ev.js :172
Endpoint2["IPv4"] = "http://169.254.169.254"; - credential in logs credential in log package/dist/cli/index.js :4696
console.log(`api_key_present: ${report.api_key_present}`);
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 130
filesystem 10
- fs package/dist/cli/index.js :2118
import { readFileSync } from "fs"; - fs package/dist/index-3st0407m.js :70
import { promises as fsPromises } from "fs"; - fs package/dist/index-e7kh6bb3.js :1333
} from "fs"; - fs package/dist/index-fjy51g0k.js :5
import { closeSync, fstatSync, openSync, readFileSync } from "fs"; - fs package/dist/index-kw4wqnd9.js :3
import { existsSync, readFileSync } from "fs"; - fs package/dist/index-mghtz8fa.js :21
import { promises as fs } from "fs"; - fs package/dist/index-ng7kxv1p.js :21
import fs from "fs/promises"; - fs package/dist/index-q4bcqk91.js :739
import { readFileSync } from "fs"; - fs package/dist/index-szck1fdc.js :15
import { readFileSync } from "fs"; - fs package/dist/mcp/index.js :6972
import { existsSync, mkdirSync } from "fs";
shell / exec 5
- shell package/dist/cli/index.js :2134
import { spawn } from "child_process"; - shell package/dist/index-e7kh6bb3.js :16843
import { execFileSync } from "child_process"; - shell package/dist/index-fjy51g0k.js :4
import { spawnSync } from "child_process"; - shell package/dist/index-kakz891q.js :17
import { exec } from "child_process"; - shell package/dist/mcp/index.js :10993
exec(sql) {
network 8
- net package/dist/api.js :143
const baseFetch = clientOptions.fetch ?? ((input, init) => fetch(input, init)); - net package/dist/cli/index.js :2132
import { isIP } from "net"; - net package/dist/http-zhjw9wpf.js :123
import { createServer } from "http"; - net package/dist/index-cymcm9ev.js :32
import node_http from "http"; - net package/dist/index-e7kh6bb3.js :17079
await fetch(rule.webhook_url, { - net package/dist/index-fjy51g0k.js :3
import { isIP } from "net"; - net package/dist/index.js :44
const res = await fetch(`${this.url}/api/logs`, { - net package/dist/server/index.js :973
return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);
secrets 3
- secrets package/dist/cli/index.js :4820
const token = opts.token || process.env.HASNA_LOGS_API_TOKEN || process.env.LOGS_API_TOKEN; - secrets package/dist/index-e7kh6bb3.js :21015
const secret = process.env.HASNA_LOGS_SECRET_KEY?.trim() || process.env.LOGS_SECRET_KEY?.trim(); - secrets package/dist/server/index.js :1885
const token = process.env.HASNA_LOGS_API_TOKEN?.trim() || process.env.LOGS_API_TOKEN?.trim();
database 1
- db package/dist/index-q4bcqk91.js :923
import pg from "pg";
install hooks 2
- postinstall package/package.json :47
install -d -m 700 "$HOME/.hasna/logs" 2>/dev/null || true - prepack package/package.json :48
bun run build
declared dependencies 18
- @modelcontextprotocol/sdk@^1.29.0
- @aws-sdk/client-s3@^3.1079.0
- @hasna/events@^0.1.16
- commander@^14.0.0
- fast-xml-parser@^5.8.0
- hono@4.13.3
- node-cron@^3.0.3
- pg@^8.20.0
- playwright@^1.52.0
- zod@3.25.76
- @biomejs/biome@^1.9.4
- @hasna/contracts@1.0.2
show 6 more
- @types/bun@1.3.14
- @types/node-cron@^3.0.11
- @types/pg@^8.20.0
- pino@10.3.1
- typescript@^5.9.3
- winston@3.19.0