# Create Property — EasyBroker

> Creates a new property listing in EasyBroker with full details including title, price, location, bedrooms, bathrooms, parking, size, description, amenities, photos, and status. See the documentation

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

## Description

Creates a new property listing in EasyBroker with full details including title, price, location, bedrooms, bathrooms, parking, size, description, amenities, photos, and status. [See the documentation](https://dev.easybroker.com/reference/post_properties)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `propertyType` | `string` | Yes | The name of the property type. Use the List Property Types action to retrieve all available values. Example: Casa |
| `title` | `string` | Yes | The property listing title |
| `description` | `string` | Yes | The property listing description |
| `status` | `string` | Yes | The property listing status |
| `operations` | `any` | Yes | An array of operation objects. For a sale or rental: [{"type":"sale","currency":"USD","amount":250000,"active":true}]. For a temporary rental: [{"type":"temporary_rental","currency":"USD","active":true,"rates":[{"type":"daily","amount":150}]}]. Accepted type values: sale, rental, temporary_rental. Optional fields per operation: unit (enum: total, square_meter, hectare), commission ({type: amount\|percentage\|months, value: number, currency: string}), foreclosure (boolean, Mexico only) |
| `locationName` | `string` | No | Location in Neighborhood, City, State format matching a location from the locations endpoint. Example: Polanco, Ciudad de México, Ciudad de México |
| `locationStreet` | `string` | No | Street name. Required by the API if the property is not land-type and Show Exact Location is enabled |
| `locationExteriorNumber` | `string` | No | Address exterior number |
| `locationInteriorNumber` | `string` | No | Address interior number |
| `locationCrossStreet` | `string` | No | Intersecting street name |
| `locationPostalCode` | `string` | No | Postal/zip code |
| `locationLatitude` | `string` | No | Geographic latitude coordinate. Example: 25.6866142 |
| `locationLongitude` | `string` | No | Geographic longitude coordinate. Example: -100.3161126 |
| `privateDescription` | `string` | No | Internal notes visible only to your team |
| `agent` | `string` | No | EasyBroker account email of the assigned agent |
| `showPrices` | `boolean` | No | Show or hide listing prices on EasyBroker |
| `bedrooms` | `integer` | No | Number of bedrooms |
| `bathrooms` | `integer` | No | Number of bathrooms |
| `halfBathrooms` | `integer` | No | Number of half bathrooms |
| `parkingSpaces` | `integer` | No | Number of parking spaces |
| `age` | `string` | No | Property age. Use under_construction, new_construction, or a four-digit construction year. Example: 2010 |
| `floor` | `string` | No | Floor number or a custom value. Example: Penthouse |
| `floors` | `integer` | No | Number of floors in the building |
| `expenses` | `string` | No | Monthly property expenses amount |
| `internalId` | `string` | No | Unique organizational ID. Accepts letters, numbers, hyphens, underscores, commas, periods, ampersands, and forward slashes |
| `tags` | `string[]` | No | Associated tags for the property |
| `features` | `string[]` | No | Property feature names from the features endpoint |
| `shareCommission` | `boolean` | No | Share commission with other agencies |
| `collaborationNotes` | `string` | No | Collaboration conditions or details |
| `images` | `any` | No | An array of image objects. Each object requires a url (valid HTTP/HTTPS URL with .jpg, .png, .gif, .bmp, or .heic extension) and accepts an optional title. Maximum 50 images, 6MB per image, minimum 500px. Example: [{"url":"https://example.com/image.jpg","title":"Front view"}] |
| `videos` | `string[]` | No | YouTube video links for the property |
| `virtualTour` | `string` | No | Virtual tour URL |
| `showExactLocation` | `boolean` | No | Show or hide the exact address and map pin |
| `constructionSize` | `integer` | No | Construction size in square meters |
| `lotSize` | `integer` | No | Lot size in square meters |
| `lotLength` | `integer` | No | Lot length in meters |
| `lotWidth` | `integer` | No | Lot width in meters |
| `coveredSpace` | `integer` | No | Covered space in square meters (unavailable in Mexico) |
| `uncoveredSpace` | `integer` | No | Uncovered space in square meters (Mexico and Argentina only) |
| `exclusive` | `boolean` | No | Listing exclusivity indicator |
| `sharedCommissionPercentage` | `integer` | No | Agency fee percentage shared with other agencies. Currently only 50 or leave blank for none |

## 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": "easybroker",
      },
    },
  },
)

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: "easybroker-create-property",
  arguments: {
    propertyType: "Property Type",
    title: "Title",
  },
})
```

**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: "easybroker-create-property",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    easybroker: { authProvisionId: "apn_xxxxxxx" },
    propertyType: "Property Type",
    title: "Title",
  },
})

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": "easybroker-create-property",
    "configured_props": {
      "easybroker": { "authProvisionId": "apn_xxxxxxx" },
      "propertyType": "Property Type",
      "title": "Title"
    }
  }'
```

---

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