Inspiration
In Brazil a missed procedural deadline loses the case. Law firms track deadlines in tools like Jira, but the due date is typed by a person, and the count is not calendar math: only business days count (CPC art. 219), the start day is excluded (art. 224), movable holidays change every year, the Dec 20 - Jan 20 recess suspends the count (art. 220), an act in the electronic gazette (DJe) is only published the business day after it appears (Lei 11.419/2006), and public entities get double the term. We asked chat assistants for these dates and they answered wrong with confidence.
What it does
Deadline Desk exposes two tools through the Atlassian MCP server (rovo:mcp). compute-deadline takes an intimation date and a term in business days (optional DJe, doubled term and federal court, which adds the Justiça Federal closures of Lei 5.010/1966) and returns the legal due date and every skipped day with its legal reason. audit-deadlines reads a Jira project, picks issues labeled prazo + intimacao-YYYY-MM-DD, and flags each one as OK, DUE_DATE_TOO_LATE, DUE_DATE_EARLY, MISSING_DUE_DATE, OVERDUE or INCOMPLETE, with Jira due date vs legal due date. A Rovo agent built only on these two tools answers "Audit the deadlines in project LEG" from the tool result.
How we built it
A Forge app with a rovo:mcp module and two Forge actions backed by Node functions. The deadline rules are a pure module (business days, national holidays including Easter-based ones, recess, DJe publication, doubled term) covered by node:test. The audit uses the Jira REST API through api.asUser() with read:jira-work only. In Rovo Studio the connected app lists both tools; the agent instruction forbids computing or stating any date, key or status that is not in the tool result.
Challenges we ran into
The first live audit on Jira came back empty: the JQL used labels ~ "prazo*", and labels do not accept wildcards. We changed it to labels is not EMPTY and filter prazo in code, and added a test that the demo seed covers every status. External MCP clients over OAuth also refused our test site ("account isn't associated with a supported site"), so the demo uses the in-product path: a Rovo Studio agent calling the MCP tools.
Accomplishments that we're proud of
On the seeded project LEG (8 real-shaped deadlines) the live audit returns 3 OK, LEG-2 DUE_DATE_TOO_LATE (Jira 2026-11-30, legal 2026-11-27), LEG-4 and LEG-5 DUE_DATE_EARLY, LEG-6 MISSING_DUE_DATE and LEG-8 INCOMPLETE, and the Rovo agent reports exactly that. Example: intimation on Thu 2026-10-29, 15 business days: due 2026-11-23, skipping Finados (11/02), weekends and Consciencia Negra (11/20).
What we learned
For regulated dates the model must never do the arithmetic. MCP tools on Forge make the rule deterministic and portable to any agent, inside Atlassian data boundaries.
What's next for Deadline Desk
State court holidays (each tribunal publishes its own calendar), a Jira automation that writes the legal due date on the issue, and other jurisdictions' procedure codes.
Built With
- forge
- javascript
- jira
- mcp
- node.js
- rovo
Log in or sign up for Devpost to join the conversation.