Enviar una notificación del art. 8 (Ley 2213)
Notificar a una parte de un auto admisorio u otra providencia por correo, con constancia de entrega.
Esta es la receta que el servidor MCP entrega a los asistentes de IA, tal cual. Está en inglés porque los modelos la siguen mejor así; el asistente le responde en su idioma.
Un asistente la lee con docs({uri:"docs://recipes/send-an-article-8-notification"})
docs://recipes/send-an-article-8-notification — prepare an art. 8 (Ley 2213) personal notification and request its send
Use when the lawyer wants to notify a party (usually the demandado) of a providencia —
typically the auto admisorio — by email with a constancia de entrega. Many cases from a
spreadsheet at once? Use docs://recipes/import-a-csv-batch instead.
You PREPARE; a signed-in lawyer SWEARS the recipients and CONFIRMS the send in the panel.
You can never send on your own: sendNotification over MCP only requests the send.
Every firm tool runs through manage_resource; only whoami and docs are called by name.
Already have a draft id? Jump to step 6.
1. whoami({})
→ orgId, scopes every call below takes this orgId where it asks for one
scopes lack "notifications:write"? Stop: the token cannot prepare notifications.
skip if you already hold orgId
2. manage_resource({resource:"cases", action:"caseList", params:{orgId:"<orgId>", q:"<radicado>"}})
→ case.id q matches the radicado with or without dashes
Found it? Skip step 3. Empty? Step 3.
3. manage_resource({resource:"cases", action:"createCase", params:{radicado:"<radicado>", juzgado:"<court name>", juzgadoEmail:"<court buzón>", ciudad:"<city>", especialidad:"<especialidad>", claseProceso:"<clase de proceso>", cliente:"<client>"}})
→ case.id createCase takes no orgId: it acts in the token's firm
X_CASE_RADICADO_TAKEN? The case exists — go back to step 2, never create a second one.
Missing a field? Ask the lawyer. Do not invent a juzgado or its email.
4. For each PDF to attach (auto admisorio, demanda, anexos — at most 6 MB in total per notification;
a larger filing is compressed or split across more than one notification, never sent as a link alone):
manage_resource({resource:"uploads", action:"requestUpload", params:{kind:"otro", filename:"<file.pdf>", contentType:"application/pdf", size:<bytes>}})
→ key, url, contentType
PUT the file's bytes to url with header Content-Type: <contentType>
(url may be a path: prefix it with the server origin, e.g. https://www.notificado.co).
manage_resource({resource:"uploads", action:"confirmUpload", params:{key:"<key>", kind:"otro", filename:"<file.pdf>", contentType:"application/pdf"}})
→ document.id, sha256
confirmUpload refused? The bytes are not a PDF/PNG/JPEG, exceed 20 MB, or the PUT never
landed — read the error's fix line, tell the lawyer, do not retry the same bytes blindly.
skip if the lawyer already uploaded the documents and gave you their ids
5. manage_resource({resource:"notifications", action:"createNotification", params:{orgId:"<orgId>", caseId:"<case.id>", template:"art8-personal", providencia:"auto admisorio de la demanda", providenciaFecha:"<YYYY-MM-DD>"}})
→ notification.id status "draft"; nothing is sent, no credit is used
Optional params: terminoDias (1-365 días hábiles), mensaje (up to 5000 characters),
messageTemplateId (docs://recipes/manage-message-templates).
6. For each document.id from step 4:
manage_resource({resource:"notifications", action:"attachDocument", params:{orgId:"<orgId>", notificationId:"<notification.id>", documentId:"<document.id>", kind:"auto_admisorio|demanda|anexo|subsanacion|providencia|otro"}})
→ attachment.sha256
kind is ONE of those values. X_ATTACHMENT_DUPLICATE? Already attached — continue.
7. Ask the lawyer to open https://www.notificado.co/notificaciones/<notification.id> and add each
recipient there. Adding a recipient is the lawyer's sworn statement (juramento, art. 8) about
where the address came from — you cannot do it for them, and there is no tool for it.
Wait until they say it is done. This is the last point where nothing is committed.
8. manage_resource({resource:"notifications", action:"creditsBalance", params:{orgId:"<orgId>"}})
→ balance one credit per recipient
balance smaller than the number of recipients? Stop: see docs://recipes/top-up-credits.
9. manage_resource({resource:"sends", action:"sendNotification", params:{orgId:"<orgId>", notificationId:"<notification.id>", confirm:true}})
→ status "awaiting_confirmation", confirmationId, confirmUrl, expiresAt
(the token is a verified lawyer's: identity check approved)
Give the lawyer confirmUrl. They confirm in the panel; only then is the message frozen,
timestamped and emailed. The request expires after 24 hours.
→ status "awaiting_approval", approvalId, approvalUrl
(the token is a paralegal's, or a lawyer's or owner's not verified yet)
Nothing is sent or charged: the request waits on approvalUrl (/aprobaciones) until a verified
lawyer of the firm approves it (the send then runs in that lawyer's name) or rejects it with a
reason. Tell the person who it waits for. If they get verified meanwhile, they can send it
themselves from /aprobaciones, or withdraw it there.
X_NOTIFICATION_NO_RECIPIENTS? Step 7 was not finished — ask again.
X_KYC_REQUIRED? Only when the token's person may neither send nor ask for approval — check
whoami and the role; a verified lawyer or owner of the firm sends instead.
Already called it for this draft? Do not call again — docs://recipes/confirm-pending-sends.
Optional param: when ("now" | "next_business_open"), a PROPOSAL the lawyer sees preselected
and can change; it sends and schedules nothing. docs://recipes/send-outside-court-hours.
Done when you have handed the lawyer confirmUrl, or told the person their request waits on
approvalUrl. To follow up after they confirm, use
docs://recipes/check-a-notification-status.
Tips
- The radicado is the 23-digit court number (Código Único de Radicación). Dashes and spaces are
fine; the brand is Notificado, never "radicado".
- Never call sendNotification "to test" — each request is shown to the lawyer as a send to confirm.
- Dates are plain calendar days (YYYY-MM-DD). Times you read back are UTC; show them in
America/Bogota.