Skip to content

Manage the address book

Keep a party's address and where it came from; you still make the sworn statement on each send.

This is the recipe the MCP server gives AI assistants, as is. It is in English because models follow it best that way; the assistant answers you in your language.

An assistant reads it with docs({uri:"docs://recipes/manage-the-address-book"})

docs://recipes/manage-the-address-book
docs://recipes/manage-the-address-book — keep a party's notification address and where it came from

Use when the lawyer gives you a party's email and how it was obtained (a contract clause, the
Cámara de Comercio, the RUT, earlier correspondence) and wants it on file for the next sends.
The address book is NOT a sworn statement and adds no recipient: the lawyer still swears each
address (art. 8 inc. 2 Ley 2213) in the panel on every send.

1. whoami({})
   → orgId
   skip if you already hold orgId

2. manage_resource({resource:"cases", action:"getCase", params:{orgId:"<orgId>", caseId:"<case.id>"}})
   → parties[]: party.id, role, name, idNumber
   No case.id? docs://recipes/find-a-case-by-radicado. The party is missing? Add it:
   manage_resource({resource:"parties", action:"addParty", params:{caseId:"<case.id>", role:"demandado", name:"<name as in the demanda>"}})
   → party.id          role is ONE of demandante | demandado | apoderado | otro

3. manage_resource({resource:"parties", action:"partyAddresses", params:{orgId:"<orgId>", caseId:"<case.id>"}})
   → saved addresses: address.id, partyId, email, source, sourceText, evidence or overrideReason
   The same address is already saved for that party? Stop: nothing to add.

4. manage_resource({resource:"notifications", action:"checkAddress", params:{orgId:"<orgId>", email:"<email>"}})
   → verdict ok | warn | block, reasons, suggestion
   block? It cannot be sent to: tell the lawyer, stop. warn? Show the reasons (a typo suggestion,
   a role account like info@) and let the lawyer decide. The check is recorded as diligence.

5. A proof document (the contract page, the Cámara de Comercio record)? Upload it first:
   manage_resource({resource:"uploads", action:"requestUpload", params:{kind:"provenance_proof", filename:"<file.pdf>", contentType:"application/pdf", size:<bytes>}})
   PUT the bytes to url, then
   manage_resource({resource:"uploads", action:"confirmUpload", params:{key:"<key>", kind:"provenance_proof", filename:"<file.pdf>", contentType:"application/pdf"}})
   → document.id
   skip if there is no proof document — step 6 then needs overrideReason

6. manage_resource({resource:"parties", action:"savePartyAddress", params:{orgId:"<orgId>", partyId:"<party.id>", email:"<email>", source:"contrato", sourceText:"<where the address came from>", evidenceDocumentIds:["<document.id>"]}})
   → the saved address
   source is ONE of comunicaciones_previas | camara_de_comercio | rut | contrato | web_oficial | otro.
   No proof document? Send evidenceDocumentIds:[] and overrideReason:"<why there is no proof>" —
   exactly one of the two. Add obtainedOn:"<YYYY-MM-DD>" when the lawyer knows the day.

Done when partyAddresses lists the address with its source.

Tips
- Remove a wrong or outdated one (past sends keep their own sworn record):
  manage_resource({resource:"parties", action:"removePartyAddress", params:{orgId:"<orgId>", addressId:"<address.id>"}})
- sourceText is the lawyer's own words ("cláusula 12 del contrato de arrendamiento"): quote them,
  never write your own.
- The whole book is on https://www.notificado.co/cuenta/libreta.

All recipes · Connect an assistant