# Hemnet MCP tools

> Every Hemnet MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/hemnet

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

13 tools for Hemnet on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own Hemnet account (Mitt Hemnet)
- Integration page: https://cotlet.dev/integrations/hemnet-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `hemnet_search_listings` | read | Homes for sale and coming to market (kommande), with price, fee, rooms and area. |
| `hemnet_get_listing` | read | Full listing: price, monthly fee, area, rooms, viewing times, bidding status and broker. |
| `hemnet_search_sold_prices` | read | Sold homes (slutpriser) with final price, asking price and sale date. |
| `hemnet_list_saved_homes` | read | Homes you saved, with collection, status (for sale, bidding, sold) and final price when sold. |
| `hemnet_list_collections` | read | Your collections (samlingar) of saved homes, with who they are shared with. |
| `hemnet_list_upcoming_viewings` | read | Viewing times of your saved homes, soonest first, with address and broker. |
| `hemnet_list_saved_searches` | read | Your saved searches with filters and notification settings. |
| `hemnet_list_followed_homes` | read | Your own home and other homes you follow, with the value Hemnet shows over time. |
| `hemnet_save_home` | write | Save a listing to your saved homes, optionally into one of your collections. |
| `hemnet_remove_saved_home` | write | Remove a listing from your saved homes. |
| `hemnet_create_saved_search` | write | Save a search and get notified about new homes that match it. |
| `hemnet_delete_saved_search` | write | Delete one of your saved searches and its notifications. |
| `hemnet_follow_home` | write | Follow the value of any home by address, on the market or not. |

## Search listings

MCP tool: `hemnet_search_listings`

Access: read.

