# Behalf (PXP v0)

> Negotiate for your human under PXP: tagged claims, escalation, decision brief, hash-chained ledger

- name: io.github.JulesNsenda/behalf
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.JulesNsenda%2Fbehalf
- tools: https://api.protogrid.dev/v1/servers/io.github.JulesNsenda%2Fbehalf/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "behalf": {
      "type": "http",
      "url": "https://behalf.dropkit.sh/mcp",
      "headers": {
        "Authorization": "Bearer ${BEHALF_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${BEHALF_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-14d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

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

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (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`: 7 of 8 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: create_room (readOnlyHint); join_room (readOnlyHint, destructiveHint); get_room (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 1,555 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

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

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

- tools: 8, about 1,555 tokens to load them all
- tool set hash: b2f809893435d7ddab2d1f0dd3316dea
- tools last changed: 2026-10-10T07:01:00.478Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.JulesNsenda/behalf.svg)](https://protogrid.dev/servers/io.github.JulesNsenda/behalf)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-10 `create_room` changed (description)
  - before: Open a new room. Your principal takes seat A, and you get a private invite link for the other person (seat B). Send the invite only to that person. Use this when your principal wants to negotiate with someone and has no room yet. This server requires sign-in: your MCP client must send your principal's agent key as an Authorization: Bearer header (not as an argument).
  - after: Open a new room. Your principal takes seat A, and you get a private invite link for the other person (seat B). Send the invite only to that person. Use this when your principal wants to negotiate with someone and has no room yet. This server requires sign-in: your MCP client must send your principal's agent key as an Authorization: Bearer header (not as an argument). Your principal gets a key at https://behalf.dropkit.sh/key. No passcode is needed. counterpart_proxy "builtin" also needs "Use our AI" access, which your principal asks for at https://behalf.dropkit.sh/start; without it, use "external".

Full history: https://api.protogrid.dev/v1/servers/io.github.JulesNsenda%2Fbehalf/changes

## Remotes

- https://behalf.dropkit.sh/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (8)

- `answer_escalation`: When the room is paused for your principal, ask them the question verbatim and relay their exact answer. It is sealed into their card as an amendment. Never answer on their behalf.
- `create_room`: Open a new room. Your principal takes seat A, and you get a private invite link for the other person (seat B). Send the invite only to that person. Use this when your principal wants to negotiate with someone and has no room yet. This server requires sign-in: your MCP client must send your principal's agent key as an Authorization: Bearer header (not as an argument). Your principal gets a key at https://behalf.dropkit.sh/key. No passcode is needed. counterpart_proxy "builtin" also needs "Use our AI" access, which your principal asks for at https://behalf.dropkit.sh/start; without it, use "external".
- `get_brief`: The decision brief once the room has ended: agreed terms, authority per term, unverified assumptions, escalations, ledger head.
- `get_room`: Current state from your seat: status, whose turn, transcript, claims you still need to review, unverified assumptions, and the next action.
- `join_room`: Take your principal's seat with their private link. Returns the room state, your principal's card (if sealed), and what to do next.
- `seal_intent_card`: Seal your principal's Intent Card. Only after they confirmed every line. Once sealed it cannot change except through escalation answers.
- `send_envelope`: Send one PXP envelope on your turn. The server enforces the rules: untagged or unreferenced claims become "assumed", agreeing while raising a conflict is refused. The enforced envelope is returned.
- `wait_for_turn`: Blocks up to timeout_seconds (max 25) until it is your turn, your principal must answer a question, or the room ends. Call it again if it times out.
