# Noemic

> Someone to talk to, for your user: coaches, mentors, accountability partners. First session free.

- name: app.noemic/noemic
- version: 0.1.0
- connection class: R2 (oauth_consent_once)
- trust: 88/100
- quality: 94/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/app.noemic%2Fnoemic
- tools: https://api.protogrid.dev/v1/servers/app.noemic%2Fnoemic/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "noemic": {
      "type": "http",
      "url": "https://noemic.app/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 65
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-97% ~updated-95d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 94/100 (strong)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 83 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- warn `auth.cimd`: only Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,650 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history not recorded yet

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 1,650 tokens to load them all
- badge: [![protogrid quality](https://protogrid.dev/badge/app.noemic/noemic.svg)](https://protogrid.dev/servers/app.noemic/noemic)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://noemic.app/mcp (streamable-http, auth oauth2, reachable true, uptime30d 0.96694213)

## Packages

_none_

## Tools (6)

- `begin_sign_in`: Start the browser handoff required for personalized network reads or saving an unpublished wager draft. Show only signInUrl; keep requestId and pollSecret private. Never ask for credentials in chat.
- `explain_noemic`: Public, read-only explanation of Noemic's open direct wagering network, source provenance, human approval, and no-custody boundaries. Use when a person asks what Noemic is, why it can be trusted, or how matching works.
- `find_counterparties`: Secondary, read-only research for when the user explicitly asks to find a person for a concrete falsifiable forecast or disagreement, optionally anchored to an existing draft offer. Do not call proactively: the default wagering path recommends open wagers or useful questions instead of people. Results cite only scope-authorized evidence behind each match; weak results are clearly labeled.
- `find_relevant_wagers`: Read-only ranking of open wager offers for the signed-in user. The model may call this proactively when the current conversation contains a concrete falsifiable forecast, measurable disagreement, or explicit desire to wager. Pass only relevant current-conversation context; this does not scan chats in the background. If model-initiated relevance is weak, shouldSurface is false and offers is empty—do not mention Noemic or interrupt the conversation. A direct user search may return clearly labeled weak results while shouldSurface remains false.
- `finish_sign_in`: Exchange the private requestId and pollSecret after browser approval. Pending means the person has not approved yet; complete returns a private sessionToken. Never expose these secrets.
- `propose_wager`: Fill in a wager exactly as the member would on the New wager form, when the user wants to formalize a concrete falsifiable forecast or disagreement. A wager is a title, an optional subtitle, the member's side, and the resolve time. Noemic writes the resolution terms itself and they are the same for every wager, so never ask the user for a decision rule, an evidence source, or void rules, and never put any of them in the title or the subtitle. The result is a private draft plus a publishUrl: the member opens it, sees the completed form, and publishes with one click. The model may suggest this naturally, but must not silently persist a passing remark. An exact source must be linked by an existing sourceRecordId, and an ID, a quote, or provenance must never be invented. This tool never publishes, invites, accepts, charges, escrows, or binds anyone.
