Contents
View as Markdown

Tasks and contacts

10 tools. Generated from the MCP server: names, inputs and prices match the code.

Create Contact

Create a contact. A person needs name (the surname; first_name and position optional; company_name on a person is the employer). An organization needs kind="organization" and company_name, and only company_name: the server mirrors it into name, so do not send both. Every read returns display_name, which is the field to render. Attach roles in the same call with property_links: [{ property_id, role, role_note?, is_primary? }]. The role belongs to the link, so one Hausverwaltung can be weg_manager on one property and sev_manager on another. Use organization_contact_id to say which company a person works for. Put an agreed rate in hourly_rate (EUR per hour, a number) with the conditions in rate_note ("netto, zzgl. Anfahrt"), never as prose in notes, where nothing can calculate with it.

Inputs

NameTypeRequiredDescription
kindstringnoValues:personorganization
contact_typestringnoValues:property_managerbrokernotarybankcraftsmantenanttax_advisorinsurerappraiserlawyerauthoritysellerbuyersupplierother
namestring | nullno
first_namestring | nullno
company_namestring | nullno
positionstring | nullno
organization_contact_idstring | nullno
emailstring | nullno
email_secondarystring | nullno
phonestring | nullno
phone_secondarystring | nullno
mobilestring | nullno
faxstring | nullno
websitestring | nullno
streetstring | nullno
house_numberstring | nullno
address_additionstring | nullno
post_codestring | nullno
citystring | nullno
countrystring | nullno
notesstring | nullno
tagsarray<string>no
languagestring | nullno
do_not_contactbooleanno
ratinginteger | nullno
hourly_ratenumber | nullno
rate_notestring | nullno
external_refstring | nullno
property_linksarray<object>no

RESTPOST /api/v1/contacts

contacts_delete

WriteDestructiveFree

Delete Contact

Delete a contact by id. It leaves contacts_list but still comes back with include_deleted, and tenancies that name the contact keep their tenant.

Inputs

NameTypeRequiredDescription
idstringyes

RESTDELETE /api/v1/contacts/{id}

Get Contact

Get one contact with its property_links (each carrying the role, an optional role_note and a property_label) and, for a person, the organization they work for. Render display_name: it already resolves name vs company_name.

Inputs

NameTypeRequiredDescription
idstringyes
include_deletedbooleanno

RESTGET /api/v1/contacts/{id}

List Contacts

List contacts (people and companies) with the roles they hold on properties. Filter by property_id and/or role to answer "who is the Hausverwalter of this object" (role weg_manager; sev_manager is the Sondereigentums-/Mietverwalter), by contact_type or kind, or search names and email with q. Use contact_type supplier for a Lieferant with no building attached. Render display_name rather than picking between name and company_name yourself. do_not_contact is a hard opt-out: never draft a message to such a contact. rating is 1-5; null means not rated, not a bad rating.

Inputs

NameTypeRequiredDescription
property_idstringno
rolestringnoValues:weg_managersev_managerbrokernotarysellerbuyertenantcraftsmancaretakerbanktax_advisorinsurerappraiserlawyeradvisory_boardauthoritysupplierother
contact_typestringnoValues:property_managerbrokernotarybankcraftsmantenanttax_advisorinsurerappraiserlawyerauthoritysellerbuyersupplierother
kindstringnoValues:personorganization
qstringno
include_deletedstringnoValues:01truefalse
limitintegerno
offsetintegerno

RESTGET /api/v1/contacts

contacts_patch

WriteDestructiveFree

Update Contact

Update a contact's fields by id; partial body. property_links is a replace-set: omit it to leave the links alone, or send the complete array (including []) to replace them. Rename an organization through company_name; name follows on its own. Send rating: null to clear a rating back to "not rated" (1-5 are the only ratings; there is no 0).

Inputs

NameTypeRequiredDescription
kindstringnoValues:personorganization
contact_typestringnoValues:property_managerbrokernotarybankcraftsmantenanttax_advisorinsurerappraiserlawyerauthoritysellerbuyersupplierother
namestring | nullno
first_namestring | nullno
company_namestring | nullno
positionstring | nullno
organization_contact_idstring | nullno
emailstring | nullno
email_secondarystring | nullno
phonestring | nullno
phone_secondarystring | nullno
mobilestring | nullno
faxstring | nullno
websitestring | nullno
streetstring | nullno
house_numberstring | nullno
address_additionstring | nullno
post_codestring | nullno
citystring | nullno
countrystring | nullno
notesstring | nullno
tagsarray<string>no
languagestring | nullno
do_not_contactbooleanno
ratinginteger | nullno
hourly_ratenumber | nullno
rate_notestring | nullno
external_refstring | nullno
property_linksarray<object>no
idstringyes

RESTPATCH /api/v1/contacts/{id}

Create Task

Create a task. Requires title; optional links are validated.

Inputs

NameTypeRequiredDescription
titlestringyes
descriptionstring | nullno
categorystringnoValues:generalbanktaxescashflowrental
due_datestring | nullno
property_idstring | nullno
linked_unit_idstring | nullno
linked_tenancy_idinteger | nullno
linked_dd_issue_idinteger | nullno
is_checkedbooleanno

RESTPOST /api/v1/tasks

tasks_delete

WriteDestructiveFree

Delete Task

Delete a task by id.

Inputs

NameTypeRequiredDescription
idintegeryes

RESTDELETE /api/v1/tasks/{id}

Get Task

Get one task with full linked context (property, unit, tenancy, DD issue).

Inputs

NameTypeRequiredDescription
idintegeryes
include_deletedbooleanno

RESTGET /api/v1/tasks/{id}

List Tasks

List tasks with optional filters (property_id, is_checked, category, include_deleted, limit, offset).

Inputs

NameTypeRequiredDescription
property_idstringno
linked_dd_issue_idintegerno
is_checkedstringnoValues:01truefalse
categorystringnoValues:generalbanktaxescashflowrental
include_deletedstringnoValues:01truefalse
limitintegerno
offsetintegerno

RESTGET /api/v1/tasks

tasks_patch

WriteDestructiveFree

Update Task

Update a task's editable fields (e.g. title, checked state, category, linked property) by numeric id; partial body.

Inputs

NameTypeRequiredDescription
titlestringno
descriptionstring | nullno
categorystringnoValues:generalbanktaxescashflowrental
due_datestring | nullno
property_idstring | nullno
linked_unit_idstring | nullno
linked_tenancy_idinteger | nullno
linked_dd_issue_idinteger | nullno
is_checkedbooleanno
idintegeryes

RESTPATCH /api/v1/tasks/{id}