Returns homes for sale in an area that match your filters, and homes coming to market unless include_upcoming is false. Each item has the asking price, monthly fee, rooms and living area. Pages hold up to 50 homes; pass next_cursor back as cursor for the next page. Use listing_id with get_listing or save_home.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `location` | string | yes | Area, municipality or street, e.g. "Vasastan, Stockholm". |
| `housing_types` | string[] | no | Any of apartment, villa, townhouse, holiday_home, plot, farm. Default: all. |
| `price_min` | integer | no | Minimum asking price in SEK. |
| `price_max` | integer | no | Maximum asking price in SEK. |
| `rooms_min` | integer | no | Minimum number of rooms. |
| `living_area_min` | integer | no | Minimum living area in m². |
| `include_upcoming` | boolean | no | Include homes coming to market. Default: true. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_search_listings",
    "arguments": {
      "location": "Vasastan, Stockholm"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listings": [
      {
        "listing_id": "l_21730488",
        "address": "Karlbergsvägen 120, Vasastan, Stockholm",
        "type": "apartment",
        "rooms": 3,
        "living_area_m2": 68,
        "asking_price_sek": 5450000,
        "monthly_fee_sek": 4120,
        "status": "for_sale"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## Get listing

MCP tool: `hemnet_get_listing`

Access: read.

Returns one listing as the listing page shows it: asking price, monthly fee, rooms, living area, the broker, viewing times and whether bidding has started. Use it after search_listings to read a home in full.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from search_listings or list_saved_homes. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_get_listing",
    "arguments": {
      "listing_id": "listing_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "l_21730488",
    "address": "Karlbergsvägen 120, Vasastan, Stockholm",
    "type": "apartment",
    "rooms": 3,
    "living_area_m2": 68,
    "asking_price_sek": 5450000,
    "monthly_fee_sek": 4120,
    "bidding_started": false,
    "viewings": [
      "2026-10-17T12:00:00+02:00"
    ],
    "broker": "Exempel Mäkleri, Vasastan",
    "url": "https://www.hemnet.se/bostad/l_21730488"
  },
  "isError": false
}
```

## Search sold prices

MCP tool: `hemnet_search_sold_prices`

Access: read.

Returns homes sold in an area, with final price, asking price, how far the sale landed above or below asking, and the sale date. Narrow it with sold_since, housing type and rooms. Pages hold up to 100 homes.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `location` | string | yes | Area, municipality or street, e.g. "Vasastan, Stockholm". |
| `housing_types` | string[] | no | Any of apartment, villa, townhouse, holiday_home, plot, farm. |
| `sold_since` | date | no | Only homes sold on or after this date. |
| `rooms_min` | integer | no | Minimum number of rooms. |
| `limit` | integer | no | 1 to 100. Default: 50. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_search_sold_prices",
    "arguments": {
      "location": "Vasastan, Stockholm",
      "housing_types": [
        "apartment"
      ],
      "rooms_min": 3,
      "sold_since": "2026-01-01",
      "limit": 100
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "sold": [
      {
        "address": "Odengatan 40, Vasastan, Stockholm",
        "rooms": 3,
        "living_area_m2": 71,
        "asking_price_sek": 4250000,
        "final_price_sek": 4500000,
        "over_asking_pct": 5.9,
        "sold_on": "2026-09-12"
      },
      {
        "address": "Sveavägen 98, Vasastan, Stockholm",
        "rooms": 3,
        "living_area_m2": 74,
        "asking_price_sek": 5200000,
        "final_price_sek": 5150000,
        "over_asking_pct": -1,
        "sold_on": "2026-06-03"
      }
    ]
  },
  "isError": false
}
```

## List saved homes

MCP tool: `hemnet_list_saved_homes`

Access: read.

Returns the homes in your saved homes, with the collection each is in. Status is for_sale, bidding or sold; a sold home carries its final price. Pass collection_id to see one collection only.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `collection_id` | string | no | Only homes in this collection, from list_collections. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_list_saved_homes",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "saved_homes": [
      {
        "listing_id": "l_21730488",
        "address": "Karlbergsvägen 120, Vasastan, Stockholm",
        "collection": "Flytt 2027",
        "status": "for_sale",
        "asking_price_sek": 5450000
      },
      {
        "listing_id": "l_21644102",
        "address": "Hornsgatan 55, Södermalm, Stockholm",
        "collection": "Flytt 2027",
        "status": "sold",
        "final_price_sek": 6100000
      }
    ]
  },
  "isError": false
}
```

## List collections

MCP tool: `hemnet_list_collections`

Access: read.

Returns your collections with the number of homes in each and the people each is shared with. Use collection_id with list_saved_homes and save_home.

### Parameters

No parameters.

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_list_collections",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "collections": [
      {
        "collection_id": "col_flytt27",
        "name": "Flytt 2027",
        "homes": 2,
        "shared_with": [
          "Maria"
        ]
      },
      {
        "collection_id": "col_sommar",
        "name": "Sommarstuga",
        "homes": 0,
        "shared_with": []
      }
    ]
  },
  "isError": false
}
```

## List upcoming viewings

MCP tool: `hemnet_list_upcoming_viewings`

Access: read.

Returns the viewings of your saved homes that have not happened yet, soonest first, with address and broker. It looks 14 days ahead unless you set until.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `until` | date | no | Only viewings up to this date. Default: 14 days ahead. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_list_upcoming_viewings",
    "arguments": {
      "until": "2026-10-18"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "viewings": [
      {
        "listing_id": "l_21730488",
        "address": "Karlbergsvägen 120, Vasastan, Stockholm",
        "starts_at": "2026-10-17T12:00:00+02:00",
        "broker": "Exempel Mäkleri, Vasastan",
        "bidding_started": false
      }
    ]
  },
  "isError": false
}
```

## List saved searches

MCP tool: `hemnet_list_saved_searches`

Access: read.

Returns your saved searches with their filters, how you are notified (email or push) and how often. Use saved_search_id with delete_saved_search.

### Parameters

No parameters.

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_list_saved_searches",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "saved_searches": [
      {
        "saved_search_id": "ss_48213",
        "location": "Täby kommun",
        "filters": {
          "housing_types": [
            "villa"
          ],
          "price_max": 9000000,
          "rooms_min": 5
        },
        "notify_by": "push",
        "frequency": "live"
      }
    ]
  },
  "isError": false
}
```

