Skip to main content
Glama

Register a contract (ORD)

create_contract

Register an ORD contract with an advertiser, specifying type, counterparty, and required legal details. Returns the contract ID and remaining API points.

Instructions

Registers an ORD contract between the account and an advertiser and returns {id} plus apiPointBalance (weekly API points left). Which fields are mandatory depends on type: service needs subject, isReportingRequired, date and number (cid is rejected); intermediary needs all of those plus object and isFundsAllocationToPrincipal (cid is rejected); external needs cid only (parentId is rejected). Pass the contractor's legal details in intermediary — required unless parentId is set; with parentId the record is an additional agreement to that contract and must omit intermediary. There is no edit or delete endpoint, so a wrong contract stays on the account forever.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cidNoExternal contract id (ERID-side identifier). Required for type external, rejected for the others.
dateNoContract date, YYYY-MM-DD. Required for service and intermediary.
typeYesContract type: service (services rendered), intermediary (mediation), external (concluded outside Avito, identified by cid).
numberNoContract number. Required for service and intermediary.
objectNoContract action, the API's `object` field: distribution, conclude, commercial, other. Required for intermediary.
subjectNoContract subject: org-distribution, mediation, distribution, representation, other. Required for service and intermediary.
parentIdNoParent contract id. Set it to register an additional agreement; then omit intermediary.
advertiserIdYesAdvertiser this contract is with (the client). From list_advertisers.
intermediaryNoLegal details of the contractor (the intermediary). Required unless parentId is set.
counterpartyTypeYesCounterparty type — sent as the API's `description` field: direct_with_advertiser or advertiser_intermediary.
isReportingRequiredNoWhether acts/reports are required under the contract. Required for service and intermediary.
isFundsAllocationToPrincipalNoWhether funds are allocated to the principal. Required for intermediary.
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true, etc.), the description discloses critical behavioral traits: no edit or delete endpoint, permanent records, and the return of apiPointBalance. It also states which fields are rejected for each type, adding significant transparency.

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 four sentences, front-loaded with the core purpose and return value, then efficiently covers type-specific requirements and a caution. Every sentence contributes unique, necessary information without any filler.

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

Completeness5/5

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

Given the complexity (12 parameters, nested object, three conditional branches, no output schema), the description covers the essential decision points: type-specific mandatory fields, the parentId/intermediary relationship, and irreversibility. It is complete enough for correct tool invocation.

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

Parameters5/5

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

The schema already describes each parameter (100% coverage), but the description adds inter-parameter logic: which fields are mandatory/rejected per type, and the exclusivity between parentId and intermediary. This is high-value semantic information not available in individual field descriptions.

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 uses the specific verb 'Registers' and identifies the resource as an ORD contract between account and advertiser. It clearly differentiates from sibling tools like create_advertiser or create_child_account by scoping to contract creation with a specific return value.

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?

The description provides detailed conditional guidance on mandatory fields per contract type, and warns about the irreversible nature. However, it doesn't explicitly name alternative tools (e.g., list_contracts for viewing) as 'use this instead' – though the context makes it clear this is the creation tool.

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

Install Server

Other Tools

Latest Blog Posts

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/A1-x-Tech/mcp-avito-ads'

If you have feedback or need assistance with the MCP directory API, please join our Discord server