aspro-mcp
The aspro-mcp server acts as a bridge between LLM clients (e.g., Claude Desktop) and the Aspro.Cloud REST API, enabling AI models to discover and interact with the full API in a self-guided way.
List Modules (
aspro_list_modules): Retrieve all top-level API modules (e.g.,crm,fin,agile,task) with entity and operation counts.List Entities (
aspro_list_entities): Explore entities within a module and see available methods.List Methods (
aspro_list_methods): View all operations (HTTP method + path + description) for a module, optionally filtered by entity.Search (
aspro_search): Case-insensitive substring search across module names, entity names, methods, paths, descriptions, and tags.Describe an Operation (
aspro_describe): Get the full schema for a specific operation, including parameters and request body fields with types and descriptions.Execute API Calls (
aspro_call): Call any endpoint with path parameters, query arguments, and form-urlencoded body fields. The API key is appended automatically.
Supports both GET and write operations (POST/PUT/DELETE). Configure via company subdomain or a full custom base URL. Note: all operations including destructive ones (delete) are available, so the API key should have minimal required permissions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aspro-mcplist the available modules in Aspro"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
aspro-mcp
A Model Context Protocol server that exposes the Aspro.Cloud REST API to LLM clients (Claude Desktop, Claude Code, etc.). The server ships with the bundled OpenAPI spec, so the model can discover modules, entities and methods on its own and call them safely.
Features
Self-describing. The model browses the API via
aspro_search/aspro_list_*→aspro_describe, and only then calls — no need to memorize endpoints.Keyword search with Russian inflection handling, so
сделка,сделкиandсоздать задачуall land on the right endpoint.Reads and writes are separate tools.
aspro_callis read-only and annotated as such;aspro_writeis annotated destructive, so clients can auto-approve reads without also waving through deletes.Read-only mode via
ASPRO_READ_ONLY=1— mutating operations are refused before any request leaves the process.The API key never reaches the model. It is redacted from every URL and error message the tools return.
Response schemas.
aspro_describereports the fields an endpoint returns, not just what it accepts.Form-urlencoded POSTs by default (Aspro's expected content type), with array and nested-object handling.
Per-tenant config via
ASPRO_COMPANY(subdomain) or fullASPRO_BASE_URL.
Related MCP server: openapi-mcp-bridge
Install
Run it straight from npm — no checkout needed:
npx -y aspro-mcpOr clone and build:
git clone https://github.com/bssth/aspro-mcp.git
cd aspro-mcp
npm install
npm run buildRequires Node.js ≥ 18.
Wire it up to a client
Claude Desktop / Claude Code
Pass the credentials in the env block — this is the recommended setup and the only one that works with npx:
{
"mcpServers": {
"aspro": {
"command": "npx",
"args": ["-y", "aspro-mcp"],
"env": {
"ASPRO_COMPANY": "your_company",
"ASPRO_API_KEY": "your_api_key_here"
}
}
}
}For a local checkout, point at the built entry point instead:
{
"mcpServers": {
"aspro": {
"command": "node",
"args": ["/absolute/path/to/aspro-mcp/dist/index.js"],
"env": {
"ASPRO_COMPANY": "your_company",
"ASPRO_API_KEY": "your_api_key_here"
}
}
}
}Other MCP clients
Any client that speaks MCP over stdio can run npx -y aspro-mcp (or node dist/index.js).
Configure
Configuration comes from the environment. A local checkout can also use a .env file in the package root, which is read regardless of the client's working directory:
cp .env.example .envASPRO_COMPANY=your_company # the {company} part of https://{company}.aspro.cloud
ASPRO_API_KEY=your_api_key_here # passed as ?api_key=... on every request
# ASPRO_BASE_URL=... # optional; overrides the URL built from ASPRO_COMPANY
# ASPRO_TIMEOUT_MS=30000 # optional; default 30s
# ASPRO_READ_ONLY=1 # optional; refuse create/update/delete entirely
# ASPRO_MAX_RESPONSE_CHARS=60000 # optional; cap on a single tool resultUnder npx the package lives in the npm cache, so there is no .env to read — use the env block shown above. Variables already present in the environment always win over .env.
Get an API key in your Aspro.Cloud account under Settings → Integrations → API.
Without credentials the server still starts and serves the discovery tools, which work entirely offline from the bundled spec; only the calling tools report the configuration error.
Tools exposed
Tool | What it does |
| List top-level modules ( |
| List entities inside a module and the methods available on each. |
| List operations (HTTP method + path + short description) for a module, optionally filtered by entity. |
| Keyword search across module / entity / method / path / description / tags. |
| Full schema for one operation: parameters, body fields, response fields, and whether it mutates data. |
| Execute a read ( |
| Execute a create / update / delete. Not registered at all when |
The recommended flow is search/list_* → describe → call/write.
Security notes
Aspro serves
/delete/{id}over HTTP GET. The HTTP verb tells you nothing about whether an operation is destructive, so do not build approval rules around it. This server classifies operations by their method segment and reports that asmutating;aspro_writecarries the destructive annotation andaspro_callrefuses anything that mutates.The API key is read from the environment and appended to every request as
?api_key=.... It is redacted from the URLs and error messages returned to the model, but it still lives in the client config — never commit.env.There is no per-endpoint allowlist: once configured,
aspro_writecan reach any mutating endpoint in the spec. Use a dedicated API key with the minimum necessary permissions, and setASPRO_READ_ONLY=1if the model has no business writing.Treat tool output as untrusted: Aspro entities (custom field values, descriptions, etc.) may contain user-supplied content.
Notes on the bundled spec
The spec documents no query parameters at all, yet list endpoints accept several. These were verified against a live tenant and are described to the model in the server instructions:
Parameter | Behaviour |
| 1-based page number. |
| Shrinks the page. A page holds at most 25 items regardless of a higher value. |
| Exact match on a response field, e.g. |
| Full-text search across the entity. |
Two traps worth knowing:
Unknown or unsupported query parameters are ignored silently, not rejected. A filter that does nothing looks exactly like a filter that matched everything, so verify against the returned items.
totalreports the unfiltered count, so it does not tell you how many rows matched a filter.
No working sort parameter was found.
Per-account custom fields (cf_<id> / cf_<alias>) are absent from the spec because they vary per tenant. They still come back in responses and can be sent in body.
Develop
npm run dev # tsc --watch
npm run build # tsc
npm test # smoke + e2eNeither suite hits the network. npm run smoke stubs fetch and asserts that the bundled spec parses, that mutating operations are classified correctly (including GET-served deletes), that search finds the expected endpoints, that URLs are built correctly, that the API key never appears in a tool result or error, and that oversized responses are capped. npm run e2e starts the built server over stdio with a real MCP client and checks the exposed tools, their annotations, and that ASPRO_READ_ONLY actually withholds aspro_write.
Project layout
src/
index.ts MCP server (tool registration + entry point)
config.ts environment loading and validation
client.ts HTTP client (URL building, redaction, form-urlencoded POSTs, timeouts, size caps)
spec.ts OpenAPI indexer (modules / entities / methods / search / describe)
smoke.ts offline unit tests
e2e.ts stdio round-trip against a real MCP client
spec/
openapi.json bundled Aspro.Cloud OpenAPI specContributing
Issues and PRs welcome. Please run npm run build && npm run smoke before submitting.
License
MIT — see LICENSE.
aspro-mcp is an unofficial third-party connector and is not affiliated with Aspro.Cloud.
Available Tools
7 toolsaspro_callARead-only
Read data from Aspro.Cloud — the list and get methods only. Run aspro_describe first to learn the parameter shape. Pass the entity id via id, query-string args via query. Returns { status, ok, url, data }. Use aspro_write for create/update/delete.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Path id, when the operation path contains {id}. | |
| body | No | Form-urlencoded body fields for POST operations. | |
| query | No | Query string parameters. Do not include api_key — it is added automatically. | |
| entity | Yes | ||
| method | Yes | ||
| module | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that only list and get methods are supported, that api_key is automatically added, and the exact return structure { status, ok, url, data }. It also indicates parameter shapes are entity-specific and require aspro_describe first, going beyond the readOnlyHint and openWorldHint annotations with concrete behavioral details.
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 five short, purpose-driven sentences with no redundancy. It front-loads the core purpose and each subsequent sentence adds a necessary operational detail, making it highly concise and well-structured.
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?
With no output schema, the description provides the return shape, which is vital. It also gives parameter-passing conventions, the prerequisite of running aspro_describe, and contrasts with aspro_write. For a generic read tool with sibling tools, this is complete enough for correct 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?
The description explains how to use id and query ('Pass the entity id via `id`, query-string args via `query`') and warns not to include api_key. It directs users to aspro_describe for the full parameter shape, which compensates for the schema's 50% coverage. However, it leaves module/entity/method semantics implicit and does not mention body, though the list/get restriction makes body usage less relevant.
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 opens with 'Read data from Aspro.Cloud' and immediately specifies 'the `list` and `get` methods only,' clearly defining the tool's scope. It also distinguishes it from aspro_write by stating 'Use aspro_write for create/update/delete,' providing explicit differentiation from the write sibling.
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 gives explicit when-to-use (reading via list/get), when-not-to-use (use aspro_write for writes), and a prerequisite (run aspro_describe first to learn parameter shapes). It also names an alternative tool for write operations, which is clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aspro_describeARead-only
Return the full schema for one operation: HTTP method, path, whether it mutates data, request-body fields and the fields present in the response.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | ||
| method | Yes | Method segment, e.g. 'list', 'get', 'create', 'update', 'delete'. | |
| module | Yes | ||
| include_raw_response_schema | No | Include the untrimmed OpenAPI response schema. Verbose; off by default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates that the tool is safe and read-only. The description adds useful context about the content of the response (e.g., 'whether it mutates data' as part of the operation schema) but does not disclose additional behavioral traits such as authentication needs or performance characteristics.
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, front-loaded sentence that efficiently conveys the tool's function and the key components of the returned schema. 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?
For a describe tool with no output schema, the description adequately covers what will be returned. It includes the essential details (HTTP method, path, mutation flag, request/response fields). However, it could be more complete by mentioning how module/entity/method are specified, but the schema fills in required parameters.
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?
The input schema provides descriptions for 'method' and 'include_raw_response_schema' but not for 'module' and 'entity' (50% coverage). The description clarifies the overall purpose but does not explain individual parameters in depth. It relies partly on the schema to communicate parameter meaning.
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's purpose: 'Return the full schema for one operation' with specific details (HTTP method, path, mutation, request-body, response fields). This distinguishes it from sibling tools like aspro_list_methods and aspro_call by focusing on schema introspection for a single operation.
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 phrase 'for one operation' provides clear context that this tool is used when detailed schema information for a single operation is needed, rather than listing all modules/entities/methods. However, it does not explicitly mention when not to use it or name alternative tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aspro_list_entitiesARead-only
List entities inside a given module along with the methods available on each entity.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | Module name, e.g. 'crm', 'fin', 'task'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, so safety and closed-world behavior are covered. The description adds that the result includes methods per entity, which is useful. However, it does not clarify whether the listing is exhaustive, paginated, or what the exact response structure is, so behavioral disclosure is only partial.
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, dense sentence that conveys the core purpose and return value without any filler. Every word contributes meaning, and it is front-loaded with the action and resource.
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 list tool with one parameter and a read-only annotation, the description is largely sufficient: it states what is listed and that methods are included. There is no output schema, but the description gives a reasonable idea of the return content. Missing details like sorting or filtering are not essential for this tool's simplicity.
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?
The input schema has 100% coverage for the single 'module' parameter with a clear description and examples. The tool description adds no further semantic detail beyond the schema, so the 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 uses a specific verb ('List') and resource ('entities inside a given module') and mentions the additional inclusion of methods on each entity. This clearly distinguishes it from sibling tools like aspro_list_modules (which lists modules) and aspro_list_methods (which likely lists methods in isolation), making the purpose unmistakable.
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 implies usage when you know a module name and want to explore its entities, but it provides no explicit guidance on when to use this tool versus aspro_list_methods or aspro_search. No alternative tools or exclusions are mentioned, so the usage context is only inferred from the sibling names and the parameter requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aspro_list_methodsARead-only
List operations (HTTP method + path + short description) for a given module and optional entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | No | Entity name. Omit to list operations across all entities of the module. | |
| module | Yes | Module name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds context about the return payload: each operation includes HTTP method, path, and short description. It also clarifies the 'optional entity' filtering behavior. No additional behavioral traits such as pagination or rate limits are disclosed, but that is not essential here.
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, front-loaded with the core action ('List operations'), and every word contributes meaning. No fluff or 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 tool's simplicity, two parameters, and the presence of the readOnlyHint annotation, the description adequately communicates the tool's purpose, input scope, and return content (HTTP method, path, short description). It does not need to explain an output schema since none exists, and the context is clear enough for an agent to select and invoke the tool 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?
The input schema already provides descriptions for both 'module' and 'entity', with 100% coverage. The description merely echoes the terms 'module' and 'optional entity' without adding extra semantics, so it adds minimal value over the schema, resulting in a baseline score of 3.
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 uses a specific verb ('List') and resource ('operations') with clear modifiers ('for a given module and optional entity'). It distinguishes itself from sibling tools like aspro_list_modules and aspro_list_entities by focusing on operations.
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?
It specifies the context of use: given a module and optionally an entity. It implies the user should first select a module (via aspro_list_modules) and optionally an entity, but does not explicitly state when to prefer this over aspro_search or aspro_describe. This is clear context without explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aspro_list_modulesARead-only
List all top-level Aspro.Cloud API modules (crm, fin, agile, task, etc.) with entity and operation counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the read-only safety is known. The description adds valuable context by specifying it returns entity and operation counts, and that it lists top-level modules. No contradiction with annotations; the added detail exceeds the bare operation.
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, front-loaded sentence that packs the purpose, scope, and output details without redundant words. Every word earns its place, making it highly concise and well-structured.
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 zero-parameter, read-only listing tool with no output schema, the description is complete: it states what is listed, the scope (top-level modules), and the output content (entity and operation counts). No missing elements are apparent for this simple tool.
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?
The tool has zero parameters, so the description need not explain parameter meanings. The schema confirms no properties, and the description focuses on output, which is appropriate. Baseline of 4 applies for no-parameter tools.
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 lists all top-level Aspro.Cloud API modules with counts, using a specific verb and resource. It explicitly names examples (crm, fin, agile, task) and distinguishes from sibling tools like list_entities and list_methods by focusing on module-level scope.
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 context for when to use this tool—when an overview of top-level modules is needed. However, it does not explicitly mention when not to use it or name alternatives such as list_entities, so it stops short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aspro_searchARead-only
Search operations by keyword across module/entity/method/path/description/tags. Handles Russian inflection and multi-word queries ('создать задачу', 'сделки').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 30). | |
| query | Yes | Keywords to search for, case-insensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds behavioral context: it searches across specific fields and handles Russian inflection and multi-word queries. This gives the agent a better understanding of how queries are processed and what results to expect, without contradicting the annotation.
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 two concise sentences, front-loaded with the primary purpose and followed by a useful behavioral note. No redundant or 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 the simple two-parameter schema and read-only annotation, the description covers the essential aspects: purpose, search target, and unique query handling. It does not describe return format or pagination, but these are less critical for a keyword-search tool and the schema covers limit.
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?
The schema already describes query as 'case-insensitive' and limit with max/default, but the description enriches the query semantics by mentioning Russian inflection and multi-word query support, adding meaning that the schema does not provide.
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's function: 'Search operations by keyword across module/entity/method/path/description/tags.' It uses a specific verb ('Search') and identifies the resource ('operations') and search scope, which distinguishes it from sibling list tools like aspro_list_modules or aspro_describe.
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 implies usage: use when you need to find operations by keyword. It does not explicitly contrast with alternatives or list exclusions, but the clear focus on keyword-based search provides sufficient context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aspro_writeADestructive
Create, update or DELETE data in Aspro.Cloud. Destructive — the change is applied to the live account and cannot be undone from here. Run aspro_describe first. Pass the entity id via id and body fields via body. Note that delete is served over HTTP GET.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Path id, when the operation path contains {id}. | |
| body | No | Form-urlencoded body fields for POST operations. | |
| query | No | Query string parameters. Do not include api_key — it is added automatically. | |
| entity | Yes | ||
| method | Yes | ||
| module | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' destructiveHint=true, the description adds specifics: changes are applied to the live account and cannot be undone, and delete is served over HTTP GET. This gives the agent crucial behavioral expectations not derivable from schema or 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?
Four sentences, front-loaded with the main action, then warning, usage, and the GET quirk. No fluff – each sentence provides actionable 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?
The description covers purpose, destructive warning, workflow (aspro_describe), and a surprising HTTP GET behavior. While module/entity/method semantics are left to aspro_describe, the tool is generic and the instruction to run describe first is a viable handoff. Given no output schema, it does not explain return values, but that's acceptable for a write tool.
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 covers id, body, and query descriptions (50% coverage). The description reinforces id as entity id and body as body fields, but module, entity, and method remain undocumented. It points to aspro_describe for context, partially compensating, but the description adds limited new meaning 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 writes (create/update/delete) data in Aspro.Cloud, distinguishing it from read-only siblings like aspro_list_* and aspro_search. It also emphasizes the destructive nature, which is a key distinguishing trait.
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?
It explicitly instructs to run aspro_describe first, setting up a workflow. The destructive warning implies caution, and the mention of create/update/delete implies it's for mutations, separating it from read tools. However, it doesn't explicitly name read-only alternatives or say when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.2.0- Changed
aspro_describe1 field changed- added
Input schema / properties / include_raw_response_schemaAdded value: +{ + "description": "Include the untrimmed OpenAPI response schema. Verbose; off by default.", + "type": "boolean" +}
- Changed
aspro_search1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Substring to search for, case-insensitive."New value: +"Keywords to search for, case-insensitive."
- Added
aspro_write
6 tool updates
v0.1.1- First observed
aspro_call - First observed
aspro_describe - First observed
aspro_list_entities - First observed
aspro_list_methods - First observed
aspro_list_modules - First observed
aspro_search
TDQS
Each tool has a clearly distinct role: discovery (modules, entities, methods), search, schema description, read execution, and write execution. There is no overlap in purpose, so an agent can easily select the right tool for each step.
All tool names follow the aspro_ prefix with a descriptive verb: aspro_list_modules, aspro_list_entities, aspro_list_methods, aspro_search, aspro_describe, aspro_call, aspro_write. The pattern is consistent and predictable, making it easy to infer functionality from the name.
Seven tools is well-scoped for an API exploration and interaction server. Each tool earns its place, covering the full workflow from discovery to execution without unnecessary redundancy or bloat.
The tool surface covers the complete API interaction lifecycle: exploring modules and entities, listing methods, searching, describing schemas, reading data, and writing data. No obvious gaps are apparent for the stated purpose of working with Aspro.Cloud.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-callable tools for API mocking, testing, monitoring, security, and automation.
Turn any task into the right API calls: discover, evaluate, and integrate public APIs.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
471Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
1
Related MCP Servers
- FlicenseBqualityDmaintenanceExposes Zoho CRM v6 REST API as structured tools for LLM agents via MCP, enabling CRUD operations, search, COQL queries, and more.113-
- AlicenseNot gradedqualityBmaintenanceTurns any OpenAPI/Swagger API into MCP tools, enabling AI assistants to call REST API endpoints directly.2MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to manage CRM deals and tasks on Aspro Cloud, including CRUD operations on deals, tasks, users, pipelines, and workflows.16-
- FlicenseNot gradedqualityDmaintenanceEnables language models to interact with Bitrix24 CRM, providing tools to manage deals, leads, contacts, tasks, activities, users, files, chat messages, and live chat sessions.131-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/bssth/aspro-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server