{"_id":"@logi-auth/mcp-approval","_rev":"3-8cab1b1450e9483006e2c49f85207b00","name":"@logi-auth/mcp-approval","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@logi-auth/mcp-approval","version":"0.1.0","keywords":["mcp","logi","agent","approval","human-in-the-loop","ai-safety","1pass","ciba"],"author":{"name":"Dcode","email":"support@1pass.dev"},"license":"MIT","_id":"@logi-auth/mcp-approval@0.1.0","maintainers":[{"name":"2seo","email":"iyu974895@gmail.com"}],"homepage":"https://github.com/seunghan91/logi#readme","bugs":{"url":"https://github.com/seunghan91/logi/issues"},"bin":{"logi-mcp-approval":"dist/index.js"},"dist":{"shasum":"6d0e68132e4fb0a3c9615f8d8f074844bf901931","tarball":"https://registry.npmjs.org/@logi-auth/mcp-approval/-/mcp-approval-0.1.0.tgz","fileCount":8,"integrity":"sha512-+OUqRQhykikGKTqaZdWnWKaI2GEMCTjBm1d3FfVrigmV3xP4yru7o4g5hkW/es0BkR5wnvxM7Mg4OZm5aF0ziQ==","signatures":[{"sig":"MEUCIQDSS/Gqq8c8+gzjcbs1IECCyi7pWXbaY0DgkRRBcJFRjwIgVlFOPYh40vTI7tOuUN+TZR5u1nDTjhHhqg3BoJwQSF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16888},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"4524c83d07ffdd3a40f1b890558905445f157ac9","scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"2seo","email":"iyu974895@gmail.com"},"repository":{"url":"git+https://github.com/seunghan91/logi.git","type":"git","directory":"mcp-approval"},"_npmVersion":"10.9.2","description":"MCP server for logi Agent Approval Gate — request human approval before high-risk actions","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-approval_0.1.0_1786102558585_0.05040720095621487","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@logi-auth/mcp-approval","version":"0.1.1","keywords":["mcp","logi","agent","approval","human-in-the-loop","ai-safety","1pass","ciba"],"author":{"name":"Dcode","email":"support@1pass.dev"},"license":"MIT","_id":"@logi-auth/mcp-approval@0.1.1","maintainers":[{"name":"2seo","email":"iyu974895@gmail.com"}],"homepage":"https://docs.1pass.dev/agent-approval/quickstart","bugs":{"url":"https://github.com/dcode-co/logi-plugins/issues"},"bin":{"logi-mcp-approval":"dist/index.js"},"dist":{"shasum":"6c6ec6eb37d5fe041515eb325d2a05e403c92c2f","tarball":"https://registry.npmjs.org/@logi-auth/mcp-approval/-/mcp-approval-0.1.1.tgz","fileCount":9,"integrity":"sha512-f4x9RhTuDBVQMA4Att0bx0jL0hW6/pbY1n2Rje8oHQtqijFpfJMMiEl2zJfbCdVwh44JLyRQAT4B3atoaIYcSQ==","signatures":[{"sig":"MEYCIQCV+HH1w56vEaHdKchqwAjrGrKVDH4AI+XgxlH2ubAbYAIhAPclKpknL1MJID76h1m2HF+WVMhmJrrH9CFups8zmJHF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18120},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"181213333c404b6c301ef20aeb83dc36ea0bb134","mcpName":"io.github.dcode-co/logi-approval","scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"2seo","email":"iyu974895@gmail.com"},"repository":{"url":"git+https://github.com/dcode-co/logi-plugins.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for logi Agent Approval Gate — request human approval before high-risk actions","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-approval_0.1.1_1786109692205_0.373438172920201","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@logi-auth/mcp-approval","mcpName":"dev.1pass/logi-approval","version":"0.1.2","description":"MCP server for logi Agent Approval Gate — request human approval before high-risk actions","type":"module","bin":{"logi-mcp-approval":"dist/index.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","prepublishOnly":"npm run build"},"engines":{"node":">=20"},"keywords":["mcp","logi","agent","approval","human-in-the-loop","ai-safety","1pass","ciba"],"author":{"name":"Dcode","email":"support@1pass.dev"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dcode-co/logi-plugins.git"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","zod":"^3.23.0"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.6.0"},"homepage":"https://docs.1pass.dev/agent-approval/quickstart","bugs":{"url":"https://github.com/dcode-co/logi-plugins/issues"},"_id":"@logi-auth/mcp-approval@0.1.2","gitHead":"34d16443228cb7eb2503afa872208409badf0a2f","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-z82aBWAquvxVpI/amo49Ij4557tpgtGQsHFY2lyUVtAKsJumSWjzwK17gU/FgFKfUzlmSFY5wjSFN2QryfytbQ==","shasum":"0ab589f35023b91d07d9d1d07aeeff52fdd3ed13","tarball":"https://registry.npmjs.org/@logi-auth/mcp-approval/-/mcp-approval-0.1.2.tgz","fileCount":9,"unpackedSize":18111,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGXTSArAj+DyeVGYhgWzRrgr7xujbWEFnvvd5QBZ2B9IAiAS8tn+MBxvtk1IODfa1EwBkWHZhXb2jhf+5aAptm9frA=="}]},"_npmUser":{"name":"2seo","email":"iyu974895@gmail.com"},"directories":{},"maintainers":[{"name":"2seo","email":"iyu974895@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-approval_0.1.2_1786113117547_0.009646138542808824"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-07T11:35:58.381Z","modified":"2026-08-07T14:31:57.919Z","0.1.0":"2026-08-07T11:35:58.725Z","0.1.1":"2026-08-07T13:34:52.362Z","0.1.2":"2026-08-07T14:31:57.685Z"},"bugs":{"url":"https://github.com/dcode-co/logi-plugins/issues"},"author":{"name":"Dcode","email":"support@1pass.dev"},"license":"MIT","homepage":"https://docs.1pass.dev/agent-approval/quickstart","keywords":["mcp","logi","agent","approval","human-in-the-loop","ai-safety","1pass","ciba"],"repository":{"type":"git","url":"git+https://github.com/dcode-co/logi-plugins.git"},"description":"MCP server for logi Agent Approval Gate — request human approval before high-risk actions","maintainers":[{"name":"2seo","email":"iyu974895@gmail.com"}],"readme":"# @logi-auth/mcp-approval\n\nMCP server for the logi Agent Approval Gate. Lets AI agents (Claude Code,\nCodex, Cursor, custom) request **human approval** on a user's phone before\nperforming high-risk actions — budget changes, production deploys, payments,\nmass communications, etc.\n\n> The user sees: \"Codex wants to change Meta budget from 500K → 50M KRW.\n> Confirm with Face ID and the 6-digit code.\" They tap [거절] or [승인],\n> the assertion is signed with the device passkey, and the agent receives\n> the verdict.\n\n## Setup\n\n1. **Register an agent** in the logi developer console (`start.1pass.dev`).\n   You'll get a Bearer token and (for `signed` mode) an Ed25519 private key\n   — both shown **once**. Save them in a secret manager.\n\n2. **Configure the MCP host** (Claude Code shown):\n\n   ```jsonc\n   {\n     \"mcpServers\": {\n       \"logi-approval\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"@logi-auth/mcp-approval\"],\n         \"env\": {\n           \"LOGI_AGENT_TOKEN\": \"logi_agt_...\",\n           \"LOGI_AGENT_PRIVATE_KEY\": \"-----BEGIN PRIVATE KEY-----\\n...\",\n           \"LOGI_AGENT_PUBLIC_ID\": \"agt_xxxxxx\",\n           \"LOGI_API_URL\": \"https://api.1pass.dev\"\n         }\n       }\n     }\n   }\n   ```\n\n3. **Tell the agent the rules** (in `AGENTS.md`, `CLAUDE.md`, or your\n   system prompt):\n\n   ```markdown\n   You have the logi__request_approval tool. ALWAYS call it BEFORE:\n   - Changing any ads budget by >20% or absolute >1,000,000 KRW\n   - Running migrations on production databases\n   - Sending more than 100 emails or SMS messages in one batch\n   - Spending >100,000 KRW on any external API\n   - Deploying to production\n\n   If the tool returns status != \"approved\", ABORT and tell the user.\n   NEVER proceed without explicit approval for these categories.\n   ```\n\n## Tools\n\n- **`logi__request_approval`** — send a prompt; blocks until the user decides\n  or times out. Returns `{ status, decided_at, ... }`.\n- **`logi__check_approval`** — poll a previously created prompt by id.\n\n## Auth modes\n\n- **`signed`** (recommended): Bearer + Ed25519 signature on every request.\n  Token theft alone cannot mint approvals — the private key is also required.\n- **`bearer_only`**: Bearer only. Convenient (one-liner curl) but a leaked\n  token is a full compromise. Disabled in production by default.\n\n## How replay / fatigue is prevented\n\n- Every request carries a nonce + timestamp + body digest in the signature;\n  the server rejects nonce reuse within a 5-minute window.\n- An in-flight prompt for the same `(user, agent, action_type)` is reused\n  instead of stacking up — defeats MFA bombing.\n- A rejected `action_type` triggers a 10-minute cool-down before the same\n  prompt can be re-issued.\n- The user's phone shows a 6-digit `number_match` the agent also displays;\n  mismatch → reject.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}