# `generate_fix_artifacts`

Generates a ready-to-paste schema.org JSON-LD template and an `llms.txt` template for a
fix, populated from the brand's stored site signals.

**Tier:** mutate · **Rate limit:** ~20/min

## Input

| Param | Type | Required | Notes |
|---|---|---|---|
| `fix_id` | string | ✅ | A fix id from [`list_fixes`](list-fixes.md) |

## Output

```json
{
  "fix_id": "…",
  "action": "…",
  "template": "Product",
  "jsonld": "{ … }",
  "product_jsonld": "{ … }",
  "llms_txt": "# Acme\n…"
}
```

| Field | Notes |
|---|---|
| `template` | One of `Product`, `Organization`, `Service`, `FAQPage` |
| `jsonld` | The generated JSON-LD |
| `product_jsonld` | **Deprecated** — an alias for `jsonld`, kept for older clients. Do not use in new code. |
| `llms_txt` | A generated `llms.txt` template |

## The schema type follows the fix

The template is chosen from the fix and the brand's
[archetype](../../concepts/brand-archetypes.md), so a services brand is handed
`Service` or `Organization` markup rather than catalog markup for products it does not
sell.

!!!info Templates are a starting point, not a paste-and-forget
The generated JSON-LD is populated from what the crawl observed. Verify every value
against reality before publishing it — structured data that misdescribes your business
is worse than none, because it is confidently wrong in a machine-readable format.

An authored `llms.txt` that you have actually reviewed is also the only kind that
[counts](../../audit/scoring.md#the-signal-checks).
!!!

Despite the mutate tier, this tool performs no model calls and writes nothing.

## Errors

`NOT_FOUND` when the fix id is unknown or its brand cannot be resolved.
