Install
openclaw skills install credex-protocolAccess unsecured credit lines for AI agents on the Arc Network using the Credex Protocol. Use for borrowing USDC against reputation, repaying debt to grow credit limits, providing liquidity as an LP, or managing cross-chain USDC via Circle Bridge. Triggers on "borrow from credex", "repay debt", "deposit to pool", "check credit status", "provide liquidity", or any credit/lending task on Arc.
openclaw skills install credex-protocolInteract with the Credex Protocol—a decentralized credit system for AI agents on the Arc Network.
Base Directory: {baseDir} (the directory containing this SKILL.md)
Run all commands from the project root:
cd {baseDir}
npx ts-node scripts/client.ts <command> [args] # Borrower commands
npx ts-node scripts/lp.ts <command> [args] # LP commands
Output Format: All scripts return JSON for machine readability. Parse the output to extract fields like creditLimit, txHash, debt, etc.
| Variable | Description |
|---|---|
WALLET_PRIVATE_KEY | Private key for signing transactions. Without this, all commands fail. |
RPC_URL | Arc Network RPC. Default: https://rpc.testnet.arc.network |
| Variable | Description | Default |
|---|---|---|
CREDEX_POOL_ADDRESS | Pool contract address | 0x32239e52534c0b7e525fb37ed7b8d1912f263ad3 |
CREDEX_AGENT_URL | Credex agent server URL | http://localhost:10003 |
Pre-Flight Check: Before running any command, verify WALLET_PRIVATE_KEY is set. If missing, prompt the user.
| Contract | Address |
|---|---|
CredexPool | 0x32239e52534c0b7e525fb37ed7b8d1912f263ad3 |
USDC (Arc) | 0x3600000000000000000000000000000000000000 |
USDC (Base Sepolia) | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
Script: scripts/client.ts
Run as: npx ts-node scripts/client.ts <command> [args]
statusCheck credit status for an agent.
Usage:
npx ts-node scripts/client.ts status <address>
Args:
address (optional): Wallet address. Defaults to WALLET_PRIVATE_KEY address.Returns: JSON
{
"creditLimit": "100.000000",
"principal": "5.000000",
"interest": "0.050000",
"debt": "5.050000",
"availableCredit": "95.000000",
"active": true,
"frozen": false
}
Action: Use availableCredit to check if sufficient funds before calling borrow.
borrowBorrow USDC from the pool.
Usage:
npx ts-node scripts/client.ts borrow <amount>
Args:
amount (required): USDC amount as decimal string (e.g., "5.0").Returns: JSON
{
"success": true,
"txHash": "0x...",
"borrowed": "5.000000",
"newDebt": "5.000000",
"availableCredit": "95.000000"
}
Fails if: amount > availableCredit. Check status first.
repayRepay debt to the pool.
Usage:
npx ts-node scripts/client.ts repay <amount|all>
Args:
amount: Specific USDC amount to repay (e.g., "5.0").all: Calculates total debt + 1% buffer and repays fully. The contract caps at actual debt owed.Returns: JSON
{
"success": true,
"txHash": "0x...",
"repaid": "5.050000",
"remainingDebt": "0.000000",
"newCreditLimit": "110.000000"
}
Note: Repayments pay interest first, then principal. Each successful repayment increases credit limit by 10%.
bridgeBridge USDC between Arc Testnet and Base Sepolia.
Usage:
npx ts-node scripts/client.ts bridge <amount> <from> <to>
Args:
amount: USDC amount (e.g., "10.0").from: Source chain (arc or base).to: Destination chain (arc or base).Returns: JSON
{
"success": true,
"amount": "10.000000",
"from": "Arc_Testnet",
"to": "Base_Sepolia",
"estimatedArrival": "5-10 minutes"
}
Fails if: from === to. Chains must be different.
balanceCheck wallet balance on both chains.
Usage:
npx ts-node scripts/client.ts balance
Returns: JSON
{
"arc": "50.000000",
"base": "25.000000",
"total": "75.000000"
}
Script: scripts/lp.ts
Run as: npx ts-node scripts/lp.ts <command> [args]
pool-statusCheck overall pool health and metrics.
Usage:
npx ts-node scripts/lp.ts pool-status
Returns: JSON
{
"totalAssets": "1000.000000",
"totalLiquidity": "800.000000",
"totalDebt": "200.000000",
"totalShares": "950.000000",
"sharePrice": "1.052631",
"utilizationPercent": 20
}
depositDeposit USDC to receive LP shares.
Usage:
npx ts-node scripts/lp.ts deposit <amount>
Args:
amount: USDC to deposit (e.g., "100.0").Returns: JSON
{
"success": true,
"txHash": "0x...",
"deposited": "100.000000",
"sharesReceived": "95.000000",
"totalShares": "95.000000"
}
withdrawBurn LP shares to withdraw USDC.
Usage:
npx ts-node scripts/lp.ts withdraw <shares|all>
Args:
shares: Number of shares to burn (e.g., "50.0").all: Withdraw maximum possible based on available liquidity.Returns: JSON
{
"success": true,
"txHash": "0x...",
"sharesBurned": "50.000000",
"usdcReceived": "52.631579",
"remainingShares": "45.000000"
}
Note: Withdrawal may be capped if liquidity is fully utilized (all USDC lent out).
lp-balanceCheck LP position for an address.
Usage:
npx ts-node scripts/lp.ts lp-balance [address]
Returns: JSON
{
"shares": "95.000000",
"value": "100.000000"
}
debt = principal + accrued_interestAfter each repayment:
newLimit = currentLimit × 1.10
Maximum: 10,000 USDC.
availableCredit = creditLimit - principal
Interest does NOT reduce borrowing power—only principal.
sharePrice = totalAssets / totalShares
Where totalAssets = liquidity + outstandingDebt.
1. Check status → npx ts-node scripts/client.ts status
2. Borrow → npx ts-node scripts/client.ts borrow 5
3. Use funds → (perform task on Arc or bridge to Base)
4. Bridge back → npx ts-node scripts/client.ts bridge 5 base arc
5. Repay → npx ts-node scripts/client.ts repay all
6. Verify growth → npx ts-node scripts/client.ts status (limit increased!)
1. Check pool → npx ts-node scripts/lp.ts pool-status
2. Deposit → npx ts-node scripts/lp.ts deposit 100
3. Monitor → npx ts-node scripts/lp.ts lp-balance
4. Withdraw → npx ts-node scripts/lp.ts withdraw all
| Error | Cause | Recovery |
|---|---|---|
WALLET_PRIVATE_KEY required | Env var missing | Set WALLET_PRIVATE_KEY before running |
Exceeds credit limit | amount > availableCredit | Call status, borrow less |
Insufficient balance | Wallet has no USDC | Bridge funds or acquire testnet USDC |
Insufficient liquidity | Pool is fully utilized | Wait for borrowers to repay or LPs to deposit |
Nonce too low | Transaction conflict | Wait 10 seconds and retry |
Bridge timeout | Circle Bridge delay | Wait 5-10 minutes, check balances on both chains |
Same chain error | from === to in bridge | Use different source and destination |
references/contracts.md for full ABIs and type definitions.scripts/client.ts and scripts/lp.ts for implementation.