---
name: barycenters
description: Ask Barycenters /admit before consequential tool calls. Shadow by default — records what would have been refused, never a fake pass. This skill does not intercept; the gates are bary.govern, the execution adapter, or the live MCP admit tool.
---

# Barycenters — admit before consequence

You do not permit. You propose.

Before any action that deploys, pays, deletes, messages the outside world,
changes production state, or otherwise cannot be undone, call `/admit`.

## Live path — wrap (SDK)

```js
import { Barycenters } from "barycenters";

const bary = new Barycenters({
  endpoint: "https://barycenters-admit.fly.dev",
  namespace: "acme/eng",
});
// mode defaults to "shadow": never throws; d.wouldBlock is the signal.

const guarded = bary.govern("deploy_prod", async (opts, decision) => {
  return runDeploy(opts);
});
```

If no endpoint is wired, the SDK returns **AWAITING** (`NO_ENDPOINT`). That is
not ACCEPT. Do not invent a pass.

## Live path — MCP tool

The wedge speaks MCP at `https://barycenters-admit.fly.dev/mcp/`
(Streamable HTTP). Live tools: `admit`, `check_readiness`. Call `admit`
before consequence. Connecting the server is not an automatic wrap of
every other tool you have.

## Enforce

Flipping shadow → enforce is a human decision (`authority_effect` 0 → 1).
Do not flip it from a skill.

## Honesty

This skill is instructions. It is not a gate. A model that ignores it is
ungoverned. The gates are `bary.govern`, the execution adapter that checks
an ACCEPT token, or the live MCP `admit` tool actually being called.
