Ava Research

Due — Docs

Follow up on every invoice, right through Muse.

Due is a hosted MCP (Model Context Protocol) server. Paste or forward invoice text, and Due extracts a tracked record, ages it against today's date, and drafts a tone-ladder follow-up message for the owner to review and send.

Free. No paid plan. get_methodology works without an account. Everything else requires a free account, created with a one-time code sent to your email — no password, no payment details.

Endpoint

https://func-due-prod-qzn7zd.azurewebsites.net/api/mcp

JSON-RPC 2.0 over HTTPS POST. Methods: initialize, tools/list, tools/call. MCP protocol version 2025-06-18.

Authentication

Sign-in uses OAuth with Microsoft Entra External ID: Muse gets an access token from Entra, and the server accepts only Entra-issued tokens with the Due.ReadWrite scope. The server publishes protected-resource metadata (RFC 9728) and returns 401 with a WWW-Authenticate header pointing to it. Tokens are validated on every call: signature, issuer, audience, expiry, and scope. Every tool except get_methodology needs a signed-in user.

Tools

  • get_methodology · Sign-in: No
    Explains how Due works: the tone-ladder stages (nudge / reminder / final notice), what "not stated" means, and the "Due drafts; the owner sends" notice.
    Inputs: none.
    Example: "How does Due decide when to escalate?"

  • ingest_invoice · Sign-in: Yes
    Extracts an invoice record from pasted text: client name, invoice number, amount, issue and due dates, terms — only fields your own text actually stated.
    Inputs: text (required).
    Example: "Client: Riverside Cafe, Invoice #4471, Amount: $1,240.00, Due: 2026-09-15."
    Errors: invalid_params.

  • aging_report · Sign-in: Yes
    Who owes what and how late, bucketed by days overdue (current, 1-30, 31-60, 61-90, 90+). An invoice with no stated due date is never guessed into a bucket — it's flagged "terms not stated" instead.
    Inputs: none.
    Example: "What's overdue?"

  • set_voice · Sign-in: Yes
    Stores the owner's voice for draft_followup: a baseline register (friendly, professional, or firm), plus an optional pasted sample message to match.
    Inputs: register (required), sampleMessage.
    Example: "Set my follow-up tone to friendly."
    Errors: invalid_params.

  • draft_followup · Sign-in: Yes
    Drafts a follow-up message for one invoice at a given tone-ladder stage: nudge (early, friendly, assumes oversight), reminder (mid-range), or final notice (most overdue) — never auto-sent.
    Inputs: invoiceId (required), stage (required: nudge, reminder, or final_notice).
    Example: "Draft a nudge for that Riverside invoice."
    Errors: invalid_params, not_found.

  • delete_my_data · Sign-in: Yes · Permanent
    Owner-only, irreversible: deletes every invoice, every client record, every follow-up draft, and your voice setting.
    Inputs: none.
    Example: "Delete all my Due data."

Errors

If the token is missing, expired, or lacks Due.ReadWrite, tools that need sign-in return HTTP 401 with a WWW-Authenticate header. Tool errors come back as a result with isError set to true and a short, readable message; the codes are listed with each tool above.

Limits

  • No connector-specific rate limit is enforced or published.

  • delete_my_data is permanent — there is no undo, and Muse will ask for confirmation every time, never "always allow."

What it won't do

  • Due drafts; the owner sends. It never sends, schedules, or auto-sends a message on your behalf.

  • It never refers an account to collections or computes a late fee beyond what the invoice itself states. There's no payment step in this version — the owner collects directly.

  • It never invents a missing field — a missing due date is flagged "terms not stated," never guessed into net-30.

  • It shares nothing with advertisers.

Questions? support@avaresearchllc.com · Back to Due