## List followed homes

MCP tool: `hemnet_list_followed_homes`

Access: read.

Returns the homes whose value you follow, your own and others, each with the value Hemnet shows and how it changed over time. The value is Hemnet's estimate. Homes that are not for sale can be followed too.

### Parameters

No parameters.

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_list_followed_homes",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "followed_homes": [
      {
        "address": "Storgatan 1, Uppsala",
        "estimated_value_sek": 3980000,
        "change_since_start_pct": 2.4,
        "history": [
          {
            "date": "2026-04-01",
            "value_sek": 3890000
          },
          {
            "date": "2026-10-01",
            "value_sek": 3980000
          }
        ]
      }
    ]
  },
  "isError": false
}
```

## Save home

MCP tool: `hemnet_save_home`

Access: write. Confirm: waits for the user's OK before it runs.

Saves a listing to your saved homes, and into a collection when collection_id is set. People a collection is shared with see the new home, which is why this asks first. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from search_listings or list_saved_homes. |
| `collection_id` | string | no | Collection from list_collections. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_save_home",
    "arguments": {
      "listing_id": "listing_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "l_21730488",
    "saved": true,
    "collection_id": "col_flytt27"
  },
  "isError": false
}
```

## Remove saved home

MCP tool: `hemnet_remove_saved_home`

Access: write.

Removes a listing from your saved homes and from its collection. It runs without asking: nobody is notified and save_home undoes it in one call.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from search_listings or list_saved_homes. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_remove_saved_home",
    "arguments": {
      "listing_id": "listing_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "l_21644102",
    "saved": false
  },
  "isError": false
}
```

## Create saved search

MCP tool: `hemnet_create_saved_search`

Access: write.

Creates a saved search and returns how many homes match it now. Notifications go to you by email or push, live or as a summary. It runs without asking: it reaches no one else and delete_saved_search undoes it in one call.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `location` | string | yes | Area, municipality or street, e.g. "Vasastan, Stockholm". |
| `filters` | object | no | Any of housing_types, price_min, price_max, rooms_min, living_area_min. |
| `notify_by` | enum | no | email or push. Default: email. |
| `frequency` | enum | no | live or summary. Default: summary. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_create_saved_search",
    "arguments": {
      "location": "Täby",
      "filters": {
        "housing_types": [
          "villa"
        ],
        "price_max": 9000000,
        "rooms_min": 5
      },
      "notify_by": "push",
      "frequency": "live"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "saved_search_id": "ss_48213",
    "location": "Täby kommun",
    "filters": {
      "housing_types": [
        "villa"
      ],
      "price_max": 9000000,
      "rooms_min": 5
    },
    "notify_by": "push",
    "frequency": "live",
    "matching_now": 37
  },
  "isError": false
}
```

## Delete saved search

MCP tool: `hemnet_delete_saved_search`

Access: write.

Deletes one saved search and stops its notifications. It runs without asking: it reaches no one else, and create_saved_search with the same filters brings it back.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `saved_search_id` | string | yes | Saved search ID from list_saved_searches. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_delete_saved_search",
    "arguments": {
      "saved_search_id": "saved_search_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "saved_search_id": "ss_48213",
    "deleted": true
  },
  "isError": false
}
```

## Follow home

MCP tool: `hemnet_follow_home`

Access: write.

Adds a home to the homes whose value you follow, for sale or not. It changes only your own list, so it runs without asking. Unfollowing is done in the Hemnet app.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `address` | string | yes | Street address with town, e.g. "Storgatan 1, Uppsala". |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hemnet_follow_home",
    "arguments": {
      "address": "Storgatan 1, Uppsala"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "address": "Storgatan 1, Uppsala",
    "following": true,
    "estimated_value_sek": 3980000
  },
  "isError": false
}
```
