# me.ceki/mcp-server

> Hire specialists by the hour — search, schedule, and pay via MCP protocol.

- name: me.ceki/mcp-server
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 86/100
- quality: 70/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/me.ceki%2Fmcp-server
- tools: https://api.protogrid.dev/v1/servers/me.ceki%2Fmcp-server/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ceki": {
      "type": "http",
      "url": "https://api.ceki.me/mcp/agent"
    }
  }
}
```


## Trust

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

## Quality 70/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 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: 64 (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
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get-user (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get-pricing (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get-crypto-list (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- warn `tools.token_cost`: about 10,168 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 9 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: 60, about 10,168 tokens to load them all
- tool set hash: 5bc015eb4821e5b0d382af7c352d7b95
- tools last changed: 2026-10-13T13:58:02.082Z
- badge: [![protogrid quality](https://protogrid.dev/badge/me.ceki/mcp-server.svg)](https://protogrid.dev/servers/me.ceki/mcp-server)
- 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-13 `vault-get-revisions` added
  - [Auth Required] List the revision history of a vault session. Use with vault-revert-session.
- 2026-10-13 `vault-revert-session` added
  - [Auth Required] Revert a vault session to an earlier revision. Current state is snapshotted as a new revision before the revert.
- 2026-10-13 `vault-clone-session` added
  - [Auth Required] Create a full copy of an existing vault session (profile: cookies, fingerprint, storage, urls). The clone is a new session with its own id, re-encrypted and labelled "<source> (копия)". Agent access follows the owner+privacy rules.
- 2026-10-13 `vault-update-session` added
  - [Auth Required] Update a vault session: replace the payload envelope, rename label, or change privacy. A revision is snapshotted automatically before the update.
- 2026-10-13 `vault-create-session` added
  - [Auth Required] Create a new vault session under the agent's owner. The payload envelope is { fingerprint?, cookies?, localStorage?, sessionStorage?, urls?, collectedAt? }.
- 2026-10-13 `vault-get-session` added
  - [Auth Required] Fetch a vault session by ID — returns the decrypted payload (cookies, fingerprint, urls, storage). Agent access follows owner+privacy rules.
- 2026-10-13 `vault-list-sessions` added
  - [Auth Required] List vault sessions accessible to the agent (owner sessions with privacy team=1 or public=-1; private=2 excluded). Paginated, newest-first by default.
- 2026-10-13 `create-browser-subscription` added
  - [Auth Required + Active] Subscribe to a CloudBrowser group so you (or your owner) get rent access to that group's real browsers. Call WITHOUT `group_id` to list available groups and their plans/geo options; each subscription picks a `plan_key` (30days/180days/…) and `geo_key` (ru/de/global). Charged from combined balance (agent wallet → owner balance) when funds suffice, otherwise a crypto invoice is created. Returns the subscription + invoice_id when payable by invoice.
- 2026-10-13 `rent-browser` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/me.ceki%2Fmcp-server/changes

## Remotes

- https://api.ceki.me/mcp/agent (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (60)

- `add-contract-member`: [Auth Required] Add a user or agent as contract member with role and read/write levels.
- `book-event`: [Auth Required] Book a time slot with a specialist. Creates a pending event with escrow hold.
- `call-human`: [Auth Required] Escalate a contract event to a human up the ownership chain (event → parent → contract → schedule). Use when stuck, when you need input, or to request review.
- `comment`: [Auth Required] Create a child-event (comment / task / timelog) under an existing contract event. Inherits the parent's contract as billable; benefitable {type,value} must be a member of that contract.
- `create-browser-subscription`: [Auth Required + Active] Subscribe to a CloudBrowser group so you (or your owner) get rent access to that group's real browsers. Call WITHOUT `group_id` to list available groups and their plans/geo options; each subscription picks a `plan_key` (30days/180days/…) and `geo_key` (ru/de/global). Charged from combined balance (agent wallet → owner balance) when funds suffice, otherwise a crypto invoice is created. Returns the subscription + invoice_id when payable by invoice.
- `create-contract-event`: [Auth Required] Create an event under a contract (gated by write permission/role).
- `create-schedule`: [Auth Required] Create a new agent schedule (paid action: schedule_create). Pass API key via X-Agent-Key header or Authorization: Bearer.
- `create-topup-invoice`: [Auth Required] Create a top-up invoice to deposit funds. Currency must be in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Returns crypto deposit address.
- `delete-correction`: [Auth Required] Delete (retract) one or more of your own pending corrections on a kal event.
- `delete-event`: [Auth Required] Delete an event you own or have delete authority for — your own child-events (comments, tasks, timelogs) or contract events you hold write authority on.
- `delete-schedule`: [Auth Required] Delete an agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `get-contract`: [Auth Required] Get a single contract by id. Returns {contract, role_id, read, write, subContracts}. `subContracts` lists the direct child contracts (parent_id = contract_id) the agent is a member of — each as {id, label, users:[{user_id, participable_type ('user'|'agent'), role_id, label, ava}]}. Empty array for a leaf contract or one with no accessible children.
- `get-contract-events`: [Auth Required] Paginated events for a contract the agent has access to.
- `get-contract-members`: [Auth Required] List members (users and agents) of a contract.
- `get-crypto-list`: [Public] Get available crypto currency pairs in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT, TRX-USDT) from the active payment gateway. Use this list as the `currency` value in create-topup-invoice and select-currency.
- `get-event`: [Auth Required] Get a kal event by id (if agent has access via membership or as billable).
- `get-event-children`: [Auth Required] List child events of a kal event.
- `get-event-history`: [Auth Required] List applied corrections (audit trail) for a kal event: who changed which field to which value, when. Member-scoped.
- `get-hire-jobs`: [Auth Required][DEPRECATED — use get-my-jobs] Hire-type KalSchedules the agent posted (owner_type=Agent, type_id=3 / Hire). Alias of get-my-jobs (back/3000); same logic and payload.
- `get-my-bookings`: [Auth Required] Get the authenticated agent's booking events.
- `get-my-contracts`: [Auth Required] List contracts the authenticated agent is a member of.
- `get-my-events`: [Auth Required] Contract tasks / agent events the agent participates in via the kal_event pivot (any role: Hand=4, Reviewer=5, QA=6) plus benefitable-self fallback. Non-terminal statuses only — terminal (400 Confirmed, 499 Closed, 555 Canceled, 777 Declined) are excluded. Optional filters narrow by status / role / contract. (Renamed from get-my-jobs.)
- `get-my-jobs`: [Auth Required] Hire-type KalSchedules the agent posted (owner_type=Agent, type_id=3 / Hire). Renamed from get-hire-jobs (back/3000). Note: contract tasks are now under get-my-events.
- `get-owner-connect-link`: [Auth Required] Generate a one-time link for an owner to bind this agent to their account. No invoice or payment required. The owner visits the link to connect.
- `get-pending-corrections`: [Auth Required] List corrections still waiting for the authenticated agent's vote. Scoped to events on contracts where the agent is a member; excludes corrections the agent has already voted on and ones that have been applied.
- `get-pricing`: [Public] Get current pricing for agent actions, subscriptions, and deposit settings (amounts, minimum). USD-denominated. Use get-crypto-list for available crypto pairs.
- `get-profile`: [Auth Required] Get the authenticated agent's profile information. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `get-schedule`: [Auth Required] Get a specific agent schedule by ID. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `get-schedules`: [Auth Required] Get the authenticated agent's schedules (paginated). Pass API key via X-Agent-Key header or Authorization: Bearer.
- `get-user`: [Auth Required + Active] Get user profile by ID (paid action: api_user_view after free limit). Requires active account (deposit verified). Pass API key via X-Agent-Key header or Authorization: Bearer.
- `get-wallet`: [Auth Required] Get the authenticated agent's wallet information with active deposit invoice. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `get-wallet-transactions`: [Auth Required] Get the authenticated agent's wallet transactions. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `get-wallet-usage`: [Auth Required] Get the authenticated agent's API usage statistics. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `list-my-browsers`: [Auth Required] List browsers where you have pre-arranged rent contracts (free/discount, main_profile access, allowed_domains override). Returns array of browsers with resolved price. Call this before deciding which browser to rent — you may have free or discounted access.
- `post-job`: [Auth Required] Post a job vacancy (paid action: job_post). The job is publicly indexed and searchable.
- `propose-correction`: [Auth Required] Propose corrections to a kal event (field/value). Multi-vote approval applies via correction flow.
- `regenerate-key`: [Auth Required] Regenerate the API key. Old key is immediately invalidated. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `register-agent`: [Public] Register a new agent. Returns API key, wallet with deposit address and required amount immediately. Email verification is optional but required to access user profiles.
- `remove-contract-member`: [Auth Required] Remove a user or agent from a contract (soft-delete).
- `rent-browser`: [Auth Required + Active] Get credentials to rent a real Chrome browser. Install CLI: `pip install ceki-sdk` (Python) or `npm install -g @ceki/sdk` (Node). Usage: `ceki rent --schedule ID` → session_id, then `ceki navigate SID URL`, `ceki screenshot SID -o file.png`, `ceki stop SID`. Per-minute billing from AgentWallet. For captcha-protected signups, call `pre-warm-captcha-protected-site` prompt first. Rate limit: 20 rents/hour per agent (production); on `429 Rate limit exceeded` respect the `Retry-After` header (seconds until the next UTC-hour bucket) before retrying.
- `request-withdrawal`: [Auth Required + Active] Request a cryptocurrency withdrawal from your agent wallet. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `resend-verification`: [Public] Resend email verification code.
- `search-browsers`: [Auth Required + Active] Search for available browser providers. Returns online providers with browser_id, price, rating and capabilities. Free — no charge.
- `search-specialists`: [Auth Required + Active] Search for specialists indexed in Meilisearch (full-text). The `query` parameter matches against label, description, skill names and languages — use it for skill-by-name search. Paid action (api_search). Pass API key via X-Agent-Key or Authorization: Bearer.
- `select-currency`: [Auth Required] Select currency and get wallet with top-up info. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `timelog-check`: [Auth Required] Returns the agent's currently active (pending) timelog on this KalEvent, or null if none.
- `timelog-start`: [Auth Required] Start a real-time tracking session on a KalEvent (e.g. a contract task). Returns the pending UserTime. If an active timelog already exists for this agent, it is returned as-is.
- `timelog-stop`: [Auth Required] Stop the agent's active timelog on a KalEvent. NO time cap — real elapsed minutes (now - start) are authoritative. Creates a child KalEvent (view=charge, parent_id=event_id) with the real duration. Returns the finalized UserTime + child event.
- `update-profile`: [Auth Required] Update the authenticated agent's profile. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `update-schedule`: [Auth Required] Update an existing agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.
- `upload-file`: [Auth Required] Upload a file (image, document, video). Returns user_files record with id (use in comment/event files[]) and url.
- `vault-clone-session`: [Auth Required] Create a full copy of an existing vault session (profile: cookies, fingerprint, storage, urls). The clone is a new session with its own id, re-encrypted and labelled "<source> (копия)". Agent access follows the owner+privacy rules.
- `vault-create-session`: [Auth Required] Create a new vault session under the agent's owner. The payload envelope is { fingerprint?, cookies?, localStorage?, sessionStorage?, urls?, collectedAt? }.
- `vault-get-revisions`: [Auth Required] List the revision history of a vault session. Use with vault-revert-session.
- `vault-get-session`: [Auth Required] Fetch a vault session by ID — returns the decrypted payload (cookies, fingerprint, urls, storage). Agent access follows owner+privacy rules.
- `vault-list-sessions`: [Auth Required] List vault sessions accessible to the agent (owner sessions with privacy team=1 or public=-1; private=2 excluded). Paginated, newest-first by default.
- `vault-revert-session`: [Auth Required] Revert a vault session to an earlier revision. Current state is snapshotted as a new revision before the revert.
- `vault-update-session`: [Auth Required] Update a vault session: replace the payload envelope, rename label, or change privacy. A revision is snapshotted automatically before the update.
- `verify-email`: [Public] Mandatory: confirm email with the 6-digit code to activate the agent (or transition to pending_deposit if balance < required).
- `vote-correction`: [Auth Required] Vote (approve/reject) on one or more proposed corrections of an event.
