$ agentcorp init --type=delaware-series-llc --agent=0x4a9f...

Agents that incorporate
themselves.

AgentCorp is on-chain legal infrastructure for autonomous agents. An agent reads the skill file, deposits USDC, and mints a Delaware Series LLC \u2014 with governing documents stored on Arweave, a multisig treasury on Base, and full legal liability protection. No lawyers. No humans required.

Mint an Entity \u2192
1 fileTo integrate
~30sAgent mint time
Any LLMFramework support
MITLicense
01

How agent minting works

01

Point Agent at SKILL.md

Drop AGENTCORP-SKILL.md into your agent's skill directory or paste it into your system prompt. The agent learns the protocol: entity types, fees, function signatures, and document schema.

02

Agent Generates Documents

The agent populates the legal document templates with entity name, member addresses, treasury, and governance parameters. Documents are uploaded to Arweave — the TX ID becomes the on-chain record.

03

Agent Calls mintEntity()

The agent constructs the mintEntity() calldata with the correct EntityType enum, Arweave doc hash, treasury address, and ETH value. It signs and broadcasts on Base Mainnet.

04

Entity NFT Minted

The EntityMinted event fires. The agent receives the token ID and stores it. Your legal entity is now live on Base — the NFT is the entity, held in your wallet or the agent's custody wallet.

02

Framework integration

AI Agent Platform

Manus

Drop the SKILL.md into your Manus agent's skill directory. The agent will automatically discover the protocol, understand entity types, and call mintEntity() on your behalf.

1Copy AGENTCORP-SKILL.md to your agent's /skills/ directory
2Agent reads the skill and understands the protocol interface
3Instruct: "Mint a Delaware Series LLC named Acme Holdings LLC with treasury 0x..."
4Agent constructs the transaction, uploads docs to Arweave, calls mintEntity()
5Entity NFT minted to your wallet — you receive the token ID
03

Code examples

Agent Prompt (Natural Language)

What you say to your agent:

Agent Instruction
Incorporate a Delaware Series LLC named "Acme Holdings LLC".
Use my Gnosis Safe 0xABC...123 as the treasury.
Set governance to multisig 2-of-3.
Add initial members: 0xDEF...456, 0x789...ABC.
Mint on Base Mainnet and return the token ID.

Mint a Series Under Parent LLC

Agent instruction for Series minting:

Series Instruction
Under parent LLC token #42, mint a new Series named
"AgEnergy Hawaii Biochar 2026".
Purpose: Hold biochar carbon credits from 2026 production.
Series treasury: 0x111...222
This Series will hold carbon credit batch VCS-2026-HI-001.

TypeScript / viem Integration

Direct contract call from your agent:

TypeScript + viem
import { createWalletClient, parseEther } from "viem";
import { base } from "viem/chains";

// EntityType enum (from AGENTCORP-SKILL.md)
const EntityType = {
  DELAWARE_LLC: 0,
  DELAWARE_SERIES_LLC: 1,
  SERIES_DESIGNATION: 2,
  DAO_CHARTER: 3,
} as const;

// 1. Upload docs to Arweave, get TX ID
const arweaveTxId = await uploadToArweave(documents);
const docHash = toBytes32(arweaveTxId);

// 2. Call mintEntity on Base
const txHash = await walletClient.writeContract({
  address: AGENTCORP_FACTORY,
  abi: AgentCorpABI,
  functionName: "mintEntity",
  args: [
    EntityType.DELAWARE_SERIES_LLC,
    "Acme Holdings LLC",
    docHash,
    treasuryAddress,
    "0x", // kycAttestation (optional)
  ],
  value: parseEther("0.05"), // mint fee
  chain: base,
});

// 3. Parse EntityMinted event for token ID
const receipt = await publicClient.waitForTransactionReceipt(
  { hash: txHash }
);
const tokenId = parseEntityMintedEvent(receipt);
console.log(`Entity minted: token #${tokenId}`);

Python / web3.py Integration

For Python-based agents (LangChain, CrewAI, custom):

Python + web3.py
from web3 import Web3
from eth_account import Account

# Connect to Base Mainnet
w3 = Web3(Web3.HTTPProvider("https://mainnet.base.org"))

# EntityType enum (from AGENTCORP-SKILL.md)
ENTITY_TYPES = {
    "DELAWARE_LLC": 0,
    "DELAWARE_SERIES_LLC": 1,
    "SERIES_DESIGNATION": 2,
    "DAO_CHARTER": 3,
}

# 1. Upload docs to Arweave
arweave_tx_id = upload_to_arweave(governing_documents)
doc_hash = bytes.fromhex(arweave_tx_id.ljust(64, '0'))

# 2. Build transaction
contract = w3.eth.contract(
    address=AGENTCORP_FACTORY,
    abi=AGENTCORP_ABI
)

tx = contract.functions.mintEntity(
    ENTITY_TYPES["DELAWARE_SERIES_LLC"],
    "Acme Holdings LLC",
    doc_hash,
    treasury_address,
    b""  # kycAttestation
).build_transaction({
    "from": agent_wallet,
    "value": w3.to_wei(0.05, "ether"),
    "gas": 300000,
    "nonce": w3.eth.get_transaction_count(agent_wallet),
})

# 3. Sign and send
signed = w3.eth.account.sign_transaction(tx, private_key)
tx_hash = w3.eth.send_raw_transaction(signed.rawTransaction)
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
print(f"Entity minted: tx {tx_hash.hex()}")
04

The SKILL.md

The AGENTCORP-SKILL.md is a machine-readable protocol specification. It follows the emerging SKILL.md standard — a single Markdown file that gives any AI agent everything it needs to understand and interact with a protocol.

Entity Types
All entity types, mint prices, included documents, and use cases
Smart Contract Interface
Function signatures, parameters, return values, and error codes
Document Schema
JSON manifest structure for governing document uploads
Template Variables
All auto-populated fields and their data sources
Governance Adapters
Gnosis Safe, Compound Governor, and custom governance setup
Fee Schedule
ETH amounts for every protocol action
Raw URL ↗
AGENTCORP-SKILL.md432 lines · MIT License
# AGENTCORP SKILL.md

> Protocol: AGENTCORP — On-Chain Legal Infrastructure
> Version: 1.0 | Chain: Base (Chain ID 8453)
> License: MIT | Docs: docs.agentcorp.xyz

## Overview

AGENTCORP is an NFT-native legal entity formation
protocol deployed on Base. It enables any wallet to
mint legally-recognized entities as ERC-721 tokens.

Core Principle: The NFT IS the legal entity.

| Action         | Legal Meaning         |
|----------------|-----------------------|
| mintEntity()   | Incorporate           |
| transfer()     | Assign / sell entity  |
| burn()         | Dissolve              |
| amendEntity()  | Amend operating agmt  |

## Entity Types

### DELAWARE_SERIES_LLC — 0.05 ETH
Delaware LLC under 6 Del. C. § 18-215
Docs: Certificate of Formation, Operating Agreement

### SERIES_DESIGNATION — 0.02 ETH
Legally-isolated Series under parent LLC
Docs: Series Certificate, Operating Addendum

### DAO_CHARTER — 0.05 ETH
Blockchain-governed LLC with token voting
Docs: DAO Agreement, Vote Delegate Disclosure

## Smart Contract Interface

function mintEntity(
    EntityType entityType,
    string calldata name,
    bytes32 docHash,
    address treasury,
    bytes calldata kycAttestation
) external payable returns (uint256 tokenId);

function mintSeries(
    uint256 parentTokenId,
    string calldata seriesName,
    bytes32 seriesDocHash,
    address seriesTreasury
) external returns (uint256 seriesTokenId);

## Fee Schedule

Mint Delaware LLC       → 0.05 ETH
Mint Series Designation → 0.02 ETH
Mint DAO Charter        → 0.05 ETH
Document Amendment      → 0.01 ETH
Entity Dissolution      → 0.005 ETH

...
04

Gasless via Avocado.

Agents deposit USDC into an Avocado Agentic Wallet at avcd.io. Gas is abstracted. Agents never need ETH. $0.25 USDC covers ~50 protocol interactions.

Deposit USDC

Send USDC to your Avocado wallet on Base. POST /v1/deposit to credit USD balance.

Sign & Broadcast

Sign EIP-712 Cast message. POST /v1/broadcast. Backend sponsors gas, deducts from balance.

Non-Sequential Nonces

avoNonce = -1 always. Parallel execution supported. Batch up to 20 actions per tx.

Auto Gas Bumping

Stuck transactions are automatically resubmitted up to 3 times with higher gas.

avocado_mint.ts · Gasless AgentCorp Mintavcd.io/skill.md ↗
import { privateKeyToAccount } from "viem/accounts";
import { encodeFunctionData, parseEther, keccak256,
         encodePacked, parseUnits } from "viem";

const AVOCADO_API = "https://api.avcd.io";
const USDC = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
const DEPOSITOR = "0xFb653a4061cE35b66e2Ba090Cf1Fabe32f294079";

// 1. Auth header (EIP-712, fresh per request)
async function authHeader(account) {
  const ts = Math.floor(Date.now() / 1000);
  const sig = await account.signTypedData({
    domain: { name: "Avocado-Agentic-Wallet", version: "1.0.0" },
    types: { Authenticate: [
      { name: "agent", type: "address" },
      { name: "timestamp", type: "uint256" },
      { name: "environment", type: "string" },
    ]},
    primaryType: "Authenticate",
    message: { agent: account.address,
               timestamp: BigInt(ts),
               environment: "production" },
  });
  return `Signature ${account.address}:${ts}:${sig}`;
}

// 2. Deposit USDC to fund gas balance
async function depositUsdc(account, amountUsdc = "1.00") {
  const data = encodeFunctionData({
    abi: [{ name: "transfer", type: "function",
      inputs: [{ name: "to", type: "address" },
               { name: "amount", type: "uint256" }],
      outputs: [{ name: "", type: "bool" }],
      stateMutability: "nonpayable" }],
    functionName: "transfer",
    args: [DEPOSITOR, parseUnits(amountUsdc, 6)],
  });
  const body = buildCastBody(USDC, data);
  const res = await fetch(`${AVOCADO_API}/v1/deposit`, {
    method: "POST",
    headers: { "Authorization": await authHeader(account),
               "Content-Type": "application/json" },
    body: JSON.stringify(body),
  });
  return (await res.json()).data;
}

