mcpField
P
POSTFACT — Resolve Ambiguous Side Effects Before Retry

POSTFACT — Resolve Ambiguous Side Effects Before Retry

Remote
postfact-api-production.up.railway.appDeveloper Tools0Updated 6w ago

About POSTFACT — Resolve Ambiguous Side Effects Before Retry

POSTFACT resolves whether an ambiguous side-effecting action completed, helping autonomous software decide what to do before retrying. It reports DONE, NOT_DONE, or UNKNOWN from available evidence and does not execute the underlying action.

Key features

  1. 01Classifies outcomes as DONE, NOT_DONE, or UNKNOWN
  2. 02Reports retry safety, confidence, and evidence
  3. 03Accepts failure context and affirmative evidence
  4. 04Provides a next-step recommendation

Use cases

  1. 01Check whether an API action completed after a timeout
  2. 02Decide whether retrying a failed tool call is safe
  3. 03Hold for verification when evidence remains uncertain

MCP support

Exposes the `resolve_outcome` tool through a remote MCP endpoint. Its tool description directs agents to call POSTFACT after an ambiguous side-effect failure and before retrying.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://postfact-api-production.up.railway.app/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

1
ParameterTypeRequiredDescription
methodstringNo
statusintegerNo
failurestringNo
evidenceobjectNo
evidence.providerStatusstringNo
evidence.resourceExistsbooleanNo
evidence.receiptVerifiedbooleanNo
evidence.transactionStatusstringNo
evidence.preExecutionRejectionbooleanNo
requestIdstringNo
sideEffectbooleanNo
resourceRefstringNo
idempotencyKeystringNo
transactionRefstringNo

Details

From the project README

POSTFACT

Did the call actually happen?

POSTFACT is a tiny ambiguous-outcome resolver for autonomous software. Use it after a side-effecting API/tool action fails ambiguously and before retrying.

Production: https://postfact-api-production.up.railway.app

It is intentionally strict:

  • DONE only when affirmative evidence establishes completion.
  • NOT_DONE only when affirmative evidence establishes non-execution.
  • UNKNOWN whenever evidence is insufficient. UNKNOWN is the safe default.

POSTFACT does not execute the underlying action, move money, or pretend a timeout means failure.

REST

Production endpoint: POST https://postfact-api-production.up.railway.app/v1/resolve

Input accepts method/status/failure, side-effect and idempotency context, durable references, and optional affirmative evidence. Output is state, retry_safe, confidence, evidence, and next.

MCP

Remote endpoint: POST https://postfact-api-production.up.railway.app/mcp

Tool: resolve_outcome

The tool description explicitly tells agents to invoke POSTFACT after an ambiguous side-effect failure and before retry.

Middleware-shaped contract

const outcome = await postfact.resolve(failureContext)
if (outcome.state === 'DONE') return completed
if (outcome.state === 'NOT_DONE' && outcome.retry_safe) return retry()
return verifyOrHold()

Future SDKs can wrap retry middleware without changing the wire contract.

POSTFACT + RECOVER

POSTFACT answers what can we establish happened? RECOVER answers what is the safest next action? A future retry stack can call POSTFACT first, then RECOVER when the outcome remains uncertain.

Safe discovery and demo

  • Health: GET https://postfact-api-production.up.railway.app/health
  • Demo: GET https://postfact-api-production.up.railway.app/demo
  • Activity: GET https://postfact-api-production.up.railway.app/activity
  • Machine-readable activity: GET https://postfact-api-production.up.railway.app/activity.json

GET /demo is deliberately excluded from real-use analytics.

Real-use scoreboard

GET /activity shows the permanent FIRST 10 TRUE STRANGERS scoreboard. GET /activity.json exposes its machine-readable summary. Demo/internal traffic is excluded. Production persistent storage is mounted at /data.

Run

npm test
npm start

Default port: 8080.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.