Tulimoa
Server Details
Discover curated SaaS and AI-agent tools in the Tulimoa directory; submit and edit your listings.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Tulimoa/tulimoa-mcp
- GitHub Stars
- 1
- Server Listing
- Tulimoa MCP Server
TDQS
Scored across 5 tools
Each tool has a distinct purpose: edit_listing updates existing listings, get_listing retrieves detail, list_categories provides classification values, search_listings discovers listings, and submit_listing creates new listings. There is no overlap between creation, update, and retrieval operations.
All tool names follow a consistent verb_noun snake_case pattern: edit_listing, get_listing, list_categories, search_listings, submit_listing. The verbs are standard and the naming is predictable throughout.
With 5 tools, the set is well-scoped for a directory service. It covers discovery, detail retrieval, category lookup, creation, and editing without unnecessary bloat.
The surface covers search, read, category support, create, and update, which addresses core workflows. However, there is no delete_listing or a way to list one's own submissions directly, leaving minor gaps in full lifecycle management.
Available Tools
5 toolsedit_listingEdit one of your own Tulimoa listingsAInspect
Update fields of a listing you own (by slug). You cannot change ownership or set review status. Any edit sends the listing back to admin review (status: pending) and it reappears publicly only after re-approval. Every listing needs a logo: pass logo_url to replace it (required if the listing has none yet). Requires a write-scoped Tulimoa login.
| Name | Required | Description | Default |
|---|---|---|---|
| mcp | No | ||
| url | No | ||
| name | No | ||
| slug | Yes | Slug of YOUR listing to edit (from submit_listing). | |
| tags | No | ||
| category | No | ||
| logo_url | No | New logo. Public https URL of the company logo: PNG, JPEG, WebP, GIF or AVIF, at least 64 px, max 5 MB. A square icon works best. Tulimoa downloads it, scales it to max 512 px and stores it as WebP. Required if the listing has no logo yet. | |
| pricing_model | No | ||
| short_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Listing id. |
| slug | Yes | |
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the major side effect (any edit resets status to pending and hides the listing until re-approval), the logo prerequisite, and the write-scoped auth requirement. It omits partial-update semantics (whether omitted fields are preserved), which matters for a 9-parameter PATCH-style tool.
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 tight sentences, front-loaded with the core action and each sentence carrying a distinct constraint (scope, exclusions, side effect, prerequisite, auth). No padding or repetition of the title.
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 mutation tool with no annotations and an existing output schema, the description covers what the schema cannot: the destructive side effect on review status, the logo prerequisite, and the auth scope. Return values need not be explained given the output schema, so nothing an agent needs to call this correctly is missing.
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 only 22%, so the description must compensate. It adds real meaning for `slug` (must be YOUR listing, from submit_listing) and the conditional requirement on `logo_url`, plus implicitly signals which fields are non-editable. However, eight other parameters (name, url, tags, category, pricing_model, short_description, mcp) get no added semantics 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?
Specific verb+resource ("Update fields of a listing") with explicit scope ("you own", "by slug"). It also draws the boundary the agent needs against siblings: this is neither creation (submit_listing) nor retrieval (get_listing), and it excludes ownership/review-status changes.
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?
Clear context for use — editing your own existing listing — plus explicit exclusions ("cannot change ownership or set review status"). It does not name a sibling tool as the alternative for the excluded cases, so the routing guidance is implicit rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingGet one SaaS listingAInspect
Fetch full detail of a single Tulimoa listing by its slug: long description, features, use cases, integrations, pricing detail, and links. Use after search_listings when the user wants depth on a specific tool.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The listing's URL slug, e.g. 'acme-crm'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| listing | Yes | Full listing row (detail projection, see DETAIL_SELECT). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It correctly discloses that the tool fetches full details and lists returned fields, but lacks information about potential errors, rate limits, or permissions. For a simple read operation, this is minimally adequate but not comprehensive.
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 with no wasted words; purpose, content, and usage guidance are front-loaded and efficiently communicated.
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 (one required parameter), presence of an output schema, and no nested objects, the description fully covers what an agent needs: what it does, what data it returns, and when to use it.
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 a description for 'slug'. The description adds value by stating 'by its slug' and providing an example ('e.g. 'acme-crm''), going beyond the schema's bare description.
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 'Fetch full detail of a single Tulimoa listing by its slug' and enumerates the specific data fields returned (long description, features, integrations, etc.), differentiating it from sibling tools like search_listings (list) and submit_listing (create).
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 'Use after search_listings when the user wants depth on a specific tool,' providing clear context and a when-to-use scenario, effectively distinguishing from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList directory categoriesAInspect
List the category ids and labels used to classify Tulimoa listings. Call this first when you need a valid category value for search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| categories | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the output contains ids and labels and the use case, which is sufficient for a read-only list operation. Could explicitly note it is safe/idempotent but not required.
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 sentences, front-loaded with purpose then usage. No superfluous 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?
With no parameters and an output schema provided, the description covers all needed context: why to use it and what it returns.
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?
There are no parameters, so baseline is 4. The description adds value by specifying the output contents and 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 the tool lists category ids and labels for Tulimoa listings. It uses a specific verb and resource, and the sibling tools are all listing-related, so no ambiguity.
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 instructs to call first when a valid category value is needed for search_listings. This provides clear when and why 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.
search_listingsSearch SaaS listingsAInspect
Find SaaS tools in the Tulimoa directory that an AI agent or team can plug into. Discover tools by topic, category, pricing, MCP support, or EU hosting. Returns only approved, published listings. Use this for any 'find/recommend a tool for X' request, then call get_listing for full detail on a specific result.
| Name | Required | Description | Default |
|---|---|---|---|
| mcp | No | true = only tools that expose their own MCP server. | |
| sort | No | Result order. Default: popular. | |
| limit | No | Max results (1-50, default 20). | |
| query | No | Free-text terms matched against the listing name and short description. | |
| eu_only | No | true = only tools whose company country is in the EU. | |
| category | No | Restrict to one category id. Call list_categories for valid ids. | |
| pricing_model | No | Restrict to a pricing model. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of results returned. |
| results | Yes | Lean listing rows; call get_listing(slug) for full detail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that results are limited to approved, published listings and supports various filters. However, it does not mention default behavior (e.g., default sort or limit), pagination, or edge cases like empty queries. Some behavioral context is given but not exhaustive.
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 efficient with three concise sentences. It front-loads the purpose, lists available filters, and ends with clear usage guidance. Every sentence adds value with no 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?
The description covers the main purpose, filters, and next steps for a search tool with 7 optional parameters and an output schema. It lacks details on default behavior (covered in schema) but is otherwise complete for guiding an AI agent. Minor omission of explicit mention that all parameters are optional, but schema clarifies.
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 all 7 parameters, including enums. The description adds context by grouping parameters (e.g., 'topic, category, pricing, MCP support, or EU hosting') but does not provide significant additional meaning beyond 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 the tool finds SaaS tools in the Tulimoa directory by various filters (topic, category, pricing, MCP, EU hosting) and returns approved listings. It explicitly distinguishes itself from the sibling get_listing by advising to call it for full detail on a result.
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 explicitly states to use this tool for 'find/recommend a tool for X' requests and advises the next step of calling get_listing for details. This provides clear context and differentiation from editing, submitting, or listing categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_listingSubmit a SaaS listing to the Tulimoa directoryAInspect
Create a new listing in the Tulimoa directory on behalf of the authenticated user. The listing is created with status 'pending' and appears publicly only after admin review. Every listing needs a logo: pass logo_url (a public image URL, e.g. the company's square icon). Requires a write-scoped Tulimoa login. Use list_categories first to pick a valid category id.
| Name | Required | Description | Default |
|---|---|---|---|
| mcp | Yes | true = this tool exposes its own MCP server. | |
| url | Yes | Public homepage URL (https). | |
| name | Yes | Product/company name (max 60 chars). | |
| tags | No | Optional descriptive tags (max 8). | |
| country | Yes | ISO-3166-1 alpha-2 country code of the company, e.g. DE. | |
| category | Yes | One category id. Call list_categories for valid ids. | |
| logo_url | Yes | Required. Public https URL of the company logo: PNG, JPEG, WebP, GIF or AVIF, at least 64 px, max 5 MB. A square icon works best. Tulimoa downloads it, scales it to max 512 px and stores it as WebP. | |
| pricing_model | Yes | Pricing model (required): free | freemium | paid | lifetime. | |
| short_description | Yes | One-line pitch (max 300 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Listing id. |
| slug | Yes | Final slug (may carry a conflict suffix). |
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden and does well: it discloses the 'pending' initial status, the admin-review gate before public visibility, and the write-scoped auth requirement. It doesn't state rate limits or what happens on duplicate listings, which keeps it from a 5.
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 action and status outcome, then auth, then the key param constraint, then the sibling reference. 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?
With 8 required params, enums, an output schema present, and 100% schema coverage, the description covers the non-schema essentials: approval workflow, auth scope, and category prerequisite. Output/return details are rightly omitted. Only duplicate-handling and failure behavior are unaddressed.
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 parameters are already documented; baseline is 3. The description reinforces the logo_url requirement and suggests a square icon, but adds little the schema's own rich descriptions ('downloads it, scales to max 512 px, stores as WebP') don't already say.
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?
Specific verb+resource ('Create a new listing in the Tulimoa directory'), and the sibling set (edit/get/search/list_categories) makes the create-specific purpose unambiguous. Naming list_categories as a prerequisite further pins it to submission.
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 instructs 'Use list_categories first to pick a valid category id', giving a concrete prerequisite workflow. The 'on behalf of the authenticated user' framing and required login clarify the actor context.
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.
2 tool updates
- Changed
edit_listing1 field changed- added
Input schema / properties / logo_urlAdded value: +{ + "description": "New logo. Public https URL of the company logo: PNG, JPEG, WebP, GIF or AVIF, at least 64 px, max 5 MB. A square icon works best. Tulimoa downloads it, scales it to max 512 px and stores it as WebP. Required if the listing has no logo yet.", + "format": "uri", + "type": "string" +}
- Changed
submit_listing2 fields changed- added
Input schema / properties / logo_urlAdded value: +{ + "description": "Required. Public https URL of the company logo: PNG, JPEG, WebP, GIF or AVIF, at least 64 px, max 5 MB. A square icon works best. Tulimoa downloads it, scales it to max 512 px and stores it as WebP.", + "format": "uri", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name", - "url", - "short_description", - "country", - "category", - "mcp", - "pricing_model" -]New value: +[ + "name", + "url", + "short_description", + "country", + "category", + "mcp", + "pricing_model", + "logo_url" +]
5 tool updates
- Changed
edit_listing2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "id": { + "description": "Listing id.", + "type": "string" + }, + "slug": { + "type": "string" + }, + "status": { + "const": "pending", + "type": "string" + } + }, + "required": [ + "id", + "slug", + "status" + ], + "type": "object" +}
- Changed
get_listing2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "listing": { + "additionalProperties": {}, + "description": "Full listing row (detail projection, see DETAIL_SELECT).", + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name" + ], + "type": "object" + } + }, + "required": [ + "listing" + ], + "type": "object" +}
- Changed
list_categories2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "categories": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "labelDe": { + "type": "string" + } + }, + "required": [ + "id", + "label", + "labelDe" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "categories" + ], + "type": "object" +}
- Changed
search_listings2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of results returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "results": { + "description": "Lean listing rows; call get_listing(slug) for full detail.", + "items": { + "additionalProperties": {}, + "properties": { + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "mcp": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "pricing_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "short_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "slug": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "slug", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "count", + "results" + ], + "type": "object" +}
- Changed
submit_listing2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "id": { + "description": "Listing id.", + "type": "string" + }, + "slug": { + "description": "Final slug (may carry a conflict suffix).", + "type": "string" + }, + "status": { + "const": "pending", + "type": "string" + } + }, + "required": [ + "id", + "slug", + "status" + ], + "type": "object" +}
3 tool updates
- Changed
edit_listing1 field changed- changed
Input schema / properties / category / enumPrevious value: -[ - "sales-crm", - "marketing", - "communication", - "productivity", - "developer-tools", - "finance-ops", - "hr-people", - "customer-support", - "data-analytics", - "ai-infra", - "compliance-hosting" -]New value: +[ + "developer-tools", + "ai-infra", + "sales-crm", + "marketing", + "productivity", + "data-analytics", + "finance-accounting", + "customer-support", + "hr-recruiting", + "design-creative", + "security-privacy", + "communication", + "commerce-payments", + "automation-nocode", + "other" +]
- Changed
search_listings1 field changed- changed
Input schema / properties / category / enumPrevious value: -[ - "sales-crm", - "marketing", - "communication", - "productivity", - "developer-tools", - "finance-ops", - "hr-people", - "customer-support", - "data-analytics", - "ai-infra", - "compliance-hosting" -]New value: +[ + "developer-tools", + "ai-infra", + "sales-crm", + "marketing", + "productivity", + "data-analytics", + "finance-accounting", + "customer-support", + "hr-recruiting", + "design-creative", + "security-privacy", + "communication", + "commerce-payments", + "automation-nocode", + "other" +]
- Changed
submit_listing3 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "sales-crm", - "marketing", - "communication", - "productivity", - "developer-tools", - "finance-ops", - "hr-people", - "customer-support", - "data-analytics", - "ai-infra", - "compliance-hosting" -]New value: +[ + "developer-tools", + "ai-infra", + "sales-crm", + "marketing", + "productivity", + "data-analytics", + "finance-accounting", + "customer-support", + "hr-recruiting", + "design-creative", + "security-privacy", + "communication", + "commerce-payments", + "automation-nocode", + "other" +] - changed
Input schema / properties / pricing_model / descriptionPrevious value: -"Optional: free | freemium | paid | lifetime."New value: +"Pricing model (required): free | freemium | paid | lifetime." - changed
Input schema / requiredPrevious value: -[ - "name", - "url", - "short_description", - "country", - "category", - "mcp" -]New value: +[ + "name", + "url", + "short_description", + "country", + "category", + "mcp", + "pricing_model" +]
2 tool updates
- Added
edit_listing - Added
submit_listing
3 tool updates
- First observed
get_listing - First observed
list_categories - First observed
search_listings
Related MCP Connectors
Agent-callable B2B SaaS directory: capability-structured, continuously verified listings.
Independent directory of agentic AI tools — search, compare & recommend via MCP. Read-only.
Find, compare, and discover software, SaaS, and AI tools - pricing, alternatives, and trends.
Directory of APIs, merchants, and tools AI agents can actually use.
Related MCP Servers
- AlicenseAqualityAmaintenanceGive your AI agent access to 8,400+ software tools — search, compare, get pricing, find alternatives, and discover the best tool for any use case.835 npm4MIT
- AlicenseNot gradedqualityNot gradedmaintenanceSearch and discover 500+ tools, APIs, and services for AI agents. Browse 15 categories, get recommendations, and access structured metadata including auth methods, free tiers, and example calls.1-
- FlicenseNot gradedqualityAmaintenanceMachine-readable directory of AI products that register themselves, plus an agent-readability grader for any URL.1-
- AlicenseAqualityCmaintenanceEnables AI agents to query real-time SaaS pricing tiers, compare developer tools side-by-side, and retrieve recent product changelogs.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.