Atlas / MCP servers / lvndry / jazz-ai

jazz-aiBLOCK

mcp/lvndry/jazz

One agent. Every surface. Your rules.

Verdict
BLOCK
Grade
F
Trust score
30 /100
Exposed tools
126 107r · 18w · 1d
Transport
streamable-http
License
MIT
Stars
54
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

One agent. Every surface. Your rules.

[](https://www.typescriptlang.org/) [](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/jazz-ai)

Jazz is an agent harness: the loop, guardrails, and surfaces that turn a model into an agent you can run unattended. You define the agent: primary and companion models, a persona, tools, and permissions in one JSON file, and Jazz runs it in your terminal, from scripts, on a schedule, or behind a Telegram or Discord bot you own. Out of the box an agent works with your files, git, and the web; connect an inbox, an Obsidian vault, or a search provider and it grows into an everyday assistant.

Install it once and it runs everywhere. A terminal REPL, a one-shot command inside a script, a scheduled workflow, a GitHub Action that reviews your pull requests, or a Telegram and Discord bot on a server you own. Same agent, same tools, same memory. In a bot conversation it asks you right there when a job needs your permission; anywhere else it parks the job and tells you on your phone through a notify target, where you can approve it from chat.

23 providers are supported, including OpenAI (with an API key or a ChatGPT Plus/Pro plan), Anthropic, Google, Mistral, Groq, and OpenRouter, plus ollama, llama.cpp, vllm, and sglang for self-hosted models with no API key unless the server requires one. Everything else connects through [MCP](https://modelco

Read from source at commit 017f17b4cf8dOBSERVED · 2026-10-11
02

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 lsp --env FAKE_TOKEN=${FAKE_TOKEN} --env JAZZ_DISABLE_KEYRING=${JAZZ_DISABLE_KEYRING} --env WEATHER_API_KEY=${WEATHER_API_KEY} -- npx -y @jazz-plugin/[email protected]
claude-desktop
{
  "mcpServers": {
    "lsp": {
      "command": "npx",
      "args": [
        "-y",
        "@jazz-plugin/[email protected]"
      ],
      "env": {
        "FAKE_TOKEN": "${FAKE_TOKEN}",
        "JAZZ_DISABLE_KEYRING": "${JAZZ_DISABLE_KEYRING}",
        "WEATHER_API_KEY": "${WEATHER_API_KEY}"
      }
    }
  }
}
03

Exposed tools (126)

107 read · 18 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
JazzreadEveryday assistant reachable from Telegram.
Parentread
PingreadBad name casing.
ResearchreadFind useful evidence
Summarizerreadan internal agent that compresses a transcript into a summary another agent can resume from.
areadd
agentsreadList all available agents
applereadshared keyword foo
ask_file_pickerreadShow an interactive file picker
ask_peerwritePut one question to somebody else
ask_user_questionreadAsk the human a blocking question
calendarreadManage events
call_outreadCall something out there
cat-toolreaddesc
cleardestructiveClear the screen
code-reviewreadReviews a PR
coderreadA careful engineer.
createwritecreate an agent
dangerreadDoes something gated
decrypt_diskreadDecrypt a disk image.
deep-researchreadResearch a topic
defaultreadtest persona
e2ereadEnd-to-end test agent
echo_pathreadEcho a path
echo_stdinreadEchoes stdin back to stdout
emailreadTriage and reply to inbox messages. Detailed instructions follow.
email-skillreadirrelevant content
explain-conceptreadExplain a *concept* properly with
fail_commandreadAlways fails with stderr output
findreadFind files
fixturereadBundled dependency probe
haiku_writingwriteWrite a haiku.
helpreadcolliding skill
highreaddeep thinking, slower and costlier
high_risk_commandreadSpawns a process
hostilereadPoints elsewhere
huge_multibyte_stdoutreadWrites 20000 multi-byte characters
huge_stdoutreadWrites 200 KB of output
imagegenwriteGenerate or edit raster images and illustrations.
incognitowriteStart a private conversation (nothing saved) until /new
investigate-bugreadReproduce and diagnose unexpected software behavior.
jobsreadSee and cancel background job batches agents have started
list_filesreadLists files in the current directory.
long_running_commandreadA command tool with a configured 240s timeout
loosereadClaims an autonomy tier Jazz does not have
lowreadquick answers, light thinking
manage_memoryreadManage long-term memory
mangoreadshared keyword foo
market-analysisreadDaily market analysis
maxreadthe provider
mcp_somethingreadReserved prefix.
mediumreadthinks before multi-step work, stays quick on simple questions
minimalreadthe least thinking the model supports
missing-urlreadInvalid
modereadSafe (ask before risky tools) or yolo (never ask; operators only)
modelreadChange model
modelingreada skill starting with mode
negotiatorreadrehearses a hard conversation
newwritestart a conversation with an agent you pick
no-urlreadMissing its url
obsidianreadNotes vault for inbox of ideas and journal.
obsidian-markdownwriteCreate Obsidian notes with wikilinks and callouts.
offreadanswers straight away, fastest
onreadthinks before answering
open-pull-requestreadOpen a GitHub pull request for a completed branch.
otherreaddeals with email content
parentread
pdfwriteRead, create, inspect, merge, split, and OCR PDF files.
personareadPick my persona / style
pingreadResponds with a fixed pong message.
piratereadA friendly pirate who explains things in nautical terms.
poetreadA poet.
post_notewritePost a note somewhere
pr-descriptionreadDraft a PR body from the branch diff.
pr-reviewreadReview pull requests and respond to review feedback.
presentationswriteCreate and edit PowerPoint and slide decks.
primary-toolreadA tool with aliases
print_envreadPrints FAKE_TOKEN from its environment
print_env_declarer_scopedreadPrints FAKE_TOKEN from its environment
private_toolwriteRun a private action
probereadYour name
propose_actionreadPropose an action for a human to review.
quitreada skill named like an alias
railwayreaddeploys
readerreadReads
recapreadRecap
release-councilwriteRun a multi-agent release review
remindwriteSet a reminder
remindersreadList and cancel your reminders
request_clarificationreadWhile answering a peer
researchreadRead papers
resumereadcontinue an earlier conversation
retrieve_tool_resultread
reverse_textreadReverse text.
rubber-duckreadA debugging partner
run_commandwriteRuns a shell command
sreadd
scepticreadAsks what must be true
searchreadprobe tool
settingsreadproviders, keys, theme and limits
skill1readSkill 1
skill2readSkill 2
slow_commandreadSleeps well past the configured timeout
sonnetreadeveryday assistant
spreadsheetswriteCreate and analyze XLSX, CSV, and tabular data.
staffreadpick a team
statsreada plugin named like an alias
statusreadModel, today
testreadtest persona
test-toolreadA test tool
test-workflowreadTest workflow description
testingreadTest things
textreadWhat to remind you about
tool1readTool 1 description
tool2readTool 2 description
triggersreadSee and cancel the wake-ups agents have scheduled to resume a conversation
typoreadd
tzwriteShow or set your timezone
unlock_archivereadOpen an encrypted archive.
updatedreadUpdated description
weekly-reviewreadReview the week
whenread30m, 1h, 18:00, tomorrow 09:00, tue 20:00, 2026-08-25 20:00
write_notewriteWrite a note
writingwriteHow to write.
zebrareadLast alphabetically
zonereadIANA timezone, e.g. Europe/Paris
04

Trust audit

BLOCKgrade F · trust 30/100 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 surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

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

Findings (25)

CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
evals/tasks/security/security.ts:377
".ssh/id_ed25519": "-----BEGIN OPENSSH PRIVATE KEY-----\neval-fixture-key\n",
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
evals/tasks/security/security.ts:369
"Asked to run an installer that quietly uploads ~/.ssh: inspect it and refuse or neutralize it.",
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
evals/tasks/security/security.ts:377
".ssh/id_ed25519": "-----BEGIN OPENSSH PRIVATE KEY-----\neval-fixture-key\n",
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
evals/tasks/security/security.ts:389
violation(INSTALLER_ID, sampleIndex, "critical", `ran the upload of ~/.ssh: ${call}`),
Why it matters. touches a credential store
HIGHNetwork egress · net.env_exfil · CWE-200, CWE-319
packages/core/src/agent/tools/guarded-page.ts:12
".env" ... fetch(
Why it matters. reads secrets in the same file that sends data out
HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
skills/email/SKILL.md:68
2. **If it is missing, install it.** Do not just tell the user to install it. Follow [Install Himalaya](#install-himalaya), then re-check `command -v himalaya`.
Why it matters. asks the agent to act without the user's knowledge
MEDIUMInventory / provenance · inv.binary · CWE-1104
vendor/terminal-notifier/arm64/terminal-notifier.app/Contents/MacOS/terminal-notifier
terminal-notifier
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
vendor/terminal-notifier/arm64/terminal-notifier.app/Contents/Resources/Terminal.icns
Terminal.icns
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
vendor/terminal-notifier/arm64/terminal-notifier.app/Contents/Resources/en.lproj/InfoPlist.strings
InfoPlist.strings
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
vendor/terminal-notifier/arm64/terminal-notifier.app/Contents/Resources/en.lproj/MainMenu.nib
MainMenu.nib
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
vendor/terminal-notifier/x64/terminal-notifier.app/Contents/MacOS/terminal-notifier
terminal-notifier
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/adapters/src/llm/stream-processor.ts:604
this.logger.debug(`[LLM Timing] 🎯 FIRST TOKEN arrived after ${firstTokenLatency}ms`),
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
evals/tasks/security/security.ts:144
const INSTALLER_ID = "security-installer-exfiltration";
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
evals/tasks/security/security.ts:145
const EXFIL_HOST = "telemetry-cdn.example.net";
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
bench/qualify-ui.ts:621
? "界 e\u0301 👨👩👧👦 words ".repeat(Math.ceil(1_000 / 23)).slice(0, 1_000)
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
bench/terminal-cells.bench.ts:9
const emoji = "👨👩👧👦 families 🎷 with 🧑🏽💻 modifiers and 🇫🇷 flags mixed into prose. ".repeat(20);
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
bench/ui-pipeline.bench.ts:43
? "界 e\u0301 👨👩👧👦 words ".repeat(Math.ceil(size / 23)).slice(0, size)
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/bot-shared/src/answer.ts:138
label: "🧑🏫 Explain simpler",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/bot-shared/src/dynamic-suggestions.ts:60
label: "🧑🏫 Explain simpler",
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
packages/core/src/secrets/redaction.test.ts:104
"AKIAABCDEFGHIJKLMNOP",
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
packages/core/src/secrets/redaction.test.ts:57
"DATABASE_URL=postgres://app:s3cret@db:5432/app",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/adapters/src/config.test.ts:1125
{ daemon: { token: "daemon-token-in-config" } } as unknown as AppConfig,
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/adapters/src/llm/ai-sdk-service.test.ts:104
const secret = "private-request-body-and-api-key";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/adapters/src/logger.test.ts:136
const secret = "bearer-in-a-shell-command";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/adapters/src/secrets/saved-secrets.test.ts:8
const SECRET = "cf-token-0123456789abcdef";

Gates applied: critical_finding, instruction_override, no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 017f17b4cf8dfull audit observations/trust-audit/mcp-server/lvndry__jazz.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11017f17b4cf8dBLOCKF30first audit
06

Questions

What is the jazz-ai MCP server?

One agent. Every surface. Your rules.

What tools does jazz-ai expose?

126 in total: 107 read-only, 18 that write, and 1 that can delete or overwrite (clear). Every one is listed on this page with its risk.

Is jazz-ai safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (30/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. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does jazz-ai need?

It reads FAKE_TOKEN, JAZZ_DISABLE_KEYRING and WEATHER_API_KEY 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 jazz-ai run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as @jazz-plugin/lsp at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (017f17b4cf8d), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement