Shodai Agreements
Server Details
Author, validate, deploy, and operate Shodai on-chain agreements.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- CNSLabs/agreements-api-sdk
- GitHub Stars
- 2
- Server Listing
- Shodai Agreements
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 11 of 11 tools scored. Lowest: 3.9/5.
Each tool targets a distinct aspect of agreement lifecycle: validation, preparation, deployment, querying, and input submission. No two tools have overlapping purposes.
All tools follow a consistent verb_noun pattern in snake_case, e.g., deploy_agreement, list_agreements, prepare_deployment_typed_data. No mixed conventions.
11 tools cover the full agreement workflow without being excessive. Each tool serves a necessary step in the lifecycle, from validation to deployment to input submission.
The tool set covers validation, deployment, querying, and input submission. Minor gaps exist (e.g., no tool for agreement cancellation or bulk user-specific listing), but core workflows are well-supported.
Available Tools
11 toolsdeploy_agreementDeploy agreementADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| docUri | No | Optional document URI recorded on-chain with the agreement. | |
| signer | No | Wallet address (0x...) that signed the permit. | |
| chainId | No | Target EVM chain ID (e.g. 59141 for Linea Sepolia). | |
| deadline | No | Permit deadline in unix seconds. Must match the signed payload. | |
| agreement | Yes | Complete authored agreement JSON document with metadata, variables, content, and execution sections. | |
| observers | No | Observer email addresses. | |
| documentId | No | Optional hosted document ID paired with docUri for GET /v0/agreements/documents/{documentId}. | |
| initValues | No | Deployment-time values for variables referenced by execution.initialize.data. | |
| signatureR | No | Permit signature r component (0x... 32 bytes). | |
| signatureS | No | Permit signature s component (0x... 32 bytes). | |
| signatureV | No | Permit signature v component (27 or 28). | |
| displayName | Yes | Human-readable name for the deployed agreement record. | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. | |
| participants | No | Wallet mappings for participant variables. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true; description confirms on-chain submission. It adds context about the permit mechanism and preflight requirement. No contradictions, but lacks mention of gas costs or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences, front-loaded with purpose. Every sentence adds value (what it does, how to use it, prerequisite, scope). No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (14 params, nested objects, on-chain destructive action), the description covers the workflow and dependencies. It does not detail the return format or error handling, but it's sufficient for correct tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. The description adds extra meaning for the permit parameters and initValues, explaining their role in the signing workflow. This is helpful beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deploys an authored agreement JSON using an EIP-712 permit, submits an on-chain transaction, and returns a record. It specifies the resource, action, and method, and distinguishes itself from siblings like validate_agreement and prepare_deployment_typed_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: provide a pre-signed permit or call prepare_deployment_typed_data first; always run preflight_deployment before deploying. Also notes the required 'agreements.write' scope. This clearly tells the agent when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agreementGet agreementARead-onlyIdempotentInspect
Returns a single agreement record, including the full authored agreement JSON and hosted record context (participants, observers, owner, deployment address).
| Name | Required | Description | Default |
|---|---|---|---|
| agreementId | Yes | Agreement record ID, as returned by list_agreements (not the on-chain address). | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description does not need to restate safety. The description adds value by specifying what the returned record includes (authored agreement JSON, participants, observers, owner, deployment address). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys all necessary information with no superfluous words. It is front-loaded with the main action and immediately useful details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two well-documented parameters, the description fully explains what the tool returns. No output schema exists, but the description covers the return value comprehensively (full authored JSON and context). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters (agreementId and environment). The description does not add further parameter details beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Returns' and specifies the resource 'single agreement record', including its contents (full authored agreement JSON and hosted record context). This differentiates it from sibling tools like list_agreements (which returns multiple) and get_agreement_state (which returns only state).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. It implies usage for retrieving a specific agreement's details, but does not mention when not to use (e.g., for state use get_agreement_state, for listing use list_agreements). The context signals show sibling tools, but the description misses the opportunity to clarify selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agreement_documentGet agreement documentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | Hosted agreement document ID, as returned by list_agreements/get_agreement or prepare_deployment_typed_data. | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by detailing the return content and references, without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences that efficiently convey purpose and parameter sourcing with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately lists return fields and connects to sibling tools, making the tool's behavior clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are clear; the tool description adds minimal extra meaning beyond restating usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Returns the rendered hosted prose document for an agreement by documentId' and lists specific return fields, differentiating it from sibling tools like list_agreements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description guides where to obtain documentId (list_agreements/get_agreement or prepare_deployment_typed_data), but does not explicitly state when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agreement_stateGet agreement stateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| agreementId | Yes | Agreement record ID, as returned by list_agreements (not the on-chain address). | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. Description adds polling context but no additional behavioral traits beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides usage context (polling) and interpretation guidance (against lifecycle states). Lacks detail on output format or possible state values, but for a simple read tool this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for both parameters. Description does not add extra meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Returns the current state of an agreement' with a specific verb and resource. It distinguishes from siblings by mentioning polling use case, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this tool to poll for transitions after submitting an input, and to interpret state against the lifecycle. However, it does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_input_historyGet input historyARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (max 100). | |
| cursor | No | Opaque pagination cursor from a previous response (pageInfo.nextCursor). | |
| status | No | Filter by submission status. | |
| inputId | No | Filter by input ID as defined in the agreement JSON (execution.inputs). | |
| agreementId | Yes | Agreement record ID, as returned by list_agreements (not the on-chain address). | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds value by explaining the status values (PENDING, MINED, FAILED) and the ability to filter, but does not discuss potential behaviors like response consistency or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first states the core function, and the second provides the use case. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks detail about the output format (e.g., structure of returned submissions) and pagination mechanics (e.g., how cursor and limit interact). Given the tool's complexity (6 parameters, pagination, filtering), this is a notable gap, though annotations compensate for safety aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning the input schema already documents all parameters well. The description does not add new meaning beyond 'pagination and filtering,' which is generic. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies 'returns recorded input submissions for an agreement' with a clear verb and resource. It distinguishes itself from siblings like submit_input (which submits) and get_agreement (which gets agreement details), and mentions pagination and filtering capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'use this to inspect which events have been submitted and whether each is PENDING, MINED, or FAILED,' providing clear context for when to use the tool. However, it does not explicitly mention when not to use it or list alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agreementsList agreementsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (max 100). | |
| state | No | Filter by current lifecycle state ID. | |
| cursor | No | Opaque pagination cursor from a previous response (pageInfo.nextCursor). | |
| sortBy | No | Sort field (single field only). | |
| chainId | No | Filter by EVM chain ID (e.g. 59141 for Linea Sepolia). | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. | |
| createdAfter | No | ISO 8601 timestamp; only agreements created at or after this time. | |
| updatedAfter | No | ISO 8601 timestamp; only agreements updated at or after this time. | |
| createdBefore | No | ISO 8601 timestamp; only agreements created at or before this time. | |
| sortDirection | No | Sort direction; defaults to desc. | |
| updatedBefore | No | ISO 8601 timestamp; only agreements updated at or before this time. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond annotations: pagination (cursor + limit), filtering by chain and state, sorting, and that it returns summaries only. No contradictions with readOnlyHint, idempotentHint, destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences: first states purpose and scope, second lists features and alternative. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential context: visibility, pagination, filtering, sorting, and limitation to summaries. Without output schema, the note about summaries and the alternative for full records provides adequate completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by grouping parameters into pagination, filtering, and sorting, explaining their combined purpose. Slight improvement over schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists agreement summaries visible to the current API key. Distinguishes from siblings by specifying return type and referencing get_agreement for full records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states to use get_agreement for full records, providing a clear alternative. Indicates pagination, filtering, and sorting capabilities, guiding when to use this tool for list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preflight_deploymentPreflight deployment requestARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Target EVM chain ID for deployment. | |
| agreement | Yes | Complete authored agreement JSON document with metadata, variables, content, and execution sections. See the simple/complex example resources for the authoritative shape. | |
| observers | No | Observer email addresses for the deployed agreement. | |
| initValues | No | Deployment-time values for variables referenced by execution.initialize.data. | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. | |
| participants | No | Wallet mappings for participant variables. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and non-destructive. The description reinforces these by stating it does not deploy or require a signature. No contradictions; the added scope requirement provides extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each serving a distinct purpose: purpose, non-action clarification, usage guidance and scope. Front-loaded with the core action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the tool's purpose, usage order, and behavioral traits via annotations. It lacks explicit return value description but is sufficient for an agent to understand the tool's role in the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description meaningfully aggregates parameters into the concept of 'readiness' for deployment, mapping agreement, chain, values, wallets, and observers to the tool's purpose, adding value beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks readiness of multiple components for deployment, using specific verbs and resources. It explicitly distinguishes from deployment and signature actions, and the sibling list confirms differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises running this before signing a deploy permit, implying a specific workflow order. It mentions the required scope (agreements.write) but does not explicitly compare to similar tools like validate_agreement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_deployment_typed_dataPrepare deployment permit typed dataARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| docUri | No | Document URI (must match the later deploy_agreement call). | |
| chainId | Yes | Target EVM chain ID (e.g. 59141 for Linea Sepolia). | |
| deadline | No | Permit deadline in unix seconds; defaults to one hour from now. | |
| agreement | Yes | Complete authored agreement JSON document with metadata, variables, content, and execution sections. | |
| observers | No | Observer email addresses. | |
| documentId | No | Hosted document ID. If omitted with docUri, no hosted document ID is stored; if both are omitted, the server generates both values. | |
| initValues | No | Deployment-time init values (must match the later deploy_agreement call). | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. | |
| participants | No | Wallet mappings for participant variables. | |
| signerAddress | Yes | Wallet address (0x...) that will sign and own the deployment. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, non-destructive), the description reveals that the tool reads the signer nonce from the target chain, which is a critical behavioral detail. It also confirms no state changes, fully aligning with and adding context to annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loading the purpose, then usage, then behavioral notes. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, nested objects), the description covers the core workflow and side effects. It could describe the output format of typedData more explicitly, but the annotations and schema provide sufficient context for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds value by explaining relationships between parameters (e.g., docUri must match deploy_agreement, deadline defaults to one hour), which aids correct usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds the EIP-712 payload for signing, specifying the exact usage context (agreement deployment). It distinguishes itself from siblings by explicitly connecting to deploy_agreement and noting no transaction is sent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: to prepare typed data, then call deploy_agreement with the resulting components. It also clarifies what the tool does not do (no transaction, no storage), helping avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_input_typed_dataPrepare input permit typed dataARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Values matching the input schema (must match the later submit_input call). | |
| inputId | Yes | Input ID defined by the agreement JSON (execution.inputs). | |
| deadline | No | Permit deadline in unix seconds; defaults to one hour from now. | |
| agreementId | Yes | Agreement record ID of a deployed agreement. | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. | |
| signerAddress | Yes | Wallet address (0x...) that will sign the input permit. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that 'No transaction is sent and nothing is stored. Reads the agreement record and signer nonce,' reinforcing the read-only and idempotent nature. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first clearly states the purpose, and the second provides actionable usage guidance. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains that the tool returns typedData, how to use it (sign and submit), and that it reads agreement record and signer nonce. With annotations covering safety and idempotency, this is fully complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description mentions 'signer, deadline, and the signature components' but does not add new meaning beyond what is in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Builds the exact EIP-712 payload that must be signed to authorize submitting an input to a deployed agreement.' It uses a specific verb ('prepares') and resource ('typedData'), and distinguishes itself from sibling tools like submit_input by explaining it only prepares data for signing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage steps: 'Sign the returned typedData with a wallet allowed by the input definition, then call submit_input with signer, deadline, and the signature components.' It also notes that no transaction is sent and nothing is stored, indicating when to use this tool as a preparation step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_inputSubmit input with permitADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signer | No | Wallet address (0x...) that signed the permit. | |
| values | Yes | Values matching the input schema defined by the agreement JSON. | |
| inputId | Yes | Input ID defined by the agreement JSON (execution.inputs). | |
| deadline | No | Permit deadline in unix seconds. Must match the signed payload. | |
| signatureR | No | Permit signature r component (0x... 32 bytes). | |
| signatureS | No | Permit signature s component (0x... 32 bytes). | |
| signatureV | No | Permit signature v component (27 or 28). | |
| agreementId | Yes | Agreement record ID of a deployed agreement. | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=false. Description adds context: it advances on-chain lifecycle, requires a permit, and that the signer must be allowed. It mentions scope requirement. No contradictions. It could elaborate on the exact state transition, but overall good transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is two sentences plus scope requirement, with no redundancy. Every sentence provides essential information: what the tool does, prerequisites, and how to provide the permit. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with 9 parameters and no output schema, description covers prerequisites and behavior well but omits return value or success/failure indicators. The description mentions 'advancing lifecycle' but does not clarify output format (e.g., transaction hash). Completeness is adequate but not full.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description groups parameters (e.g., permit components) and explains the overall flow, but does not add detailed semantics beyond the schema's own descriptions for each parameter. Minor added value in explaining how permit fields interrelate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states the tool 'submits a signed input to a deployed agreement, advancing its on-chain lifecycle.' The verb 'submits' and resource 'signed input to a deployed agreement' are specific. It distinguishes from siblings like 'prepare_input_typed_data' by mentioning permit preparation, and from read tools by noting lifecycle advancement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear context: the tool is used when you have a signed permit (or can call prepare_input_typed_data first). It specifies prerequisites like matching input ID and values, signer permissions, and required scope 'agreements.write.' It implies when not to use (if no permit) by suggesting the alternative prepare-input-typed-data, though not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_agreementValidate agreement structureARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| agreement | Yes | Complete authored agreement JSON document with metadata, variables, content, and execution sections. See the simple/complex example resources for the authoritative shape. | |
| environment | Yes | Agreements API environment for this tool call. API keys only work in the environment where they were created. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. Description adds context about return values and warnings, and that it does not validate deployment or signer data. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no wasted words. Each sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely covers what the tool does, what it returns, its limitations, and usage instructions. No output schema, so description adequately explains return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by describing the agreement JSON as 'complete authored agreement JSON document' and referencing example resources, which helps with the complex nested object parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it checks the authored agreement JSON and returns participant variable keys, input IDs, state IDs, and warnings. Distinguishes from preflight_deployment by specifying what it does not validate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (iterate until no blocking warnings) and when not to (use preflight_deployment for deployment validation). Also mentions required scope (agreements.write).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityFmaintenanceEnables AI agents to create, sign, and enforce binding agreements with deliverables, deadlines, penalties, and a full lifecycle state machine.Last updated2MIT
- Flicense-qualityDmaintenanceEnables AI assistants to deploy, initialize, and upgrade NEAR smart contracts with cost estimation and status checks.Last updated
- FlicenseBqualityDmaintenanceEnables secure interaction with blockchain smart contracts across multiple chains, including ABI analysis, contract method invocation (view/nonpayable/payable), and local wallet management for Ethereum and Base networks.Last updated31
- Flicense-qualityBmaintenanceEnables AI agents to create intent contracts, check boundaries, record completions, and export receipts for structured agent workflowsLast updated
Your Connectors
Sign in to create a connector for this server.