# Create Project — Float

> Create a new project. See the documentation

- Key: `float-create-project`
- Type: Action (Write)
- Version: 0.0.2
- App: Float (`float`) — https://pipedream.com/apps/float.md
- This page (HTML): https://pipedream.com/apps/float/actions/create-project
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/float/actions/create-project/create-project.mjs

## Description

Create a new project. [See the documentation](https://developer.float.com/tutorial_managing_your_projects.html)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `name` | `string` | Yes | Name of the project |
| `projectCode` | `string` | No | An optional third-party identifier unique across all projects enforced using case-insensitive comparison |
| `clientId` | `string` | No | Client to associate with the project Options are loaded from the connected account. |
| `color` | `string` | No | Project's color in hexadecimal (e.g. FF2D00) |
| `notes` | `string` | No | Notes for this project |
| `tags` | `string[]` | No | The tag to use Options are loaded from the connected account. |
| `budgetType` | `integer` | No | Is there a project budget? |
| `budgetTotal` | `integer` | No | The budget amount for Total hours or Total fee project budgets. Displays as null for Hourly fee, Phase and Task budgets, also see Budget Priority |
| `budgetPriority` | `string` | No | Defines which level the budget will be determined from. For non-project levels, the total budget can be calculated from the sum of budgets in each Phase or Task |
| `defaultHourlyRate` | `string` | No | The default hourly rate for fee-based budgets, the request also accepts a decimal number |
| `nonBillable` | `boolean` | No | Is this project billable? |
| `status` | `string` | No | The status of the project. If both Status and Stage ID are provided, Stage ID takes precedence. If only Status is provided, the first available stage for that status will be automatically selected |
| `stageId` | `integer` | No | The ID of the project stage for this project. This field takes precedence over Status when both are provided. If omitted, the first available stage related to the project's Status will be used Options are loaded from the connected account. |
| `lockedTaskList` | `boolean` | No | Are members locked from adding project tasks (Only Project Managers can add to this list)? |
| `active` | `boolean` | No | Is this project active or archived? |
| `projectManagerId` | `string` | No | The account to use Options are loaded from the connected account. |
| `allPmsSchedule` | `boolean` | No | Do all project managers have scheduling rights? |
| `startDate` | `string` | No | The start date of this project which is either manually set or calculated from the earliest phase, milestone, allocation, or logged time. (format: YYYY-MM-DD) |
| `endDate` | `string` | No | The end date of this project which is either manually set or calculated from the latest phase, milestone, allocation, or logged time. (format: YYYY-MM-DD) |
| `expenses` | `string[]` | No | A list of expenses assigned to this project. E.g. [{"name": "Expense 1", "date": "2022-01-01", "cost": 100}]. See the documentation |
| `projectTasks` | `string[]` | No | A list of tasks assigned to this project. E.g. [{"phase_id": 1, "billable": 1}]. See the documentation |
| `projectTeam` | `string[]` | No | A list of people and their project Hourly Rate, the Phase ID will be 0, the list may be empty. See the documentation Options are loaded from the connected account. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "float",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "float-create-project",
  arguments: {
    name: "Project Name",
    projectCode: "Project Code",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "float-create-project",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    float: { authProvisionId: "apn_xxxxxxx" },
    name: "Project Name",
    projectCode: "Project Code",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "float-create-project",
    "configured_props": {
      "float": { "authProvisionId": "apn_xxxxxxx" },
      "name": "Project Name",
      "projectCode": "Project Code"
    }
  }'
```

---

- App: https://pipedream.com/apps/float.md · All apps: https://pipedream.com/apps
