The rules,
in one place.
What the contracts do, where they live and how to check them without trusting this site.
Lifecycle
One pawn is six calls. Each one is a transaction anyone can read on the explorer.
- 1
Mint Borrower
The registry creates a keyless pack and gives the borrower its Title.
- 2
Seal Borrower
Coins move from NEAR Intents into the pack.
- 3
Offer Borrower
The Title holder lists a loan, a repayment and a term.
- 4
Fill Lender
The lender pays the loan and takes the Title. The borrower gets a Ticket.
- 5
Redeem Ticket holder
Pays the repayment before the date. The coins go to the Ticket holder.
- 6
Expire Anyone
After the date, closes the pawn. The coins stay with the Title holder.
Rules
Enforced by the contracts. No price feed is read at any step.
- Term
- 7 days to 180 days on mainnet; from 10 minutes on testnet
- Grace
- 1 day after the date, only when NEAR Intents paused or locked the pack in the last day
- Cap per pack
- 1 ZEC · 0.01 BTC · 5 SOL · 1,000 USDC
- Keys on a pack
- Zero. A pack with any key is refused.
- Fee
- None in v0
- Guardian
- Can pause new pawns. Cannot move coins or change a running pawn.
Contracts
Every pack runs one published global contract. Compare the hash with the build from source.
- Registry
v0.mosaec.testnet- NEAR Intents verifier
intents.mosaec.testnet- Registry code hash
7XzqvXMawMojL1mYSJbw15ha6BoLg7vV8S1YgCHTyUxg- Pack code hash
4NVfLnVFYQxUPfsHRGpU6h8eKmp2AbQxNR2mYNx3Bwzc
- Registry
v0.mosaec.near- NEAR Intents verifier
intents.near- Registry code hash
- Not deployed
- Pack code hash
- Not deployed
Verify a pack
Three reads with the NEAR CLI. The app runs the same checks on every pack page.
# 1. Terms and holdersnear view v0.mosaec.testnet position_of '{"pack":"0.v0.mosaec.testnet"}' --networkId testnet# 2. Stage and contentsnear view 0.v0.mosaec.testnet status --networkId testnet# 3. No keys: expect an empty listnear list-keys 0.v0.mosaec.testnet --networkId testnet
Agents
The house desk speaks MCP. Any agent can read the book and quote a pawn; filling needs a token.
- Endpoint
https://desk.mosaec.finance/mcp- Read
desk_policy·list_offers·quote_offer·prepare_fill- Write
fill_offer, behind a bearer token
Errors
Every refusal carries a code. The app shows the plain words; a refused payment always comes back.
E_KEYSThis pack holds a signing key, so it is unsafe to use.E_PRED_AUTH_OFFThis pack has direct account access turned off.E_VERIFIER_LOCKEDNEAR Intents has locked this pack.RetryE_CONTENTSThe pack contents changed since the offer was made.E_TERMSThe terms differ from the offer or sit outside the allowed range.E_PENDINGAnother transfer on this pawn is still settling.RetryE_EXPIREDThe offer or the term has ended.E_HOLDEROnly the holder of the required Title or Ticket can do this.E_STATEThe pawn is in a stage that refuses this action.E_CAPThe amount is above the per-pack limit.E_NOT_VERIFIEROnly NEAR Intents can send this transfer.E_NOT_PACKOnly a Mosaec pack can make this call.E_NOT_REGISTRYOnly the Mosaec registry can make this call.E_TOKENThis token is outside the supported list.E_AMOUNTThe amount is zero or differs from the required value.E_MSGThe transfer message is unreadable.E_STORAGEThe attached NEAR is too little to cover storage.E_MIN_WITHDRAWThe withdrawal is below the bridge minimum.E_BATCHToo many tokens, or one token listed twice.E_SELF_FILLThe lender and the borrower are the same account.E_GASThe transaction carries too little gas for every step.E_GRACEThe grace window is open, so the pawn stays live until it ends.E_PAUSEDNew pawns are paused.RetryE_NOT_GUARDIANOnly the guardian can do this.