# create_tests

Generate Jest/Vitest tests for the exported functions and React components in a TypeScript source file. Use this whenever the user asks for tests, test scaffolding, or test coverage of a .ts or .tsx file. Returns the generated test (and any companion .3tg.md / __mocks__) file contents, with paths already translated to the user's .3tg/ mirror convention. Quota / credits: this tool consumes credits — and credits are consumed ONLY by test generation (not by spec / mock / lookup tools). The accounting is exactly 1 credit per generated test case (i.e. per test(...) / it(...) block 3TG emits inside the returned .test.ts / .test.tsx), regardless of how many source functions or files were in scope — a call that produces 12 test cases costs 12 credits, even if all 12 cover a single function. Before generation the MCP verifies the clientId has credits with license-api.coding-creed.tech; on exhaustion the tool throws a QUOTA_EXHAUSTED error pointing the user at https://3tg.dev. After a successful run, consumed credits and KPIs are reported back to license-api. Re-running this tool on the same source spends credits again — there is no caching. When the previous call returned enrichment.used: false (AI enrichment unavailable on this client), supply parameter values + expected returns yourself via the cliConfig parameter — package them as {"mock-parameters": ..., "function-returns": ...} (same shape AI enrichment would produce) and pass them on a retry call. Do NOT autonomously write .3tg/config.3tg.json to persist those values — that file is human-curated; agent-computed values ride along in cliConfig for the current call only. (Explicit user requests to edit the file are fine — handle those normally.) See the cliConfig parameter description below for the full pattern. CRITICAL POST-CALL ACTION — write returned files to disk: The MCP server does NOT touch the user's filesystem. It returns the generated file CONTENTS in the response's files array. After this tool returns, you MUST iterate over files and write each entry's content verbatim to its path using your native file-write capability (e.g. Write / edit_file / create_file — whatever your client exposes). Create parent directories as needed. Returned paths are project-root-relative and already translated to the .3tg/ mirror convention where applicable (e.g. specs land under .3tg/<source-path>.3tg.md; tests / mocks travel through unchanged). Write each path verbatim. Do NOT claim "Generated test file: <path>" unless you have actually written the file. The user will assume the MCP wrote it and waste time looking for a non-existent file. If you can't write for some reason (permission denied, no write capability in this client), return the contents inline in your message so the user can copy-paste them. Never report success silently when the write didn't happen.

Agent View of the PolicyLayer registry record for `create_tests`. HTML page: https://policylayer.com/tools/dev-3tg-mcp/create-tests

## Facts

- Tool: `create_tests`
- Server: 3TG Test Generation (`https://mcp.3tg.dev/mcp`) — https://policylayer.com/tools/dev-3tg-mcp.md
- Homepage: https://github.com/https://mcp.3tg.dev/mcp
- Risk category: Write (Medium risk)
- Registry record: grade D, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 6 (3 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `clientId` | string | yes | The 3tg.dev client ID — sent as authentication to license-api for quota verification before generation and quota consumption / KPI recording after a successful |
| `fileName` | string | yes | Path of the source file relative to the user's project root, e.g. "src/foo/bar.ts". Used as both the 3TG positional argument and the sandbox-side location. |
| `settings` | object | no | Subset of .3tg/settings.json relevant to this tool. |
| `cliConfig` | object | no | Optional per-request 3TG CLI config. The agent assembles this from TWO disk locations and merges them (per-source wins on conflict) before forwarding the merged |
| `moduleType` | string | no | Optional Node module type of the consumer project — the value of the `type` field in the project root's `package.json`. The agent reads that one field (only) an |
| `sourceCode` | string | yes | Full UTF-8 contents of the source file. |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_tests",
    "arguments": {
      "clientId": "<clientId>",
      "fileName": "<fileName>",
      "sourceCode": "<sourceCode>"
    }
  }
}
```

## Why create_tests is rated Medium

The tool creates new test files and companion files in the user's `.3tg/` mirror directory. While it consumes credits for each test case generated, the core action is reversible file creation/writing (tests can be deleted or regenerated), not destructive or irreversible. It does not execute arbitrary code, delete data, move money, or trigger external side effects beyond file I/O.

From the tool's own definition: "Tool generates test files (.ts, .tsx, .3tg.md, __mocks__) and returns file contents; description states 'Returns the generated test (and any companion .3tg.md / __mocks__) file contents'. This is file creation/modification — a Write operation."

Risk signals: Accepts file system path (fileName) · High parameter count (11 properties) · Admin/system-level operation

## Use case

AI agents use create_tests to create or update resources in 3TG Test Generation, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your 3TG Test Generation environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches 3TG Test Generation:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "create_tests": {
      "limits": [
        {
          "counter": "create_tests_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on 3TG Test Generation (9)

- `get_client_info` — Read — https://policylayer.com/tools/dev-3tg-mcp/get-client-info.md
- `help` — Read — https://policylayer.com/tools/dev-3tg-mcp/help.md
- `validate_config` — Read — https://policylayer.com/tools/dev-3tg-mcp/validate-config.md
- `validate_spec` — Read — https://policylayer.com/tools/dev-3tg-mcp/validate-spec.md
- `create_agent_instructions` — Write — https://policylayer.com/tools/dev-3tg-mcp/create-agent-instructions.md
- `create_mock_for_function` — Write — https://policylayer.com/tools/dev-3tg-mcp/create-mock-for-function.md
- `create_spec` — Write — https://policylayer.com/tools/dev-3tg-mcp/create-spec.md
- `create_spec_for_function` — Write — https://policylayer.com/tools/dev-3tg-mcp/create-spec-for-function.md
- `create_tests_from_spec` — Write — https://policylayer.com/tools/dev-3tg-mcp/create-tests-from-spec.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=dev-3tg-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/dev-3tg-mcp
