Koskamo

Pactum MCP

An MCP server for Pactum, a legal services platform in Uzbekistan. It allows AI agents to search for legal services, retrieve practice area details, search legal articles, request lawyer quotes, get consultation prices, and book consultations for company formation, tax compliance, IP, and corporate support.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Pactum MCP logo, by PACTUM-AI CA LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by PACTUM-AI CA LLC
MCP endpoint (Streamable HTTP)
https://pactum.uz/mcp
Vendor documentation

What its tools do

7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

7 of 7 have a description · 7 of 7 declare behavior hints · 5 of 7 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to pactum.uz ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for specific legal services in Uzbekistan
  • Retrieve details on practice areas like company formation
  • Request a price quote from a lawyer for a legal task
  • Book a consultation with a legal expert

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
pactum 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Pactum (pactum.uz) — legal services for businesses and individuals in Uzbekistan: company formation and corporate support, trademarks and IP, licensing, tax, contracts, disputes, foreign investment. Use search_services / get_service to find a service, search_articles for explanations of Uzbek law with citable links. To get a price, call request_quote with a clear brief: what exactly the client needs, who the client is, deadline, and a real phone or e-mail the USER gave you. A lawyer replies with a quote; never invent contact details and never submit a request without the user's explicit consent. If the user wants to talk to a lawyer first: call get_consultation_price, tell the user the price, and only after the user accepted it call book_consultation (a paid consultation with a lawyer; the price is credited toward the service if the client proceeds). Pactum does not handle notarial matters.

Tools

7 advertised

search_services — Search legal services
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the Pactum catalog of legal services in Uzbekistan (company registration, licences, trademarks, contracts, tax, disputes, migration, real estate and more). Use when the user describes a task they want done. Returns services with slug, price anchor and page URL; pass a slug to get_service or request_quote.

search_services input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "How many results (default 8)"
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Short phrase, e.g. \"register LLC\", \"товарный знак\", \"ish ruxsatnomasi\""
    },
    "locale": {
      "enum": [
        "ru",
        "uz",
        "en"
      ],
      "type": "string",
      "description": "Response language: ru, uz or en (default en)"
    }
  },
  "additionalProperties": false
}
search_services annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_service — Service details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full description of one Pactum service by slug (from search_services): what is included, price anchor, FAQ and page URL to cite.

get_service input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Service slug, e.g. trademark-registration"
    },
    "locale": {
      "enum": [
        "ru",
        "uz",
        "en"
      ],
      "type": "string",
      "description": "Response language: ru, uz or en (default en)"
    }
  },
  "additionalProperties": false
}
get_service annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_practice_areas — Practice areas
Advertised by the server during the last successful anonymous check.
Advertised read-only

Practice areas Pactum works in (slug + name). Pass a slug as practice_area in request_quote to route the request to the right lawyer.

list_practice_areas input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "locale": {
      "enum": [
        "ru",
        "uz",
        "en"
      ],
      "type": "string",
      "description": "Response language: ru, uz or en (default en)"
    }
  },
  "additionalProperties": false
}
list_practice_areas annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
search_articles — Search legal articles
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search Pactum articles explaining Uzbek law (company law, trademarks, tax, labour, licensing…). Returns titles, short summaries and URLs — cite them when answering the user.

search_articles input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "How many (default 5)"
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Topic, e.g. \"trademark registration\", \"ликвидация ООО\""
    },
    "locale": {
      "enum": [
        "ru",
        "uz",
        "en"
      ],
      "type": "string",
      "description": "Response language: ru, uz or en (default en)"
    }
  },
  "additionalProperties": false
}
search_articles annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
request_quote — Request a price quote from a lawyer
Advertised by the server during the last successful anonymous check.
Open-world

Send the user's legal task to Pactum lawyers; a lawyer reviews it and contacts the user with a price. Call ONLY after the user asked to be contacted, gave their real name and phone or e-mail, and agreed that Pactum stores these details and may pass the request to a partner lawyer. Put the task in the user's own terms: situation, goal, key facts. Never invent contacts; never call it "to test". Returns the request number.

