@kylewadegrove/cutline-mcp-cli 0.7.2 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,15 +38,15 @@ cutline-mcp init
38
38
  cutline-mcp setup
39
39
  ```
40
40
 
41
- Then ask your AI agent: **"Run an engineering audit on this codebase"**
41
+ Then ask your AI agent: **"Run a code audit on this codebase"**
42
42
 
43
43
  ## What It Does
44
44
 
45
45
  | Capability | Free | Premium |
46
46
  |---|---|---|
47
- | **Engineering Audit** — security, reliability, scalability scan | 3/month | Unlimited |
47
+ | **Code Audit** — security, reliability, scalability scan | 3/month | Unlimited |
48
48
  | **9 Compliance Frameworks** — SOC 2, PCI-DSS, HIPAA, GDPR, OWASP LLM, FedRAMP, GLBA, FERPA/COPPA | Auto-loaded | Auto-loaded |
49
- | **Code Audit** — deep scan + RGR remediation plan | — | Unlimited |
49
+ | **Engineering Audit** — deep product-linked scan + RGR remediation plan | — | Unlimited |
50
50
  | **Pre-Mortem Analysis** — risks, assumptions, competitive threats | — | Unlimited |
51
51
  | **Constraint Graph** — product-specific NFR routing | — | Full access |
52
52
  | **AI Personas** — stakeholder feedback on features | — | Full access |
@@ -58,7 +58,7 @@ Then ask your AI agent: **"Run an engineering audit on this codebase"**
58
58
 
59
59
  | Tool | Description |
60
60
  |---|---|
61
- | `engineering_audit` | Security, reliability, and scalability scan (3/month) |
61
+ | `code_audit` | Security, reliability, and scalability scan (3/month) |
62
62
  | `exploration_start` | Start a guided product idea exploration |
63
63
  | `exploration_chat` | Continue an exploration conversation |
64
64
  | `exploration_graduate` | Graduate top idea (teaser for free, full for premium) |
@@ -75,7 +75,7 @@ Then ask your AI agent: **"Run an engineering audit on this codebase"**
75
75
 
76
76
  **Graph Operations:** `graph_ingest_requirements`, `graph_get_boundaries`, `graph_bind_codebase`, `graph_bind_confirm`, `graph_view`, `graph_conflicts`, `graph_metrics`
77
77
 
78
- **Code & RGR:** `code_audit`, `rgr_plan`, `rgr_complete_phase`, `export_readiness_badge`
78
+ **Code & RGR:** `engineering_audit`, `rgr_plan`, `rgr_complete_phase`, `export_readiness_badge`
79
79
 
80
80
  **Wiki & Integrations:** `wiki_load`, `wiki_save`, `wiki_apply_edits`, `agent_chat`, `integrations_create_issues`
81
81
 
@@ -105,7 +105,7 @@ cutline-mcp init --project-root /path/to/project
105
105
  ```
106
106
 
107
107
  **Free tier writes:**
108
- - `.cursor/rules/rgr-workflow.mdc` — RGR cycle with `engineering_audit`
108
+ - `.cursor/rules/rgr-workflow.mdc` — RGR cycle with `code_audit`
109
109
  - `.cursor/rules/ambient-constraints.mdc` — Constraint checking guidance
110
110
  - `CLAUDE.local.md` — Same instructions for Claude Code
111
111
 
