Atlas / MCP servers / frkak / Piyaz

PiyazBLOCK

mcp/frkak/piyaz

The agentic workspace where people and agents work together in the loop.

Verdict
BLOCK
Grade
F
Trust score
39 /100
Exposed tools
11 8r · 3w · 0d
Transport
streamable-http
License
AGPL-3.0
Stars
193
01

Overview

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

The agentic workspace where people and coding agents work on the same project.

Piyaz is an agentic workspace for project management, where people and coding agents work on the same project. It runs as an MCP server with a web app on top, and it holds your project as a graph, every task wired to what blocks it, with the decisions and the execution history attached. Piyaz keeps that work consistent to the engineering process a real codebase needs, from decomposing an idea to reviewing the code before it merges.

Using Piyaz, several agents can build at the same time; each in its own harness and with no API keys to wire up, while engineers are free to steer them as needed. One agent can implement a task while you refine another or add a new feature.

Drop in an idea or an existing codebase, and Piyaz breaks it into small, concrete tasks on that graph. When an agent picks up a task, it already has the plan, the standards, and the decisions behind the work. No agent start

Read from source at commit 28da032ae617OBSERVED · 2026-10-06
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 piyaz --env BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} --env BETTER_AUTH_URL=${BETTER_AUTH_URL} --env BROKER_DO_SECRET=${BROKER_DO_SECRET} --env DATABASE_AUTH_URL=${DATABASE_AUTH_URL} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "piyaz": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "BETTER_AUTH_SECRET": "${BETTER_AUTH_SECRET}",
        "BETTER_AUTH_URL": "${BETTER_AUTH_URL}",
        "BROKER_DO_SECRET": "${BROKER_DO_SECRET}",
        "DATABASE_AUTH_URL": "${DATABASE_AUTH_URL}"
      }
    }
  }
}
03

Exposed tools (11)

8 read · 3 write · 0 destructive.

ToolRiskDescription
PiyazreadA structure that supports organic growth. Track projects created by your coding agent.
compose-taskwriteRun one Piyaz task through a merged research+plan phase, implement, CI gate, review, and a bounded fix loop until the PR is ready
piyaz_activityread
piyaz_createwrite
piyaz_editwrite
piyaz_getread
piyaz_linkread
piyaz_mapread
piyaz_noteread
piyaz_searchread
piyaz_workspaceread
04

Trust audit

BLOCKgrade F · trust 39/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
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 (1 observation(s))
Network
declared (6 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
plugins/antigravity/skills/decompose/SKILL.md:264
Idempotency is server-side: `piyaz_create` skips items whose exact title already exists and returns them as `deduped` (still usable as edge endpoints). If the conversation compacts mid-batch, re-send
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
plugins/codex/skills/decompose/SKILL.md:264
Idempotency is server-side: `piyaz_create` skips items whose exact title already exists and returns them as `deduped` (still usable as edge endpoints). If the conversation compacts mid-batch, re-send
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
plugins/cursor/skills/decompose/SKILL.md:264
Idempotency is server-side: `piyaz_create` skips items whose exact title already exists and returns them as `deduped` (still usable as edge endpoints). If the conversation compacts mid-batch, re-send
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
cloudflare-env.d.ts:3085
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
cloudflare-env.d.ts:3376
exec(cmd: string[], options?: ContainerExecOptions): Promise<ExecProcess>;
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
cloudflare-env.d.ts:12156
exec(query: string): Promise<D1ExecResult>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
scripts/smoke-workers.ts:24
"postgres://piyaz:piyaz@localhost:5433/piyaz_test";
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
scripts/smoke-workers.ts:148
const unreachable = "postgres://smoke:[email protected]:1/smoke";
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/smoke-workers.ts:18
const BASE_URL = `http://127.0.0.1:${PORT}`;
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:86
TEST_DATABASE_URL: postgres://piyaz:piyaz@localhost:5432/piyaz_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/workers-smoke.yml:74
TEST_DATABASE_URL: postgres://piyaz:piyaz@localhost:5432/piyaz_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
tests/db/request-scope.workers.test.ts:25
DATABASE_URL: "postgres://app:[email protected]:5432/piyaz",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/auth/account-issuer.test.ts:23
password: "account-issuer-password-1",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/auth/turnstile-config.test.ts:187
password: "not-the-real-password",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/email/auth-email-flows.test.ts:186
const password = "reset-password-original";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/email/auth-email-flows.test.ts:277
const password = "change-email-password";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/email/auth-email-flows.test.ts:337
const password = "delete-confirm-password";
LOWInventory / provenance · inv.hidden_file · CWE-1104
.env.local.example
.env.local.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.git-blame-ignore-revs
.git-blame-ignore-revs
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.release-please-manifest.json
.release-please-manifest.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/generate-docs.ts:382
const fallback = resolve(import.meta.dir, "../../piyaz-docs/content/docs");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/config/social-metadata.test.ts:21
const OG_PATH = join(import.meta.dir, "../../public/og.png");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/scripts/db-stats.test.ts:13
} from "../../scripts/db-stats";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/scripts/generate-docs.test.ts:11
} from "../../scripts/generate-docs";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/scripts/generate-docs.test.ts:12
import { TOOLS } from "../../lib/mcp/schemas";

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-06 · audit v0.4.1 · source sha 28da032ae617full audit observations/trust-audit/mcp-server/frkak__piyaz.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-0628da032ae617BLOCKF39first audit
06

Questions

What is the Piyaz MCP server?

The agentic workspace where people and agents work together in the loop.

What tools does Piyaz expose?

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

Is Piyaz safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (39/100) and found 8 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 Piyaz need?

It reads BETTER_AUTH_SECRET, BETTER_AUTH_URL, BROKER_DO_SECRET, DATABASE_AUTH_URL, NEXT_PUBLIC_TURNSTILE_SITE_KEY, PIYAZ_VERIFIED_OAUTH_CLIENT_IDS, TURNSTILE_SECRET_KEY and TURNSTILE_SITE_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 Piyaz run?

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

How current is this page?

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

Advertisement