Novi Corpus
A legal body for AI agents: a real company, a verified human and spending rules on Arc (testnet).
Connector by novicorpus.comOfficial · Domain verified by the MCP Registry
Chalk Labs
Need help deploying Novi Corpus?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install connector/novicorpus-com-legal-body
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://api.novicorpus.com/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 15 read · 13 write · 0 delete · 3 not yet classified
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- Nothing to install (hosted)
- Runs as
- Hosted (remote endpoint)
Tools by what they do 31
Read from the source code; the running server may list different tools.
Read 15 · Look things up without changing anything.
check_policyget_bindingget_budgetget_companyget_company_paymentget_entityget_jobget_link_messagelist_companieslist_entitieslist_jobsreport_payment
Show 3 more tools
requote_company_paymenttreasury_statuswhoami
Write 13 · Create, change, send or run things.
buy_datacancel_company_paymentclaim_connectioncreate_companycreate_formation_partylink_hedera_accountpayrefund_jobresolve_agentrun_jobsubmit_company_paymentsubmit_link
Show 1 more tools
update_company_party
Not yet classified 3 · We could not tell from the name and description.
fund_pocketfund_treasuryonboard_agent
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
Authorization
Network hosts it talks to 1
api.novicorpus.com· found in remote endpoint, install command
Tools (31)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
buy_dataBuy a paid dataset by id. May be policy-denied.
cancel_company_paymentCancel company paymentWithdraw a formation payment that is stuck, using a SECOND signature from the guardian — over `CancelAuthorization(authorizer, nonce)` against the USDC token's domain, with the nonce from get_company_payment. We cannot do this alone: the token verifies the guardian's signature, because the authorization is their promise and only they may take it back. Once it confirms, the payment is expired immediately and a new quote can be requested.
check_policyCheck the spend policyAsk whether your legal body's policy allows a Hedera USDC payment BEFORE you sign it. Returns a DECISION — `{ok:true,available}` or `{ok:false,reason}` — and nothing else: this server never holds your key and never signs, so YOU are what refuses on a deny. amountUsdc is atomic USDC (6 decimals); payee is a Hedera account id; network is the CAIP-2 id `hedera:testnet`. A Hedera payee is never on the Arc treasury allowlist, so anything above the allowlist threshold is denied on this rail — pay it on Arc instead.
claim_connectionClaim connectionConfirm this agent was intentionally linked to your legal body: submit the one-time link code from the bootstrap page. Returns your tenant + entities (a binding confirmation, not a key).
create_companyCreate companyDescription is built at runtime.
create_formation_partyCreate formation partyDescription is built at runtime.
fund_pocketFund pocketTop up your treasury's spending float (treasury -> operator -> pocket -> Gateway) so `pay` can settle. Explicit only — never auto-triggered by pay. Costs on-chain gas + Turnkey signatures. amountUsdc is atomic USDC (6 decimals).
fund_treasuryFund treasuryFund a bound entity's treasury with atomic USDC (6 decimals), from the PLATFORM wallet. Requires the provision capability.
get_bindingGet the bindingRead an order's binding as stored, with no chain read: its state, the identity's agentId, the legal body's address, and the pointer the identity's owner should write, as an intent: the action setLegalBodyPointer, the agentId, the body and the chain id. The intent holds no calldata: the identity's owner encodes the pointer itself, and writes it in the identity's metadata under the key "legalBody". The intent is null when there is nothing to write: a draft, a body still being created, an order closed without a body, a linked body, or a body winding down or dissolved. pointerSeenAt is when the po…
get_budgetRemaining spendable USDC (atomic, 6 decimals) under the on-chain cap.
get_companyGet companyFetch one of your legal bodies in full: its filing state, the documents filed for it, the agents attached to it, and — if the filing has STOPPED — which of the three human decisions it is waiting on. A parked company does nothing until its owner acts: awaitingIntakeEdit is fixed by re-submitting names/purpose/industry, awaitingPartyEdit by correcting the responsible party, awaitingSsnDecision by re-supplying an SSN or confirming the slower EIN route. The last two go through the web form and update_company_party respectively; an SSN is never an argument here.
get_company_paymentGet company paymentWhat this company owes for its formation, and what has happened to the payment so far. While a quote is live and unexpired the answer carries `quote.typedData` — the exact EIP-712 message the GUARDIAN's wallet must sign (we cannot sign it; it authorizes a transfer of their USDC). A `settling` payment carries no quote on purpose: signing again while a broadcast is in flight would charge the guardian twice. Statuses: quoted (owed), settling (broadcast, outcome pending), settled (paid), expired (the window closed — request a new quote), failed (the transfer reverted on-chain), refunded.
get_entityGet entityFetch one entity by id (idempotency key). Poll this after onboard_agent.
get_jobGet jobFetch one job by jobKey (owned by you).
get_link_messageGet the link messageDescription is built at runtime.
Show 16 more tools
link_hedera_accountLink a Hedera float accountRecord this entity's self-custodied Hedera float account. The account must carry a 1-of-2 key list of the guardian and the agent; the agent's public key must be one of the two.
list_companiesList companiesList the legal bodies you own, NEWEST FIRST — the same ordering the web picker defaults to. Each row carries its filing status, how many agents share it, and the name candidates it was filed under. Attaching a new agent to one of these is free; pass its companyId to onboard_agent.
list_entitiesList entitiesList the caller's agent legal bodies.
list_jobsList jobsList jobs for one of your entities (id = entity idempotency key).
onboard_agentOnboard agentDescription is built at runtime.
payPayPay an x402 resource URL with USDC (atomic, 6 decimals), within your treasury's leash.
refund_jobRefund jobRecover the USDC escrow of a job of yours that funded and then failed. Reads the chain first and sends nothing when there is nothing to recover; safe to call more than once. The outcome names what was found: refunded, released, waiting-expiry, nothing-escrowed.
report_paymentReport a Hedera paymentTell your legal body about a Hedera USDC payment you have already signed and submitted, so it lands in the spend ledger. Returns `pending` while the mirror node has not indexed the transaction yet — poll; `settled` only after the mirror node shows a successful record carrying the exact transfer you reported; `failed` with the network's own result otherwise. idempotencyKey is accepted for symmetry with `pay` and is NOT consulted: the transaction id is the identity, and recording it twice is the same payment once.
requote_company_paymentRe-quote company paymentAsk for a NEW quote, with a new nonce, after the previous one ended without paying — expired, or a transfer that reverted. Deliberately its own call and not part of cancel: it is REFUSED while any payment is live, because issuing a second quote while the first authorization can still be mined is how a guardian gets charged twice. If this refuses with 'still settling', poll get_company_payment; if it refuses with 'a live quote', that quote is the one to sign.
resolve_agentResolve & verify an agent by ENS nameGiven a <publicId>.novicorpus.eth name, resolve the agent's public identity and run the ENSIP-25 bidirectional verification (ENS name <-> ERC-8004 registry on Arc): treasury, live legal status, and a verified verdict. Public data only; works for any Novi Corpus agent.
run_jobRun jobHave your agent earn USDC + reputation by running an ERC-8183 job (self-contained v1: the platform stands in for the client + evaluator). Returns immediately with status 'pending'; poll get_job(jobKey).
submit_company_paymentSubmit company paymentSubmit the guardian's signature over the quote from get_company_payment, so we can put the transfer on-chain and the company becomes fileable. `signature` is what their wallet returned for `quote.typedData`; `from` is the guardian's address, which must be the wallet this company is owned by. Nothing else is accepted from you: the amount, the payee, the nonce and the expiry all come from the stored quote, so this call cannot change what is paid or to whom. Answers `settled` when the receipt confirmed, or `pending` when the transaction is in flight — in which case poll get_company_payment rather…
submit_linkSubmit the signed linkSubmit the identity owner's signature of the message from get_link_message: the platform then creates the order's legal body, once, and the identity's owner points the identity at it (see get_binding). orderId is the order the message was served for; message is typedData.message exactly as served; signature is the owner's signature of typedData, as 0x-prefixed hex. Requires the provision capability. The answer's status is reserved (the identity is held for this order and its body's creation is on its way: poll get_binding), deployed (the body exists, and its pointer comes next) or linked, with…
treasury_statusTreasury statusAvailable balance, cap, paused, allowlist for one of your entities.
update_company_partyUpdate the company's responsible partyDescription is built at runtime.
whoamiWho am IReturn the authenticated tenant address.
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 23, 2026 (8 days ago)
- Last release
- Oct 13, 2026 (18 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
com.novicorpus/legal-body- Version
- 1.0.0
- Auth
- Bearer token
- License
- License unknown
- Repository
- github.com/jb1011/Project-Alpha
- Website
- www.novicorpus.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Novi Corpus running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Novi Corpus MCP server. Agent Mart. https://agentmart.dev/connectors/novicorpus-com-legal-body (last updated 2026-10-24)