Shodai Agreements
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AGREEMENTS_API_KEY | Yes | Shodai API key for Agreements API tool calls. Use a key beginning with cns_pk_. | |
| AGREEMENTS_API_ENVIRONMENT | Yes | Agreements API environment for local stdio deployments. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_agreementsA | Lists agreement summaries visible to the current API key. Supports pagination (cursor + limit), filtering by chain and state, and sorting. Returns summaries only; use get_agreement for the full record. |
| get_agreementA | Returns a single agreement record, including the full authored agreement JSON and hosted record context (participants, observers, owner, deployment address). |
| get_agreement_documentA | Returns the rendered hosted prose document for an agreement by documentId, including content type, display name, chain, docUri, and agreement record references. Use documentId from list_agreements/get_agreement or from prepare_deployment_typed_data. |
| get_agreement_stateA | Returns the current state of an agreement. For deployed agreements, interpret the state against the states defined in the authored agreement lifecycle (execution.states). Use this to poll for transitions after submitting an input. |
| get_input_historyA | Returns recorded input submissions for an agreement, with pagination and filtering. Use this to inspect which events have been submitted and whether each is PENDING, MINED, or FAILED. |
| validate_agreementA | Checks only the authored agreement JSON document and returns participant variable keys, input IDs, state IDs, and warnings. This does not validate deployment values, participant wallet addresses, signer, or permit data — use preflight_deployment for that. Iterate on the agreement JSON until this returns no blocking warnings. Requires the agreements.write scope. |
| preflight_deploymentA | Checks whether authored agreement JSON plus target chain, deployment values, participant wallet mappings, and observer context are ready for deployment. This does not deploy the agreement and does not require a signature. Always run this before signing a deploy permit. Requires the agreements.write scope. |
| deploy_agreementA | Deploys authored agreement JSON using an EIP-712 permit; the API submits the on-chain transaction and returns the deployed agreement record. Provide a pre-signed permit (signer, deadline, signature), or call prepare_deployment_typed_data first to obtain the payload to sign. Always run preflight_deployment before deploying. Requires the agreements.write scope. |
| submit_inputA | Submits a signed input to a deployed agreement, advancing its on-chain lifecycle. The input ID and values must match an input defined by the agreement JSON, and the signer must be allowed by that input. Provide a pre-signed permit (signer, deadline, signature), or call prepare_input_typed_data first. Requires the agreements.write scope. |
| prepare_deployment_typed_dataA | Builds the exact EIP-712 payload that must be signed to authorize deployment of the given agreement JSON. Sign the returned typedData with the deploying wallet (eth_signTypedData_v4 / viem signTypedData), then call deploy_agreement with signer, deadline, and the signature components. No transaction is sent and nothing is stored. Reads the signer nonce from the target chain. |
| prepare_input_typed_dataA | Builds the exact EIP-712 payload that must be signed to authorize submitting an input to a deployed agreement. Sign the returned typedData with a wallet allowed by the input definition, then call submit_input with signer, deadline, and the signature components. No transaction is sent and nothing is stored. Reads the agreement record and signer nonce. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| author_agreement | End-to-end authoring workflow: learn the agreement JSON shape from the example resources, draft the document, then iterate with validate_agreement and preflight_deployment until it is deployment-ready. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| simple-example-agreement | The smallest complete, deployable agreement JSON artifact (a two-party memorandum of understanding). Use it to learn the authoritative document shape: metadata, variables with participant subtypes, markdown content, and a linear execution lifecycle. |
| complex-example-agreement | A richer complete agreement JSON example with more states, event types, metadata, and branching behavior. Use it as the reference when authoring non-trivial lifecycles. |
| authoring-guide | How to make good authoring decisions when turning a real business workflow into agreement JSON: content, variables, participants, states, inputs, and transitions. |
| docs-index | Canonical index of all Agreements API documentation pages with Markdown export URLs. Fetch the linked pages for deployment, signing, and troubleshooting workflows not covered by this server. |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CNSLabs/agreements-api-sdk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server