request_quote input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "task",
    "client_type",
    "contact_name",
    "user_consent"
  ],
  "properties": {
    "task": {
      "type": "string",
      "maxLength": 3000,
      "minLength": 20,
      "description": "What exactly the client needs: situation, goal, key facts"
    },
    "budget": {
      "type": "string",
      "maxLength": 100,
      "description": "Budget, if the user named one"
    },
    "country": {
      "type": "string",
      "maxLength": 80,
      "description": "Client country, if not Uzbekistan"
    },
    "deadline": {
      "type": "string",
      "maxLength": 100,
      "description": "When it is needed, e.g. \"by 15 October\""
    },
    "documents": {
      "type": "string",
      "maxLength": 500,
      "description": "Documents the client already has"
    },
    "agent_name": {
      "type": "string",
      "maxLength": 60,
      "description": "Your assistant name, e.g. ChatGPT, Claude"
    },
    "client_type": {
      "enum": [
        "company",
        "individual",
        "foreign_company",
        "foreign_individual"
      ],
      "type": "string",
      "description": "company | individual | foreign_company | foreign_individual"
    },
    "company_name": {
      "type": "string",
      "maxLength": 200
    },
    "contact_name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Client name as the user gave it"
    },
    "service_slug": {
      "type": "string",
      "maxLength": 200,
      "description": "Slug from search_services, if a specific service fits"
    },
    "user_consent": {
      "type": "boolean",
      "const": true,
      "description": "true only if the user explicitly agreed to share these details with Pactum and its partner lawyer"
    },
    "contact_email": {
      "type": "string",
      "format": "email",
      "maxLength": 200,
      "description": "E-mail"
    },
    "contact_phone": {
      "type": "string",
      "maxLength": 50,
      "description": "Phone with country code, e.g. +998901234567"
    },
    "practice_area": {
      "type": "string",
      "maxLength": 100,
      "description": "Slug from list_practice_areas, if known"
    },
    "contact_telegram": {
      "type": "string",
      "maxLength": 64,
      "description": "Telegram @username, in addition to phone/e-mail"
    },
    "preferred_language": {
      "enum": [
        "ru",
        "uz",
        "en"
      ],
      "type": "string",
      "description": "Language for the lawyer to use"
    }
  },
  "additionalProperties": false
}
request_quote annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_consultation_price — Price of a consultation with a lawyer
Advertised by the server during the last successful anonymous check.
Advertised read-only

Current price and length of a prepaid consultation with a Pactum lawyer. Read-only, books nothing. Call it BEFORE book_consultation and tell the user the price: book_consultation needs the user to accept it first.

get_consultation_price input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "locale": {
      "enum": [
        "ru",
        "uz",
        "en"
      ],
      "type": "string",
      "description": "Response language: ru, uz or en (default en)"
    }
  },
  "additionalProperties": false
}
get_consultation_price annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
book_consultation — Book a paid consultation with a lawyer
Advertised by the server during the last successful anonymous check.
Open-world

Book a consultation with a Pactum lawyer, prepaid; the amount is credited toward the service if the client orders it. Get the price from get_consultation_price first and tell it to the user. Call ONLY after the user asked for a consultation, accepted that price, gave their real name and phone, and agreed that Pactum stores these details. Returns the order number, price, how to pay and a status link. For a price quote on a whole task use request_quote instead.

book_consultation input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "topic",
    "contact_name",
    "contact_phone",
    "user_accepts_price",
    "user_consent"
  ],
  "properties": {
    "topic": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 10,
      "description": "What the user wants to discuss, in their own terms"
    },
    "agent_name": {
      "type": "string",
      "maxLength": 60,
      "description": "Your assistant name, e.g. ChatGPT, Claude"
    },
    "contact_name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Client name as the user gave it"
    },
    "service_slug": {
      "type": "string",
      "maxLength": 200,
      "description": "Slug from search_services, if a specific service fits"
    },
    "user_consent": {
      "type": "boolean",
      "const": true,
      "description": "true only if the user explicitly agreed to share these details with Pactum and its partner lawyer"
    },
    "contact_email": {
      "type": "string",
      "format": "email",
      "maxLength": 200
    },
    "contact_phone": {
      "type": "string",
      "maxLength": 50,
      "minLength": 7,
      "description": "Phone with country code, e.g. +998901234567"
    },
    "practice_area": {
      "type": "string",
      "maxLength": 100,
      "description": "Slug from list_practice_areas, if known"
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD, Tashkent time; a lawyer confirms"
    },
    "preferred_time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$",
      "description": "HH:MM, Mon–Fri 9:00–18:00 Tashkent"
    },
    "preferred_language": {
      "enum": [
        "ru",
        "uz",
        "en"
      ],
      "type": "string"
    },
    "user_accepts_price": {
      "type": "boolean",
      "const": true,
      "description": "true only if the user was told the price from get_consultation_price and agreed to pay it"
    }
  },
  "additionalProperties": false
}
book_consultation annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
726 ms
95th percentile latency
726 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 726 ms · metadata changed · 7 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http pactum-mcp https://pactum.uz/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add pactum-mcp --url https://pactum.uz/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable pactum-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "pactum-mcp": {
      "url": "https://pactum.uz/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "pactum-mcp": {
      "type": "streamableHttp",
      "url": "https://pactum.uz/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start pactum-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "pactum-mcp": {
      "type": "http",
      "url": "https://pactum.uz/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http pactum-mcp https://pactum.uz/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://pactum.uz/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "pactum-mcp": {
      "serverUrl": "https://pactum.uz/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Pactum MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Pactum MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing