Interact with Alkahest escrow contracts as a buyer, seller, or oracle using the CLI

MITAuto-check passedLegal & Compliance

Install Alkahest User

skills CLI
$ npx skills add internet-court/internet-court-skill --skill alkahest-user -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install internet-court/internet-court-skill alkahest-user --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/vendored/arkhai/alkahest-user .claude/skills/alkahest-user && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
alkahest-user
GitHub stars
6.6k
Used in
1 other repo
Token cost
~2.6k tokens
SKILL.md length
445 words
Files
5 (incl. references)
Skills in repo
80
Repo updated
First seen
Licence
MIT

At a glance

Interact with Alkahest escrow contracts as a buyer, seller, or oracle using the CLI

  • Works in 5 steps: Encode the demand → Create the escrow → Wait for fulfillment → …
  • Tasks that involve Dispute resolution
  • SKILL.md covers What is Alkahest?, Roles, CLI Setup and Buyer Workflow: Create Escrow, plus 10 more sections
  • Calls npm; needs ALKAHEST_PRIVATE_KEY and PRIVATE_KEY

What it does

Alkahest User is an agent skill from internet-court/internet-court-skill. Interact with Alkahest escrow contracts as a buyer, seller, or oracle using the CLI

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/arbiters.md`, `references/contracts.md` and `references/typescript-sdk.md`).

It sits in Legal & Compliance, covering Dispute resolution. It works with Ethereum. The repository describes itself as: The trust layer for agent-to-agent commerce — natural-language mandates, ERC-7710 delegated permissions, x402 payments, escrow, and dispute resolution as one open, catch-all… The licence is MIT.

When your agent uses it

  • Tasks that involve Dispute resolution

Example prompts

  • “/alkahest-user”

Requirements

  • Node.js
  • A credential in ALKAHEST_PRIVATE_KEY
  • A credential in PRIVATE_KEY

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Encode the demand
  2. Create the escrow
  3. Wait for fulfillment
  4. Reclaim expired escrow (if unfulfilled)
  5. Get escrow details

What it can do on your machine

Read from SKILL.md and the folder at commit fa89195. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • ALKAHEST_PRIVATE_KEY
    • PRIVATE_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Alkahest User loads about 2.6k tokens when it runs, and up to ~10k if it reads all its reference files. Until then it costs about 24 tokens; SKILL.md has 445 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~10k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from internet-court/internet-court-skill at commit fa89195, republished under its MIT licence (© internet-court). 445 words, ~2,596 tokens.

Download SKILL.mdSave it as .claude/skills/alkahest-user/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
alkahest-user
description
Interact with Alkahest escrow contracts as a buyer, seller, or oracle using the CLI

Alkahest User Skill

What is Alkahest?

Alkahest is an EAS-based (Ethereum Attestation Service) escrow protocol for trustless exchanges on EVM chains. It enables:

  • Token escrow with programmable release conditions (ERC20, ERC721, ERC1155, native tokens, bundles)
  • Arbiter-based validation — release conditions are defined by arbiter contracts that check fulfillment
  • Composable demands — combine multiple conditions with AND/OR logic
  • Oracle arbitration — off-chain validation with on-chain decision submission
  • Commit-reveal — frontrunning protection for self-contained fulfillment data

Supported chains: Base Sepolia, Sepolia, Ethereum mainnet.

Roles

RoleDescription
BuyerCreates escrow with assets + demand (what they want in return)
SellerFulfills the demand to collect escrowed assets
OracleValidates fulfillment and submits on-chain decisions (for TrustedOracleArbiter)

CLI Setup

Install globally via npm install -g alkahest-cli, then run commands with:

bash
alkahest [global-flags] <command> <subcommand> [options]
Authentication

Provide a wallet via one of (in priority order):

MethodFlag / Env Var
Private key flag--private-key 0x...
Mnemonic flag--mnemonic "word1 word2 ..."
Ledger USB--ledger [--ledger-path <path>]
Private key envALKAHEST_PRIVATE_KEY=0x...
Mnemonic envALKAHEST_MNEMONIC="word1 word2 ..."
Compat envPRIVATE_KEY=0x...
Global Flags
--chain <name>          base-sepolia (default) | sepolia | ethereum
--rpc-url <url>         Custom RPC URL (overrides chain default)
--human                 Human-readable output (default: JSON)
Output Format

JSON by default (ideal for programmatic/agent use). All BigInts are serialized as strings.

json
{ "success": true, "data": { "hash": "0x...", "uid": "0x..." } }
{ "success": false, "error": { "code": "ESCROW_CREATE_FAILED", "message": "..." } }

Use --human for labeled, indented output.

Buyer Workflow: Create Escrow

1. Encode the demand

First, encode the demand data that specifies your release condition:

bash
# Trusted oracle demand — oracle must approve fulfillment
alkahest arbiter encode-demand \
  --type trusted-oracle \
  --oracle 0xORACLE_ADDRESS \
  --data 0x
# Returns: { "success": true, "data": { "encoded": "0x..." } }
2. Create the escrow

Use the --arbiter address and the encoded --demand hex from step 1:

bash
# ERC20 escrow with auto-approve
alkahest --private-key 0xKEY escrow create \
  --erc20 \
  --token 0xTOKEN_ADDRESS \
  --amount 1000000000000000000 \
  --arbiter 0xARBITER_ADDRESS \
  --demand 0xENCODED_DEMAND \
  --expiration 1735689600 \
  --approve

# ERC721 escrow
alkahest --private-key 0xKEY escrow create \
  --erc721 \
  --token 0xNFT_ADDRESS \
  --token-id 42 \
  --amount 0 \
  --arbiter 0xARBITER_ADDRESS \
  --demand 0xENCODED_DEMAND \
  --expiration 1735689600 \
  --approve

# Native token (ETH) escrow — no approve needed
alkahest --private-key 0xKEY escrow create \
  --native \
  --token 0x0000000000000000000000000000000000000000 \
  --amount 500000000000000000 \
  --arbiter 0xARBITER_ADDRESS \
  --demand 0xENCODED_DEMAND \
  --expiration 1735689600

Returns { "success": true, "data": { "hash": "0x...", "uid": "0x...", ... } }. Save the uid — this is the escrow UID.

3. Wait for fulfillment
bash
alkahest --private-key 0xKEY escrow wait \
  --erc20 --uid 0xESCROW_UID
# Blocks until fulfilled. Returns: { payment, fulfillment, fulfiller }
4. Reclaim expired escrow (if unfulfilled)
bash
alkahest --private-key 0xKEY escrow reclaim \
  --erc20 --uid 0xESCROW_UID
5. Get escrow details
bash
alkahest --private-key 0xKEY escrow get \
  --erc20 --uid 0xESCROW_UID

Seller Workflow: Fulfill Escrow

Using StringObligation (off-chain validated work)
bash
# 1. Create fulfillment referencing the escrow
alkahest --private-key 0xKEY string create \
  --item "Here is my completed deliverable" \
  --ref-uid 0xESCROW_UID
# Returns: { uid: "0xFULFILLMENT_UID", ... }

# 2. If escrow uses TrustedOracleArbiter, oracle arbitrates
alkahest --private-key 0xORACLE_KEY arbiter arbitrate \
  --obligation 0xFULFILLMENT_UID \
  --demand 0xDEMAND_HEX \
  --decision true

# 3. Collect the escrow
alkahest --private-key 0xSELLER_KEY escrow collect \
  --erc20 \
  --escrow-uid 0xESCROW_UID \
  --fulfillment-uid 0xFULFILLMENT_UID
Using barter (token-for-token swap)
bash
# Create a barter offer: bid ERC20 for ERC20
alkahest --private-key 0xKEY barter create \
  --bid-type erc20 --ask-type erc20 \
  --bid-token 0xBID_TOKEN --bid-amount 1000000000000000000 \
  --ask-token 0xASK_TOKEN --ask-amount 2000000000000000000 \
  --expiration 1735689600 \
  --approve

# Counterparty fulfills the barter
alkahest --private-key 0xCOUNTERPARTY_KEY barter fulfill \
  --uid 0xBARTER_UID \
  --bid-type erc20 --ask-type erc20 \
  --approve

Supported barter pairs: erc20/erc20, erc20/erc721, erc20/erc1155. --permit is only supported when fulfilling an ERC20 ask.

Show full SKILL.md (169 more words)Show less

Oracle Workflow: Arbitrate

bash
# Approve a fulfillment
alkahest --private-key 0xORACLE_KEY arbiter arbitrate \
  --obligation 0xFULFILLMENT_UID \
  --demand 0xDEMAND_HEX \
  --decision true

# Reject a fulfillment
alkahest --private-key 0xORACLE_KEY arbiter arbitrate \
  --obligation 0xFULFILLMENT_UID \
  --demand 0xDEMAND_HEX \
  --decision false

For auto-arbitration (listening for requests and auto-deciding), use the TypeScript SDK directly — see references/typescript-sdk.md.

Commit-Reveal Workflow

Use commit-reveal when fulfillment data is self-contained (e.g., a string answer) to prevent frontrunning.

bash
# 1. Compute commitment hash
alkahest --private-key 0xKEY commit-reveal compute-commitment \
  --ref-uid 0xESCROW_UID \
  --claimer 0xSELLER_ADDRESS \
  --payload 0xPAYLOAD_HEX \
  --salt 0xSALT_HEX \
  --schema 0xSCHEMA_UID
# Returns: { commitment: "0x..." }

# 2. Commit (sends bond as ETH)
alkahest --private-key 0xKEY commit-reveal commit \
  --commitment 0xCOMMITMENT_HASH \
  --bond-amount 10000000000000000

# 3. Wait at least 1 block, then reveal
alkahest --private-key 0xKEY commit-reveal reveal \
  --payload 0xPAYLOAD_HEX \
  --salt 0xSALT_HEX \
  --schema 0xSCHEMA_UID \
  --ref-uid 0xESCROW_UID
# Returns: { uid: "0xOBLIGATION_UID", ... }

# Check deadline and slashed bond recipient
alkahest --private-key 0xKEY commit-reveal info

# Slash an unrevealed commitment's bond
alkahest --private-key 0xKEY commit-reveal slash-bond \
  --commitment 0xCOMMITMENT_HASH

Encoding Demands

The arbiter encode-demand command encodes demand data for any arbiter type:

bash
# Trusted oracle
alkahest arbiter encode-demand --type trusted-oracle \
  --oracle 0xORACLE --data 0x

# Attestation property arbiters
alkahest arbiter encode-demand --type recipient --recipient 0xADDRESS
alkahest arbiter encode-demand --type attester --attester 0xADDRESS
alkahest arbiter encode-demand --type schema --schema 0xSCHEMA_UID
alkahest arbiter encode-demand --type time-after --time 1735689600

# Logical composition (AllArbiter / AnyArbiter)
alkahest arbiter encode-demand --type all \
  --demands '[{"arbiter":"0xARB1","demand":"0xDEM1"},{"arbiter":"0xARB2","demand":"0xDEM2"}]'

alkahest arbiter encode-demand --type any \
  --demands '[{"arbiter":"0xARB1","demand":"0xDEM1"},{"arbiter":"0xARB2","demand":"0xDEM2"}]'

Available --type values: trusted-oracle, all, any, recipient, attester, schema, uid, ref-uid, revocable, time-after, time-before, time-equal, expiration-time-after, expiration-time-before, expiration-time-equal.

Decoding demands
bash
alkahest arbiter decode-demand \
  --arbiter 0xARBITER_ADDRESS \
  --demand 0xENCODED_HEX

Confirmation Arbiters

For manual buyer-side approval of fulfillments:

bash
# Confirm a fulfillment
alkahest --private-key 0xBUYER_KEY arbiter confirm \
  --fulfillment 0xFULFILLMENT_UID \
  --escrow 0xESCROW_UID \
  --type exclusive-revocable

# Revoke confirmation (revocable variants only)
alkahest --private-key 0xBUYER_KEY arbiter revoke \
  --fulfillment 0xFULFILLMENT_UID \
  --escrow 0xESCROW_UID \
  --type exclusive-revocable

Types: exclusive-revocable, exclusive-unrevocable, nonexclusive-revocable, nonexclusive-unrevocable.

Payments

bash
# ERC20 payment with auto-approve
alkahest --private-key 0xKEY payment pay \
  --erc20 \
  --token 0xTOKEN --amount 1000000000000000000 \
  --payee 0xRECIPIENT \
  --approve

# Native token payment
alkahest --private-key 0xKEY payment pay \
  --native \
  --token 0x0000000000000000000000000000000000000000 \
  --amount 500000000000000000 \
  --payee 0xRECIPIENT

# Get payment details
alkahest --private-key 0xKEY payment get --erc20 --uid 0xUID

Attestations

bash
# Get raw attestation by UID
alkahest --private-key 0xKEY attestation get --uid 0xUID

# Decode attestation data by type
alkahest --private-key 0xKEY attestation decode \
  --uid 0xUID --type erc20-escrow

Decode types: erc20-escrow, erc20-payment, erc721-escrow, erc721-payment, erc1155-escrow, erc1155-payment, string, commit-reveal.

Configuration

bash
# Show contract addresses for a chain
alkahest config show --chain base-sepolia

# List supported chains
alkahest config chains

Escrow Types

TypeFlagKey options
ERC20--erc20--token, --amount
ERC721--erc721--token, --token-id
ERC1155--erc1155--token, --token-id, --amount
Native Token--native--amount
Token Bundle--bundle(SDK only for create)

All escrow types share the same workflow: create -> wait -> collect (or reclaim if expired).

Additional Resources

  • See references/typescript-sdk.md for TypeScript SDK usage (complex workflows, auto-arbitration, bundle escrows)
  • See references/contracts.md for all contract addresses and obligation data schemas
  • See references/arbiters.md for all arbiter types and demand encoding patterns

© internet-court, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in vendored/arkhai/alkahest-user of internet-court/internet-court-skill.

  • SKILL.md
  • LICENSE
  • references/arbiters.md
  • references/contracts.md
  • references/typescript-sdk.md

Open the folder on GitHubat commit fa89195

Used in 1 other repository

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in internet-court/internet-court-skill, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Alkahest User next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Alkahest User compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Alkahest User this skillinternet-court/internet-court-skill6.6k1 repos~2.6kAutomated safety check: PassMIT
Litigation Deadline Calendarlawve-ai/awesome-legal-skills847—~4.3kAutomated safety check: PassMIT
Moot Court Simulation Buildercat-xierluo/legal-skills721—~1.4kAutomated safety check: PassCC-BY-NC-4.0
Intake To Draftstella/stella259—~537Automated safety check: PassApache-2.0
Finnish Legal Matter Intakeakunikkola/claude-for-legal-finland109—~2.1kAutomated safety check: PassMIT
Review SwarmSteelMorgan/1c-agent-based-dev-framework115—~7.9kAutomated safety check: PassCustom licence

Similar skills

  • Litigation Deadline Calendar

    lawve-ai/awesome-legal-skills

    Calendar litigation and arbitration deadlines from a scheduling order.

    847 GitHub stars~4.3k tokensUpdated 8 days ago
    Legal & ComplianceAuto-check passed
  • Moot Court Simulation Builder

    cat-xierluo/legal-skills

    Chinese-language skill that organizes a case file into a multi-role mock trial with judge, parties and clerk, producing a transcript, issue review and a to-strengthen list.

    721 GitHub stars~1.4k tokensUpdated yesterday
    Legal & ComplianceAuto-check passed
  • Intake To Draft

    stella/stella

    Collects the facts of an unpaid invoice, then drafts a payment demand letter.

    259 GitHub stars~537 tokensUpdated today
    Legal & ComplianceAuto-check passed
  • Finnish Legal Matter Intake

    akunikkola/claude-for-legal-finland

    Starts a new Finnish legal matter by scanning documents for deadlines first, then summarizing parties and goals, interviewing for missing details and setting up a case workspace.

    109 GitHub stars~2.1k tokensUpdated 3 mo ago
    Legal & ComplianceAuto-check passed
  • Review Swarm

    SteelMorgan/1c-agent-based-dev-framework

    MUST use WHEN a code diff needs second-opinion or multi-model review: light tier = one eligible independent cross-family reviewer selected from enabled participants outside the caller family (also…

    115 GitHub stars~7.9k tokensUpdated 11 days ago
    Legal & ComplianceAuto-check passed
  • Persistence State

    AbdelStark/worldforge

    A skill your agent uses for WorldForge local state: run workspaces and artifacts under .worldforge/ (run manifests, evidence bundles, retention/prune), the WorldForge(statedir=...) directory, and…

    108 GitHub stars~921 tokensUpdated 22 days ago
    Legal & ComplianceAuto-check passed

More from internet-court/internet-court-skill

All 80 skills in this repo
  • Kleros IPFS Upload

    internet-court/internet-court-skill

    Uploads one Kleros-related file per paid request to IPFS through the Kleros x402 gateway for 0.01 USDC on Base, returning a CID that Kleros contracts can reference.

    6.6k GitHub stars~4.9k tokensUpdated 1 mo ago
    Auto-check: notes
  • 0G Compute Network Guide

    internet-court/internet-court-skill

    Guides building on the 0G Compute Network, a decentralized GPU marketplace for AI inference and fine-tuning, with SDK patterns and CLI commands.

    6.6k GitHub starsUsed in 1 repo~1.9k tokens
    Auto-check passed
  • PNP Prediction Markets on Solana

    internet-court/internet-court-skill

    Creates, trades and settles permissionless prediction markets on Solana with any SPL token as collateral, including social-media and custom-oracle markets.

    6.6k GitHub stars~7.5k tokensUpdated 1 mo ago
    Auto-check: notes
  • BNB Chain MCP Server

    internet-court/internet-court-skill

    Connects an agent to the BNB Chain MCP server to read blocks and contracts, move tokens and NFTs, register ERC-8004 agents and use Greenfield storage.

    6.6k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • GenLayer ERC-7710 Connector

    internet-court/internet-court-skill

    Specifies how a GenLayer Intelligent Contract decision about an agent's performance becomes an ERC-7710 revocation or policy change, through a relayer or bridge and an EVM controller.

    6.6k GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • GenLayer Agent Supervision Adapter

    internet-court/internet-court-skill

    Specifies how a GenLayer Intelligent Contract should supervise an AI agent, with review rubrics, evidence schemas and continue, warn, constrain or revoke decisions.

    6.6k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed

Works with

Questions about Alkahest User

What does Alkahest User do?

Interact with Alkahest escrow contracts as a buyer, seller, or oracle using the CLI. Alkahest User is an agent skill from internet-court/internet-court-skill.

When should I use Alkahest User?

Alkahest User fits situations like: tasks that involve Dispute resolution.

How do I install Alkahest User in Claude Code?

Run `npx skills add internet-court/internet-court-skill --skill alkahest-user -a claude-code`. Or copy the skill folder (vendored/arkhai/alkahest-user in internet-court/internet-court-skill) into .claude/skills/alkahest-user in your project. Claude Code loads it when a task matches its description.

How do I install Alkahest User in Codex?

Run `npx skills add internet-court/internet-court-skill --skill alkahest-user -a codex`. Or copy the skill folder (vendored/arkhai/alkahest-user in internet-court/internet-court-skill) into .agents/skills/alkahest-user in your project. Codex loads it when a task matches its description.

Can I use Alkahest User in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add internet-court/internet-court-skill --skill alkahest-user -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/alkahest-user, .gemini/skills/alkahest-user, .github/skills/alkahest-user and .opencode/skills/alkahest-user in your project.

What does Alkahest User need to run?

Going by SKILL.md and its folder, Alkahest User needs the command-line tools its instructions call (npm) and credentials named ALKAHEST_PRIVATE_KEY and PRIVATE_KEY. Our summary lists: Node.js; A credential in ALKAHEST_PRIVATE_KEY; A credential in PRIVATE_KEY.

Does Alkahest User access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Alkahest User safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Alkahest User use?

Alkahest User is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Alkahest User use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.6k tokens, read only when the agent opens those files.

What are the alternatives to Alkahest User?

Skills that share tags, products or a category with Alkahest User: Litigation Deadline Calendar (lawve-ai/awesome-legal-skills, 847 stars), Moot Court Simulation Builder (cat-xierluo/legal-skills, 721 stars), Intake To Draft (stella/stella, 259 stars) and Finnish Legal Matter Intake (akunikkola/claude-for-legal-finland, 109 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Alkahest User?

internet-court (a GitHub organization) maintains it in internet-court/internet-court-skill, which has 6,551 GitHub stars. The repository holds 80 skills in this directory. The repository was last updated on August 19, 2026.

Source: internet-court/internet-court-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.