# update_project

> Update project name and shallow-merge caller-defined profile fields.

URL: https://mcp-docs.opennomos.com/docs/tools/projects/update_project

> Update project name and shallow-merge caller-defined profile fields. A null profile value removes that field.

| Field | Value |
| --- | --- |
| Pack | Core (`core`) |
| Estimated cost per call | $0 |
| Monthly pack limit | none |
| Project | resolved: explicit `project` → header → credential default → workspace default |

## Parameters

| Parameter | Required | Type | Description |
| --- | --- | --- | --- |
| `name` | no | `string` | New display name. Omit to keep it. |
| `profile` | no | `object` | Fields to merge into the profile, e.g. \{"audience": "agencies"\}. A null value removes that field. |
| `project` | no | `string` | Project slug or id. Omit to use the credential or workspace default. |

## Example call

```json
{
  "project": "acme-crm",
  "profile": {
    "audience": "agencies",
    "old_field": null
  }
}
```

REST: `POST https://service.opennomos.com/v1/tools/update_project` with that JSON as the body. MCP: `tools/call` with `name: "update_project"` and that JSON as `arguments`.

## Example result

Values are illustrative; the shape comes from the service code.

```json
{
  "project": {
    "id": "prj_k3Vd9aQx2",
    "slug": "acme-crm",
    "name": "Acme CRM",
    "profile": {
      "website": "https://acme.com",
      "audience": "agencies"
    },
    "memory_count": 12,
    "last_memory_at": "2026-10-15T10:02:11.000Z"
  }
}
```

## Notes

- Profile updates merge at the top level: supplied keys replace, `null` removes a key, omitted keys stay. Nested objects are replaced whole, not deep-merged.

## Errors

Rejected calls (bad input, unknown ids, rate limits) return `message` and `code`; over MCP the result has `isError: true`. See [Errors](https://mcp-docs.opennomos.com/docs/reference/errors.md).