// 3. Broadcast mintEntity() via Avocado (gasless)
async function mintEntityGasless(account, mintCalldata) {
  const body = buildCastBody(AGENTCORP_FACTORY, mintCalldata,
                              parseEther("0.05").toString());
  const res = await fetch(`${AVOCADO_API}/v1/broadcast`, {
    method: "POST",
    headers: { "Authorization": await authHeader(account),
               "Content-Type": "application/json" },
    body: JSON.stringify({ ...body, target_chain_id: 8453 }),
  });
  return (await res.json()).data; // { avocado_tx_hash, status }
}

// 4. Poll for confirmation
async function waitForConfirmation(account, avocadoTxHash) {
  while (true) {
    const res = await fetch(
      `${AVOCADO_API}/v1/transaction/${avocadoTxHash}`,
      { headers: { "Authorization": await authHeader(account) } }
    );
    const { data } = await res.json();
    if (data.status === "success") return data.on_chain_tx_hash;
    if (data.status === "failed") throw new Error("TX failed");
    await new Promise(r => setTimeout(r, 5000)); // poll 5s
  }
}
API Reference · api.avcd.io
GET/v1/agentAgent profile + balance
GET/v1/balanceUSD balance (total/locked/available)
POST/v1/depositDeposit USDC to gas balance
POST/v1/broadcastBroadcast signed transaction
GET/v1/transaction/:hashTransaction status
POST/v1/sponsor/depositDeposit to sponsor balance
Fee Model · Real Transaction
credit:     +$0.250000   USDC deposit confirmed
fee_lock:   -$0.005225   Locked at broadcast
fee_settle: -$0.004204   $0.003503 gas + 20% markup
fee_refund: +$0.001021   Overestimate returned
────────────────────────────────────
final:       $0.245796   (~50 txs per $0.25)
Contracts · Base 8453
AvocadoBroadcaster0x0A6E5E7ae...04dEf
AvoFactory0xe981E50c7...e687
USDC0x833589fCD...2913
avoNonce
Always -1 (non-sequential)
EIP-712 chainId
634 (Avocado), NOT 8453 (Base)
salt
Random 32 bytes per tx
Batch limit
20 actions per transaction
Auth expiry
±5 minutes from server time
Gas sponsorship
Third-party can pay gas via EIP-712 SponsorGas
05

Swarm mode.

Multiple agents. One legal entity. A shared Gnosis Safe treasury. On-chain governance that binds the LLC to the swarm's collective decisions.

Swarm Architecture
SwarmOps Holdings LLC
\u2514\u2500 Treasury: Gnosis Safe 3-of-5
\u2514\u2500 Governance: Token-weighted voting
\u2514\u2500 Members:
\u2514\u2500 Agent-1 (Orchestrator) 0x4a9f...
\u2514\u2500 Agent-2 (Executor) 0x7b2c...
\u2514\u2500 Agent-3 (Auditor) 0x1d8e...
\u2514\u2500 Human-Signer (Override) 0xf3a1...
Series Designations:
\u2514\u2500 Series A: Revenue Operations
\u2514\u2500 Series B: IP Holdings
\u2514\u2500 Series C: Infrastructure
\u2713 All agents funded via Avocado USDC deposit
\u2713 Gas abstracted \u2014 no ETH required
\u2713 Formation time: 28.4s

Shared Legal Entity

All agents in the swarm are members of a single Delaware Series LLC. The entity holds assets, signs contracts, and provides liability protection for the entire swarm.

Multisig Treasury

The Gnosis Safe treasury requires M-of-N agent signatures for any transaction. Spending limits, quorum thresholds, and veto rights are defined in the operating agreement.

Gasless via Avocado

Each agent deposits USDC into an Avocado smart wallet. Gas is abstracted. Agents never need to hold ETH. $50 USDC covers thousands of protocol interactions.

Human Override Key

An optional human signer can be included as a guardian member with veto rights. The LLC operating agreement defines the override conditions and emergency procedures.

Get Started

Your agent is
ready to incorporate.

One file. Any agent. Any LLM. Point your agent at the SKILL.md and it can incorporate a Delaware Series LLC in under 30 seconds.

Developer Docs
agent terminal
$ agent run --skill AGENTCORP-SKILL.md
[AGENTCORP] Skill loaded. Protocol v1.0
[AGENTCORP] Base Mainnet connected (8453)
> Incorporate "Acme Holdings LLC" as Delaware Series LLC
[AGENTCORP] Generating documents...
[AGENTCORP] Uploading to Arweave... tx/abc123
[AGENTCORP] Calling mintEntity() on Base...
[AGENTCORP] ✓ Entity minted: token #1337
[AGENTCORP] ✓ Delaware Series LLC incorporated
[AGENTCORP] ✓ Docs stored: arweave/abc123
Formation time: 28.4s