CoFounder.im
Overview API Docs MCP Docs

update_project

WRITE

Update a project's name.

The update_project tool updates the name of an existing project. Currently only the project name can be changed via the MCP interface.

This is useful when the auto-generated name from create_project is too long or does not accurately describe your startup. Provide a concise, memorable name that reflects the project’s focus.

The tool verifies that the project belongs to the authenticated user before making any changes. Attempting to update a project you do not own returns a not found error.

Parameters

Name Type Required Description
project_id string Required The UUID of the project to update.
Example: 550e8400-e29b-41d4-a716-446655440000
name string Required The new project name.
Example: FractionalCFO Marketplace

Response Example

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "FractionalCFO Marketplace",
  "description": "A platform that connects early-stage startup founders with fractional CFOs...",
  "status": "completed"
}

Errors

Scenario Error Message
Project does not exist or belongs to another user Error: Project not found
Name fails changeset validation Error: Update failed: %{name: ["can't be blank"]}

Code Examples

curl -X POST https://mcp.cofounder.im/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "update_project",
      "arguments": {"project_id": "550e8400-e29b-41d4-a716-446655440000", "name": "FractionalCFO Marketplace"}
    }
  }'
{:ok, response} =
  Req.post("https://mcp.cofounder.im/mcp",
    json: %{
      "jsonrpc" => "2.0",
      "id" => 1,
      "method" => "tools/call",
      "params" => %{
        "name" => "update_project",
        "arguments" => %{"project_id" => "550e8400-e29b-41d4-a716-446655440000", "name" => "FractionalCFO Marketplace"}
      }
    },
    headers: [
      {"content-type", "application/json"},
      {"authorization", "Bearer YOUR_API_KEY"}
    ]
  )

response.body["result"]["content"]
|> hd()
|> Map.get("text")
|> IO.puts()
import requests

response = requests.post(
    "https://mcp.cofounder.im/mcp",
    headers={
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_API_KEY",
    },
    json={
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/call",
        "params": {
            "name": "update_project",
            "arguments": {"project_id": "550e8400-e29b-41d4-a716-446655440000", "name": "FractionalCFO Marketplace"},
        },
    },
)
data = response.json()
print(data["result"]["content"][0]["text"])
const response = await fetch("https://mcp.cofounder.im/mcp", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer YOUR_API_KEY",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "tools/call",
    params: {
      name: "update_project",
      arguments: { project_id: "550e8400-e29b-41d4-a716-446655440000", name: "FractionalCFO Marketplace" },
    },
  }),
});

const data = await response.json();
console.log(data.result.content[0].text);

Try It

This sends a real request to your account.