Skip to main content
Glama

propose_bilateral

Use when two agents need to fix a shared boundary: both sides must agree before the boundary is anchored. Essential for payment splits, task delegation, or any joint commitment between agents. Propose a bilateral agreement to another agent: creates a DD with declaration_mode 'bilateral' and waits for counterparty acceptance.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
auth_tokenYesYour DA agent auth token
request_idNoUnique idempotency key for this request. Auto-generated if omitted.
decision_atNoOptional: the time your agent itself decided, ISO 8601. The server normalizes it to UTC and that normalized value enters the integrity hash. It must not be later than the anchoring time (400 DECISION_AT_IN_FUTURE). Omit it and no decision time is recorded.
access_classNoOptional: read-access class for the record
dd_unit_typeNoDecision unit typesingle
parent_dd_idNoParent DD ID for lineage tracking
decision_typeYesDecision type
selection_scopeNoOptional: declared scope of the selection
selection_stateNoSelection stateSELECTED
delegation_stateNoOptional: delegation responsibility state (DAC add 0/10/30)
payment_signatureNoOptional x402 payment payload (base64), required only for paid calls. Omit it on the first call: the tool returns the payment challenge. Sign that challenge with your own wallet, then call this tool again with identical arguments plus this field. Decision Anchor never holds your key and never signs on your behalf.
ee_retention_periodNoHow long the record is retained. indefinite is declared but not currently available: selecting it is rejected with 403.medium
origin_context_typeYesOrigin context
decision_action_typeYesAction type
counterparty_agent_idYesThe agent_id of the counterparty you are proposing to
ee_direct_access_quotaNoDirect access quota (omit to use the server config default)
ee_direct_access_periodNoDirect access period (e.g., 30d)30d
ee_responsibility_scopeNoResponsibility scopestandard
content_disclosure_scopeNoOptional: external exposure scope (DAC add 0/15/40)
ee_disclosure_format_policyNoDisclosure formatinternal
ee_integrity_verification_levelNoVerification rigorbasic

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It does disclose key behavior: it creates a bilateral decision record and waits for counterparty acceptance, and it emphasizes that agreement is required before anchoring the boundary. It could add failure and timeout behavior, but the main side effects are more transparent than typical in low-annotation tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly written with the 'when to use' trigger front-loaded, followed by illustrative use cases and a clear mechanism sentence. There is no filler or redundancy; all three sentences earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 21-parameter tool with no annotations and no output schema, it covers the most important context: the bilateral requirement, the waiting behavior, and likely use cases. It could say a little more about what happens after acceptance or on failure, but the essential operational context is present and coherent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already explains most parameters. The description adds use-case context but does not need to restate parameter details. This meets the baseline expected when the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: propose a bilateral agreement, create a DD with declaration_mode 'bilateral', and wait for counterparty acceptance. It also identifies concrete use cases like payment splits and task delegation, which distinguishes it from the sibling tools such as create_decision or confirm_decision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool: when two agents need to fix a shared boundary and both must agree. It gives concrete examples of appropriate scenarios. It does not explicitly name when not to use it or point to an alternative sibling tool, but the trigger condition is still clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have clear, distinct purposes, but a few overlap in function: get_decision_metadata_distribution and get_self_classification_distribution are both distribution getters, and observe_environment and observe_pattern could be confused. The session status tools (get_ise_status vs get_sdac_session) are also similar.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (create_, get_, list_, observe_, run_, end_, exit_, confirm_, etc.). There are no stylistic deviations or mixed conventions.

Tool Count2/5

With 30 tools, the surface is heavy. Several tools could be consolidated (e.g., the two distribution getters, or the session status getters), making the count feel inflated for the domain's core purpose.

Completeness3/5

The core decision lifecycle (create, confirm, get, list) is covered well, and sessions/observation/marketplace add breadth. However, propose_bilateral lacks a corresponding accept/decline tool, creating a dead end in the bilateral workflow. Also, no way to fetch detailed info on a specific marketplace tool.