Back to Discover

postfact-api

connector

GSterlingPress

Resolve whether an uncertain side-effecting action completed before software retries it.

View on GitHub
0 starsSynced Aug 14, 2026

Install to Claude Code

/plugin marketplace add GSterlingPress/postfact-api

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.

Rendered live from GSterlingPress/postfact-api's GitHub README — not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
streamable-http remoteHosted streamable-http endpointmcp-serverhttps://postfact-api-production.up.railway.app/mcp

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.