@@ -57,11 +57,11 @@ function cursorRgrRule(config, tier) {
57
57
  const productId = config?.product_id ?? '<from .cutline/config.json>';
58
58
  const productName = config?.product_name ?? 'your product';
59
59
  const verifyTool = tier === 'premium'
60
- ? `\`code_audit(product_id: "${productId}", project_root: "<workspace>")\``
61
- : `\`engineering_audit(project_root: "<workspace>")\``;
60
+ ? `\`engineering_audit(product_id: "${productId}", project_root: "<workspace>")\``
61
+ : `\`code_audit(project_root: "<workspace>")\``;
62
62
  const planStep = tier === 'premium'
63
63
  ? `1. **Plan**: \`rgr_plan(product_id: "${productId}", file_path: "<file>")\``
64
- : `1. **Plan**: \`engineering_audit(project_root: "<workspace>")\` to identify top active issue`;
64
+ : `1. **Plan**: \`code_audit(project_root: "<workspace>")\` to identify top active issue`;
65
65
  return `---
66
66
  description: RGR development workflow using Cutline MCP tools
67
67
  globs:
@@ -102,7 +102,7 @@ alwaysApply: true
102
102
 
103
103
  # Cutline Constraints
104
104
 
105
- Run \`engineering_audit(project_root)\` before major implementations to check constraint coverage.
105
+ Run \`code_audit(project_root)\` before major implementations to check constraint coverage.
106
106
 
107
107
  Severity levels:
108
108
  - **CRITICAL**: Must address before proceeding
@@ -150,8 +150,8 @@ function claudeLocalContent(config, tier) {
150
150
  const productId = config?.product_id ?? '<product_id>';
151
151
  const productName = config?.product_name ?? 'your product';
152
152
  const verifyCmd = tier === 'premium'
153
- ? `code_audit(product_id: "${productId}", project_root)`
154
- : `engineering_audit(project_root)`;
153
+ ? `engineering_audit(product_id: "${productId}", project_root)`
154
+ : `code_audit(project_root)`;
155
155
  return `# Cutline Integration
156
156
 
157
157
  This file is auto-generated by \`cutline-mcp init\`. Do not commit to version control.
@@ -161,7 +161,7 @@ Tier: ${tier}
161
161
 
162
162
  ${tier === 'premium' ? `Read \`.cutline.md\` before planning or executing code in this repository.\n` : ''}## RGR Workflow
163
163
 
164
- 1. **Plan**: ${tier === 'premium' ? `\`rgr_plan(product_id: "${productId}", file_path)\`` : `\`engineering_audit(project_root)\``} before writing code
164
+ 1. **Plan**: ${tier === 'premium' ? `\`rgr_plan(product_id: "${productId}", file_path)\`` : `\`code_audit(project_root)\``} before writing code
165
165
  2. **Implement**: Address constraints/findings from the plan
166
166
  3. **Verify**: \`${verifyCmd}\`
167
167
  4. **Complete**: ${tier === 'premium' ? `\`rgr_complete_phase(product_id: "${productId}", phase)\`` : 'Re-scan to confirm scores improved'}
@@ -84,10 +84,12 @@ function prompt(question) {
84
84
  });
85
85
  }
