# create_project

> Create a project with a caller-defined profile.

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

> Create a project with a caller-defined profile. No other setup or workflow is required.

| 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` | yes | `string` | Display name, e.g. 'Acme CRM'. |
| `slug` | yes | `string` | Short id for the project: lowercase letters, digits and hyphens, e.g. 'acme-crm'. |
| `profile` | no | `object` | Free-form project card you define, e.g. \{"website": "https://acme.com", "audience": "indie founders"\}. Default \{\}. |

## Example call

```json
{
  "name": "Acme CRM",
  "slug": "acme-crm",
  "profile": {
    "website": "https://acme.com",
    "audience": "indie founders"
  }
}
```

REST: `POST https://service.opennomos.com/v1/tools/create_project` with that JSON as the body. MCP: `tools/call` with `name: "create_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": "indie founders"
    },
    "memory_count": 0,
    "last_memory_at": null
  }
}
```

## Notes

- `profile` is a free-form JSON card you define. Nothing in it is required, and nothing is inferred.
- If the profile has a `website`, `url` or `domain` host, that host is allowed as a short link target (see [Attribution](https://mcp-docs.opennomos.com/docs/growth-loop/attribution.md)).

## 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).