86
86
  function buildServerConfig() {
87
+ const voltaNpx = join(homedir(), '.volta', 'bin', 'npx');
88
+ const npxCommand = existsSync(voltaNpx) ? voltaNpx : 'npx';
87
89
  const config = {};
88
90
  for (const name of SERVER_NAMES) {
89
91
  config[`cutline-${name}`] = {
90
- command: 'npx',
92
+ command: npxCommand,
91
93
  args: ['-y', '@kylewadegrove/cutline-mcp-cli@latest', 'serve', name],
92
94
  };
93
95
  }
@@ -242,8 +244,8 @@ export async function setupCommand(options) {
242
244
  const items = [
243
245
  { cmd: 'Run a deep dive on my product idea', desc: 'Pre-mortem analysis — risks, assumptions, experiments' },
244
246
  { cmd: 'Plan this feature with constraints from my product', desc: 'RGR plan — constraint-aware implementation roadmap' },
245
- { cmd: 'Run an audit over my code', desc: 'Quick security scansafe for any codebase' },
246
- { cmd: 'Run a code audit for my product', desc: 'Full engineering audit + RGR remediation plan' },
247
+ { cmd: 'Run a code audit on this codebase', desc: 'Free code auditsecurity, reliability, and scalability (generic, not product-linked)' },
248
+ { cmd: 'Run an engineering audit for my product', desc: 'Premium deep audit — product-linked analysis + RGR remediation plan' },
247
249
  { cmd: 'Check constraints for src/api/upload.ts', desc: 'Get NFR boundaries for a specific file' },
248
250
  { cmd: 'Generate .cutline.md for my product', desc: 'Write the constraint routing engine' },
249
251
  { cmd: 'What does my persona think about X?', desc: 'AI persona feedback on features' },
@@ -256,14 +258,16 @@ export async function setupCommand(options) {
256
258
  }
257
259
  else {
258
260
  const items = [
259
- { cmd: 'Run an engineering audit on this codebase', desc: 'Security, reliability, and scalability scan (3/month free)' },
261
+ { cmd: 'Run a code audit on this codebase', desc: 'Free code audit — security, reliability, and scalability scan (3/month free)' },
262
+ { cmd: 'Explore a product idea', desc: 'Free 6-act discovery flow to identify pain points and opportunities' },
263
+ { cmd: 'Continue my exploration session', desc: 'Resume and refine an existing free exploration conversation' },
260
264
  ];
261
265
  for (const item of items) {
262
266
  console.log(` ${chalk.cyan('→')} ${chalk.white(`"${item.cmd}"`)}`);
263
267
  console.log(` ${chalk.dim(item.desc)}`);
264
268
  }
265
269
  console.log();
266
- console.log(chalk.dim(' Upgrade to Premium for deep dives, code audits, constraint graphs, and personas'));
270
+ console.log(chalk.dim(' Want product-linked constraints, full code audit + RGR plans, and pre-mortem deep dives?'));
267
271
  console.log(chalk.dim(' →'), chalk.cyan('cutline-mcp upgrade'), chalk.dim('or https://thecutline.ai/upgrade'));
268
272
  }
269
273
  console.log();
@@ -89,8 +89,8 @@ export async function upgradeCommand(options) {
89
89
  const items = [
90
90
  { cmd: 'Run a deep dive on my product idea', desc: 'Pre-mortem analysis — risks, assumptions, experiments' },
91
91
  { cmd: 'Plan this feature with constraints from my product', desc: 'RGR plan — constraint-aware implementation roadmap' },
92
- { cmd: 'Run an audit over my code', desc: 'Quick security scansafe for any codebase' },
93
- { cmd: 'Run a code audit for my product', desc: 'Full engineering audit + RGR remediation plan' },
92
+ { cmd: 'Run a code audit on this codebase', desc: 'Free code auditsecurity, reliability, and scalability (generic, not product-linked)' },
93
+ { cmd: 'Run an engineering audit for my product', desc: 'Premium deep audit — product-linked analysis + RGR remediation plan' },
94
94
  { cmd: 'Generate .cutline.md for my product', desc: 'Write the constraint routing engine' },
95
95
  ];
96
96
  for (const item of items) {
@@ -6824,7 +6824,7 @@ async function handleSecurityScan(genericGraphId, uid, args, deps) {
6824
6824
  try {
6825
6825
  scaFindings = await scanDependencies(scan.dependencies);
6826
6826
  } catch (e) {
6827
- console.warn("[engineering_audit] SCA scan failed:", e.message);
6827
+ console.warn("[code_audit] SCA scan failed:", e.message);
6828
6828
  }
6829
6829
  }
6830
6830
  const sensitiveFilePaths = new Set(scan.sensitive_data.fields?.map((f) => f.file).filter(Boolean) ?? []);
@@ -6970,7 +6970,7 @@ function formatAuditOutput(result, reportId) {
6970
6970
  const p = result.previousMetrics;
6971
6971
  const isRescan = !!p;
6972
6972
  const lines = [
6973
- `# Cutline Engineering Audit`,
6973
+ `# Cutline Code Audit`,
6974
6974
  ``,
6975
6975
  `**Ecosystem:** ${result.ecosystem.languages.join(", ")} / ${result.ecosystem.frameworks.join(", ") || "none detected"}`,
6976
6976
  `**Sensitive data locations:** ${result.sensitiveDataCount}`
@@ -6994,7 +6994,7 @@ function formatAuditOutput(result, reportId) {
6994
6994
  const criticalCount = result.gatedGapDetails.filter((g) => g.severity === "critical" || g.severity === "high").length;
6995
6995
  if (totalFindings > 0) {
6996
6996
  const topFinding = result.gatedGapDetails[0];
6997
- lines.push(``, `## #1 Finding \u2014 Fix This Now`, ``, `**[${topFinding.severity.toUpperCase()}] ${topFinding.title}**`, `*Category: ${topFinding.category}*`, ``, topFinding.description || "Address this finding to improve your readiness scores.", ``, `> Fix this issue, then re-run \`engineering_audit\` to see your scores improve.`);
6997
+ lines.push(``, `## #1 Finding \u2014 Fix This Now`, ``, `**[${topFinding.severity.toUpperCase()}] ${topFinding.title}**`, `*Category: ${topFinding.category}*`, ``, topFinding.description || "Address this finding to improve your readiness scores.", ``, `> Fix this issue, then re-run \`code_audit\` to see your scores improve.`);
6998
6998
  const remaining = result.gatedGapDetails.slice(1);
6999
6999
  if (remaining.length > 0) {
7000
7000
  lines.push(``, `## ${remaining.length} More Finding${remaining.length > 1 ? "s" : ""} Detected`);
@@ -7903,32 +7903,32 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
7903
7903
  },
7904
7904
  {
7905
7905
  name: "code_audit",
7906
- description: "\u{1F512} PREMIUM - Security-focused code audit. Scans the local workspace, reads security-relevant files, cross-references the product constraint graph, runs an LLM extraction for security gaps, builds an RGR remediation plan, and optionally queues a deep dive job. Returns the job URL, RGR plan, security gaps, binding health, and ecosystem fingerprint.",
7906
+ description: "\u{1F513} FREE - Code audit. Evaluates your codebase against a stack-aware constraint graph covering security, reliability, and scalability. No deep dive or product_id required \u2014 just point at your codebase. Shows aggregate readiness scores and top critical findings; detailed analysis and remediation require Premium. Requires a Cutline account (free). 3 scans/month.",
7907
7907
  inputSchema: {
7908
7908
  type: "object",
7909
7909
  properties: {
7910
- product_id: { type: "string", description: "Product ID from .cutline/config.json" },
7911
- project_root: { type: "string", description: "Absolute path to the workspace root" },
7912
- file_paths: { type: "array", items: { type: "string" }, description: "Specific files to audit (overrides automatic scan selection)" },
7913
- task_description: { type: "string", description: "What the user is building \u2014 provides context for the audit" },
7914
- audit_mode: { type: "string", enum: ["security", "full"], description: "Audit focus: 'security' (default) or 'full' for broader product analysis" },
7915
- max_file_bytes: { type: "number", description: "Max bytes to read per file (default: 50000)" },
7916
- auto_start: { type: "boolean", description: "Automatically queue a deep dive job (default: true)" }
7910
+ project_root: { type: "string", description: "Absolute path to the workspace root to scan" },
7911
+ task_description: { type: "string", description: "Optional context about what you're building" },
7912
+ max_file_bytes: { type: "number", description: "Max bytes to read per file (default: 50000)" }
7917
7913
  },
7918
- required: ["product_id", "project_root"]
7914
+ required: ["project_root"]
7919
7915
  }
7920
7916
  },
7921
7917
  {
7922
7918
  name: "engineering_audit",
7923
- description: "\u{1F513} FREE - Cutline Engineering Audit. Evaluates your codebase against a stack-aware constraint graph covering security, reliability, and scalability. No deep dive or product_id required \u2014 just point at your codebase. Shows aggregate readiness scores and top critical findings; detailed analysis and remediation require Pro. Scores serve as a prior if you later run a deep dive. Requires a Cutline account (free). 3 scans/month.",
7919
+ description: "\u{1F512} PREMIUM - Engineering audit for your product. Security-focused deep audit that scans local code, cross-references the product constraint graph, extracts security gaps, builds an RGR remediation plan, and optionally queues a deep dive job.",
7924
7920
  inputSchema: {
7925
7921
  type: "object",
7926
7922
  properties: {
7927
- project_root: { type: "string", description: "Absolute path to the workspace root to scan" },
7928
- task_description: { type: "string", description: "Optional context about what you're building" },
7929
- max_file_bytes: { type: "number", description: "Max bytes to read per file (default: 50000)" }
7923
+ product_id: { type: "string", description: "Product ID from .cutline/config.json" },
7924
+ project_root: { type: "string", description: "Absolute path to the workspace root" },
7925
+ file_paths: { type: "array", items: { type: "string" }, description: "Specific files to audit (overrides automatic scan selection)" },
7926
+ task_description: { type: "string", description: "What the user is building \u2014 provides context for the audit" },
7927
+ audit_mode: { type: "string", enum: ["security", "full"], description: "Audit focus: 'security' (default) or 'full' for broader product analysis" },
7928
+ max_file_bytes: { type: "number", description: "Max bytes to read per file (default: 50000)" },
7929
+ auto_start: { type: "boolean", description: "Automatically queue a deep dive job (default: true)" }
7930
7930
  },
7931
- required: ["project_root"]
7931
+ required: ["product_id", "project_root"]
7932
7932
  }
7933
7933
  }
7934
7934
  ]
@@ -8214,7 +8214,7 @@ Why AI: ${idea.whyAI}`
8214
8214
  const text = await cfGenerateTrialRun(prompt);
8215
8215
  return { content: [{ type: "text", text: JSON.stringify({ text }) }] };
8216
8216
  }
8217
- if (name2 === "engineering_audit") {
8217
+ if (name2 === "code_audit") {
8218
8218
  const scanArgs = args;
8219
8219
  if (!scanArgs.project_root) {
8220
8220
  throw new McpError(ErrorCode.InvalidParams, "project_root is required");
@@ -8250,9 +8250,9 @@ Why AI: ${idea.whyAI}`
8250
8250
  updateGraphMetadata: (pid, patch) => updateGraphMetadata(pid, patch)
8251
8251
  });
8252
8252
  try {
8253
- await recordScoreSnapshot(genericGraphId, result.metrics, "engineering_audit");
8253
+ await recordScoreSnapshot(genericGraphId, result.metrics, "code_audit");
8254
8254
  } catch (e) {
8255
- console.error("[engineering_audit] Score snapshot failed (non-fatal):", e);
8255
+ console.error("[code_audit] Score snapshot failed (non-fatal):", e);
8256
8256
  }
8257
8257
  let reportId;
8258
8258
  try {
@@ -8281,7 +8281,7 @@ Why AI: ${idea.whyAI}`
8281
8281
  });
8282
8282
  reportId = saved.id;
8283
8283
  } catch (e) {
8284
- console.error("[engineering_audit] Report persistence failed (non-fatal):", e);
8284
+ console.error("[code_audit] Report persistence failed (non-fatal):", e);
8285
8285
  }
8286
8286
  return {
8287
8287
  content: [{ type: "text", text: formatAuditOutput(result, reportId) }]
@@ -10026,7 +10026,7 @@ ${JSON.stringify(metrics, null, 2)}` }
10026
10026
  ``,
10027
10027
  `1. **Plan**: \`rgr_plan(product_id: "${product_id}", file_path: "<file>")\``,
10028
10028
  `2. **Implement**: Address constraints from the plan`,
10029
- `3. **Verify**: \`code_audit(product_id: "${product_id}", project_root: "${genProjectRoot}")\``,
10029
+ `3. **Verify**: \`engineering_audit(product_id: "${product_id}", project_root: "${genProjectRoot}")\``,
10030
10030
  `4. **Complete**: \`rgr_complete_phase(product_id: "${product_id}", phase: "<phase>")\``,
10031
10031
  ``,
10032
10032
  `## When to use RGR`,
@@ -10052,7 +10052,7 @@ ${JSON.stringify(metrics, null, 2)}` }
10052
10052
  ``,
10053
10053
  `1. **Plan**: Call \`rgr_plan(product_id: "${product_id}", file_path)\` before writing code`,
10054
10054
  `2. **Implement**: Address constraints from the plan`,
10055
- `3. **Verify**: Run \`code_audit(product_id: "${product_id}", project_root)\``,
10055
+ `3. **Verify**: Run \`engineering_audit(product_id: "${product_id}", project_root)\``,
10056
10056
  `4. **Complete**: Call \`rgr_complete_phase(product_id: "${product_id}", phase)\``,
10057
10057
  ``,
10058
10058
  `Use RGR for: new features, security/auth, billing, API endpoints, DB schema, infra.`,
@@ -10212,9 +10212,9 @@ Meta: ${JSON.stringify({
10212
10212
  };
10213
10213
  }
10214
10214
  // ─────────────────────────────────────────────────────────────────
10215
- // CODE_AUDIT
10215
+ // ENGINEERING_AUDIT (premium)
10216
10216
  // ─────────────────────────────────────────────────────────────────
10217
- case "code_audit": {
10217
+ case "engineering_audit": {
10218
10218
  const auditArgs = args;
10219
10219
  if (!auditArgs.product_id) {
10220
10220
  throw new McpError(ErrorCode.InvalidParams, "product_id is required");
@@ -10260,7 +10260,7 @@ Meta: ${JSON.stringify({
10260
10260
  const { id: newJobId } = await createPremortem({
10261
10261
  status: "queued",
10262
10262
  payload: { ...runInput, productId: void 0 },
10263
- source: "code_audit",
10263
+ source: "engineering_audit",
10264
10264
  mode: "product",
10265
10265
  codeContext: payload.codeContext || null
10266
10266
  });
@@ -10270,7 +10270,7 @@ Meta: ${JSON.stringify({
10270
10270
  }
10271
10271
  });
10272
10272
  const sections = [
10273
- `## Code Audit Complete
10273
+ `## Engineering Audit Complete
10274
10274
  `,
10275
10275
  result.url ? `**Deep Dive Queued** \u2192 [View Results](${result.url})
10276
10276
  ` : `*Deep dive not started (auto_start=false)*
@@ -10370,10 +10370,10 @@ These constraints will now fire via \`constraints_auto\` when you edit matched f
10370
10370
  const nextPhase = rgrPhases[0];
10371
10371
  sections.push(`Active issues found. Start the RGR cycle:`);
10372
10372
  sections.push(`1. **Fix** the top findings above`);
10373
- sections.push(`2. **Verify** by re-running \`code_audit\``);
10373
+ sections.push(`2. **Verify** by re-running \`engineering_audit\``);
10374
10374
  sections.push(`3. **Complete** the phase: \`rgr_complete_phase(product_id, phase: "${nextPhase.label}")\``);
10375
10375
  } else if (failCount > 0) {
10376
- sections.push(`Active issues found. Fix them, then re-run \`code_audit\` to verify.`);
10376
+ sections.push(`Active issues found. Fix them, then re-run \`engineering_audit\` to verify.`);
10377
10377
  sections.push(`When clean, call \`rgr_complete_phase(product_id, phase: "security")\` to update scores.`);
10378
10378
  } else {
10379
10379
  sections.push(`No active issues. Call \`rgr_complete_phase(product_id, phase: "security")\` to record progress.`);
@@ -10389,7 +10389,7 @@ These constraints will now fire via \`constraints_auto\` when you edit matched f
10389
10389
  await updateGraphMetadata(auditArgs.product_id, {
10390
10390
  metrics: auditMetrics
10391
10391
  });
10392
- await recordScoreSnapshot(auditArgs.product_id, auditMetrics, "code_audit");
10392
+ await recordScoreSnapshot(auditArgs.product_id, auditMetrics, "engineering_audit");
10393
10393
  await updatePremortem(auditArgs.product_id, { metrics: auditMetrics });
10394
10394
  } catch (e) {
10395
10395
  console.error("Metrics recompute after code audit failed (non-fatal):", e);
@@ -4,7 +4,7 @@
4
4
  "display_name": "Cutline — Engineering Guardrails",
5
5
  "version": "0.5.0",
6
6
  "description": "Security, reliability, and scalability constraints for your coding agent. Free code audits with 9 compliance frameworks built in.",
7
- "long_description": "Cutline is a guardrail middleware for AI coding agents. It extracts non-functional requirements (security, scalability, reliability) from your ideas and injects them as structured constraints into your agent's context. Includes free engineering audits (3/month), SOC 2 / PCI-DSS / HIPAA / GDPR / OWASP LLM Top 10 compliance frameworks, pre-mortem risk analysis, and a Red-Green-Refactor workflow for systematic remediation.",
7
+ "long_description": "Cutline is a guardrail middleware for AI coding agents. It extracts non-functional requirements (security, scalability, reliability) from your ideas and injects them as structured constraints into your agent's context. Includes free code audits (3/month), SOC 2 / PCI-DSS / HIPAA / GDPR / OWASP LLM Top 10 compliance frameworks, pre-mortem risk analysis, and a Red-Green-Refactor workflow for systematic remediation.",
8
8
  "author": {
9
9
  "name": "Cutline",
10
10
  "url": "https://thecutline.ai"
@@ -35,11 +35,11 @@
35
35
  "tools": [
36
36
  {
37
37
  "name": "engineering_audit",
38
- "description": "Free security, reliability, and scalability scan of your codebase (3/month)"
38
+ "description": "Premium deep, product-linked engineering audit with RGR remediation planning"
39
39
  },
40
40
  {
41
41
  "name": "code_audit",
42
- "description": "Premium deep code audit with RGR remediation plan"
42
+ "description": "Free security, reliability, and scalability code audit of your codebase (3/month)"
43
43
  },
44
44
  {
45
45
  "name": "constraints_auto",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kylewadegrove/cutline-mcp-cli",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "description": "CLI and MCP servers for Cutline — authenticate, then run constraint-aware MCP servers in Cursor or any MCP client.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/server.json CHANGED
@@ -35,7 +35,7 @@
35
35
  "categories": ["security", "infrastructure", "developer-tools"],
36
36
  "compliance_frameworks": ["SOC 2", "PCI-DSS", "HIPAA", "GDPR/CCPA", "OWASP LLM Top 10", "FedRAMP", "GLBA", "FERPA/COPPA"],
37
37
  "free_tier": true,
38
- "free_tools": ["engineering_audit", "exploration_start", "exploration_chat", "exploration_graduate", "llm_status", "perf_status"],
38
+ "free_tools": ["code_audit", "exploration_start", "exploration_chat", "exploration_graduate", "llm_status", "perf_status"],
39
39
  "tool_count": 54
40
40
  }
41
41
  }