Skip to main content
Glama
offorte

Offorte Proposal Software

Official
by offorte

Offorte MCP Server

MCP server for Offorte - Create & send proposals using AI.

This server acts as the bridge between AI agents and Offorte's proposal engine. It enables external models to create and send proposals via Offorte. Built for automation workflows, the MCP makes it easy to integrate proposal actions into AI tools, chat interfaces, and autonomous systems.

Early technology Please note that MCP (Model Context Protocol) is a new approach to AI integration. While powerful, it's still evolving and may occasionally produce unexpected or undesired results.

Table of Contents

Related MCP server: mcp-clickup

About Offorte

Offorte is automated proposal software which helps businesses create, send, and track beautiful interactive proposals. Built for speed, flexibility, and real-world use, it combines automation and smart workflows without sacrificing the personal touch. Learn more about Offorte.

API

The MCP server is using the Offorte Public API v2. Read the API documentation for more information.

Demo

Experience the future of proposals: voice-triggered, AI-powered, fully automated. See how Offorte connects voice and workflow in this real demo.

Goals & Coverage

The goal of this project is too create & send proposals using AI via the protocol. Because of the experimental character, the full Offorte API is not covered and its limited to the tools needed to create & send proposals. Tools which could lead to an LLM updating and deleting stuff are not yet implemented. Update and delete commands might be added in the future, based on reallife results & user feedback.

Prerequisites

  • Node.js (tested with Node.js 20.x.x)

  • Offorte API Key (see Authentication Section of the Offorte API Docs)

  • PNPM for development

  • TRANSPORT_TYPE (optional): Set to sse to enable Server-Sent Events (SSE) mode, or leave unset/default for stdio (default: stdio).

Available Tools

Context & Setup

  • get_initial_contextIMPORTANT: Must be called before using any other tools to initialize context and get usage instructions

Account

  • get_users – Lists all account users for the current account

Automations

  • get_automation_sets – Lists automation sets which are used as an optional input to create a new proposal

Contacts

  • create_contact – Create a new contact (organisation or person/individual)

  • get_contact_details - Get all details for a contact by id

  • search_contact_organisations - Search for organisations by name in the contacts

  • search_contact_people - Search for people by name in the contacts

Favorites

  • get_proposal_templates – Lists proposal templates which are used as starting points to create new proposals

Proposals

  • create_proposal – Create a new proposal

  • get_proposal_directories – Get all proposal directories grouped by status

  • search_proposals – Search for proposals by query

  • send_proposal – Send a proposal to its assigned contacts

Settings

  • get_design_templates – Lists available design templates which are used to create new proposals

  • get_email_templates – Lists available email templates which are used to send proposals

  • get_text_templates – Lists available language text templates which are used to create new proposals

MCP Clients

Currently, this MCP server has only been tested with Claude Desktop. More client examples will be added in the future.

Claude Desktop Configuration

Find your claude_desktop_config.json at Claude > Settings > Developer > Edit Config and depending on which option you'd like, add JUST ONE of the following:

NPX

Running it straight from the npm registry.

{
	"mcpServers": {
		"offorte-proposals": {
			"command": "npx",
			"args": ["-y", "@offorte/mcp-server"],
			"env": {
				"OFFORTE_ACCOUNT_NAME": "<YOUR_ACCOUNT_NAME>",
				"OFFORTE_API_KEY": "<YOUR_TOKEN>"
			}
		}
	}
}

Local Node

Dependencies should have been installed & the project is build before you use this method (pnpm install).

{
	"mcpServers": {
		"offorte-proposals": {
			"command": "node",
			"args": ["/path/to/directory/offorte-mcp-server/dist/server.js"],
			"env": {
				"OFFORTE_ACCOUNT_NAME": "<YOUR_ACCOUNT_NAME>",
				"OFFORTE_API_KEY": "<YOUR_TOKEN>"
			}
		}
	}
}

Development

To get started, clone the repository and install the dependencies. Make sure you have an .env file and it includes the proper values.

git clone https://github.com/offorte/offorte-mcp-server.git
cd offorte-mcp-server
pnpm install
pnpm dev

Commands

Check the NPM scripts for all commands, below is a short summary of the most important onces.

Script

Info

pnpm build

Build the project for production

pnpm start

Start the production server

pnpm dev

Start the development server

pnpm inspect

Inspect the server

pnpm format

Format code using Prettier and ESLint

Available Tools

15 tools
create_contactC

Create a new contact (organisation or person/individual)

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
nameYes
tagsNo
typeYes
emailNo
phoneNo
stateNo
mobileNo
streetNo
countryNo
twitterNo
zipcodeNo
facebookNo
internetNo
lastnameNo
linkedinNo
firstnameNo
instagramNo
coc_numberNo
salutationNo
vat_numberNo

TDQS

C2.8/5.0
Behavior2/5

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

Description only says 'Create' with no behavioral details beyond annotations. Annotations provide openWorldHint, but description adds no context about side effects, permissions, or idempotency.

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

Conciseness4/5

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

Single sentence is very concise, but given the tool's complexity (21 parameters), it could benefit from additional structure without being verbose.

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

Completeness2/5

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

No output schema, minimal parameter documentation, and no mention of return values or error handling. The description is insufficient for an agent to fully understand how to use the tool.

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

Parameters1/5

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

With 21 parameters and 0% schema description coverage, the description does not explain any parameter meaning. It mentions 'organisation or person/individual' which relates to the type parameter, but no other parameter semantics are provided.

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?

Description clearly states the tool creates a contact, specifying subtypes (organisation or person/individual), which distinguishes it from sibling search tools. The verb 'create' and resource 'contact' are explicit.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like search_contact_organisations or create_proposal. Missing context on prerequisites or post-conditions.

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

create_proposalC

Create a new proposal

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
contact_idYes
custom_fieldsNo
contact_peopleYes
account_user_idNo
text_template_idYes
design_template_idYes
proposal_template_idYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations only include 'openWorldHint: true', which the description does not explain or expand upon. The description adds no behavioral context, such as side effects, permissions, or whether the tool is idempotent. No contradiction with annotations.

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

Conciseness3/5

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

The description is extremely concise at one sentence, but it sacrifices helpfulness for brevity. It lacks structure and does not earn its place since it adds minimal value beyond the tool name.

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

Completeness1/5

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

With 8 parameters, no output schema, and no behavioral context, the description is completely inadequate. It does not cover expected input, output, or side effects, leaving the agent with insufficient information to use the tool effectively.

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

Parameters1/5

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

The description does not explain any of the 8 parameters, and the schema has 0% description coverage, leaving parameter semantics entirely to inference from names like 'contact_id', which is insufficient for complex types like 'custom_fields'.

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

Purpose3/5

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

The description 'Create a new proposal' is a verb+resource pair and clearly states the tool's basic function, but it does not differentiate from sibling tools like 'create_contact' or 'search_proposals', lacking specificity about what a proposal is in this context.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when to create a proposal vs. search for existing ones. There is no context about prerequisites or common workflows.

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

get_account_usersA

Lists all account users for the current account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

The description lacks annotations like readOnlyHint or destructiveHint. While 'Lists' implies a read operation, it does not disclose other behaviors such as pagination, sorting, or response format. The description minimally covers transparency beyond the annotation openWorldHint.

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 a single, concise sentence with no redundancy or unnecessary words. It efficiently conveys the tool's purpose.

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

Completeness3/5

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

The tool is simple with no parameters and no output schema. The description tells what it does but omits details about the return format (e.g., list of user objects). It could be slightly more complete by hinting at the output structure.

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

Parameters4/5

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

With zero parameters, the schema provides all necessary structural info. The description adds valuable context by clarifying 'for the current account', which indicates the account is determined by authentication. This exceeds the baseline expectation for 0-parameter tools.

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 a specific verb 'Lists' and resource 'account users', clearly indicating the tool's function. It distinguishes itself from siblings like create_contact, get_proposal_templates, etc., which are unrelated to listing users.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. However, the sibling tools cover different domains (contacts, proposals, templates), implying this is the go-to for account users. Usage context is implied but not stated.

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

get_automation_setsA

Lists automation sets which are used as an optional input to create a new proposal

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

The description adds minimal behavioral context beyond the annotations (openWorldHint). It does not contradict annotations, but could disclose more about order or limits if applicable. For a no-parameter list tool, this is adequate.

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 a single sentence that efficiently conveys the purpose and context without any unnecessary words.

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?

For a simple list tool with no parameters and no output schema, the description fully explains what the tool returns and its relevance, making it complete for agent selection.

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

Parameters4/5

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

There are no parameters, so the description does not need to explain them. The schema coverage is 100%, and the description appropriately omits parameter details.

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 lists automation sets and explains their use as an optional input for creating a new proposal, distinguishing it from sibling tools that list other entities.

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 implies when to use the tool (when you need automation sets for proposal creation) but does not explicitly state when not to use it or provide alternatives. The context is clear enough for a simple list tool.

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

get_contact_detailsB

Get all details for a contact by id

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYes

TDQS

B3/5.0
Behavior3/5

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

The description is consistent with the openWorldHint annotation (true), indicating the response may include additional fields. However, it adds no extra behavioral context beyond what the annotation already provides.

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

Conciseness4/5

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

The description is a single, short sentence that directly conveys the tool's purpose. It is concise and to the point, though it lacks structure like a summary or usage example.

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

Completeness3/5

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

For a simple 'get by ID' pattern with one required parameter and no output schema, the description is minimally adequate. However, the openWorldHint could be leveraged to hint at dynamic fields, which is missing.

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

Parameters2/5

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

With 0% schema description coverage, the description should compensate but only says 'by id', which adds no meaning beyond the parameter name 'contact_id'. The type and format remain unspecified.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('all details for a contact by id'), making it easy to understand. It distinguishes from sibling tools like get_account_users or get_design_templates by specifying the focus on contacts, but does not explicitly differentiate from search_contact_people.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like search_contact_people or other get_* tools. No mention of context, prerequisites, or exclusions.

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

get_design_templatesA

Lists available design templates which are used to create new proposals

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

The description does not disclose behavioral traits beyond the annotation openWorldHint. It lacks details on whether the list is paginated, sorted, or requires authentication. The annotation covers result stability, but the description adds nothing extra.

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

Conciseness4/5

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

The description is a single, clear sentence with no excess words. It is front-loaded with the action. However, it could be slightly more concise by removing 'which are used to create new proposals' if that is implied by context.

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

Completeness3/5

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

The tool has no output schema, and the description does not explain the return format or contents. For a list tool, agents would benefit from knowing what fields are included. The annotation openWorldHint hints at variability but is not elaborated.

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

Parameters4/5

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

The tool has no parameters, and schema coverage is 100%. With zero parameters, the baseline is 4. The description adds no parameter information, which is acceptable since there are none to describe.

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 lists design templates for creating proposals. It uses a specific verb ('Lists') and resource ('design templates'), and distinguishes from siblings like get_proposal_templates or get_email_templates.

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

Usage Guidelines3/5

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

The description implies usage context (for creating proposals) but provides no explicit guidance on when to use this tool vs alternatives such as get_proposal_templates. No exclusions or when-not-to-use information is given.

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

get_email_templatesA

Lists available email templates which are used to send proposals

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations beyond openWorldHint are provided. The description does not disclose any behavioral traits such as side effects, rate limits, or authentication requirements. For a simple read operation, this is a minor gap.

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?

A single sentence with no wasted words, front-loading the action and resource. Every word earns its 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?

Given the tool has no input parameters and no output schema, the description is minimally sufficient. It could mention the return type but is not required.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is effectively 100%. According to guidelines, 0 parameters warrant a baseline of 4, and the description does not need to add parameter info.

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 verb 'lists' and the resource 'email templates', and adds the context that they are used to send proposals. This effectively distinguishes it from sibling tools like get_design_templates and get_text_templates.

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

Usage Guidelines3/5

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

The description implies usage for sending proposals but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.

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

get_initial_contextA

IMPORTANT: This tool must be called before using any other tools. It will get usage instructions & Offorte context for this MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations directly describe behavior, but the description reveals it's a retrieval operation with no destructive side effects, which is adequate for a setup tool.

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?

Two sentences, no wasted words, and the essential warning is front-loaded. Perfectly concise.

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?

With no parameters and no output schema, the description fully covers the tool's purpose and usage context. Complete for the given complexity.

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

Parameters4/5

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

There are zero parameters, and schema coverage is 100%, so the description need not add parameter details. Baseline score of 4 applies.

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 it retrieves usage instructions and context, and specifies it must be called before any other tools, distinguishing it from all sibling tools.

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

Usage Guidelines5/5

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

Explicitly instructs the agent to call this tool first, providing clear when-to-use guidance. No alternatives are needed as it's a prerequisite.

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

get_proposal_directoriesA

Get all proposal directories grouped by status (edit, open, won, lost, closed)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description accurately reflects the tool's read-only nature (getting data) and matches the openWorldHint annotation. No additional behavioral traits need disclosure for this simple retrieval tool.

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 a single, well-structured sentence that front-loads the purpose and immediately informs agents of the grouping behavior. No extraneous information.

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?

With no output schema, the description adequately explains what the tool returns (all directories grouped by status). A minor addition could clarify the grouping format, but it is sufficient for tool selection.

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

Parameters4/5

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 add parameter details. Baseline 4 applies per rules for 0-parameter tools.

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 specifies the verb 'Get', the resource 'proposal directories', and the grouping by status with explicit statuses (edit, open, won, lost, closed). It distinguishes from siblings like get_account_users or get_initial_context by targeting a specific and unique resource.

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?

No explicit when-to-use or when-not-to-use guidance is provided, but the tool's purpose is self-evident from the description. Since no sibling tool performs a similar function, the lack of exclusions is acceptable.

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

get_proposal_templatesA

Lists proposal templates which are used as starting points to create new proposals

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

The description does not disclose behavioral traits beyond the openWorldHint annotation. It does not state that the operation is read-only, nor mention pagination or filtering behavior. Since annotations only provide openWorldHint, the description misses an opportunity to clarify the tool's safety and output structure.

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 a single, compact sentence that communicates the core purpose without redundancy. Every word is necessary.

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

Completeness3/5

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

Given the empty input schema and lack of output schema, the description is minimal but covers the basic function. However, it omits details about the return format (e.g., whether it returns IDs, names, or full objects), which is needed for effective agent usage.

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

Parameters4/5

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

There are zero parameters, so the description is not required to add parameter-level detail. The baseline score for zero parameters is 4, and the description meets this with a clear statement of what the tool returns.

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 verb 'Lists' and the resource 'proposal templates', and specifies they are used as starting points for new proposals. It distinguishes from sibling tools like create_proposal (different action) and other template getters (different types).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_design_templates or get_email_templates. It lacks context about selection criteria or exclusions.

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

get_text_templatesA

Lists available language text templates which are used to create new proposals

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

The description adds no behavioral details beyond the annotation 'openWorldHint: true', which already indicates the list may change. No side effects or state modifications are mentioned. Since the tool is read-only, the description is acceptable but does not enhance understanding beyond 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.

Conciseness5/5

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

The description is a single sentence that effectively communicates the tool's purpose and context. It is front-loaded with the action and resource, and every word contributes meaning. No excess or redundancy.

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 tool's simplicity (no parameters, no output schema, no nested objects), the description is complete. It states what is listed and why, which is sufficient for an AI agent to understand and invoke this tool correctly.

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

Parameters4/5

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

The input schema has no parameters, and schema description coverage is 100%. According to guidelines, for 0 parameters the baseline is 4. The description adds no extra parameter information, but since there are none, it is sufficient.

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 that the tool lists available language text templates and specifies their use: to create new proposals. It distinguishes itself from sibling tools like get_design_templates, get_email_templates, and get_proposal_templates by focusing on text templates. The verb 'lists' and resource 'language text templates' are specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool should be used when one needs to retrieve available text templates for proposal creation, but it does not provide explicit guidance on when not to use it or mention alternatives. For a simple parameterless tool, this is adequate but lacks depth to guide selection among similar siblings.

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

search_contact_organisationsA

Search for organisations by name in the contacts

ParametersJSON Schema
NameRequiredDescriptionDefault
searchYes

TDQS

A3.9/5.0
Behavior3/5

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

Description indicates a search operation but does not disclose behaviors like case sensitivity, pagination, or whether it returns full objects or minimal data. The openWorldHint annotation suggests possible side effects, but the description does not address this.

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?

One efficient sentence with no redundancy, appropriate for the tool's simplicity.

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

Completeness3/5

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

For a tool with one parameter and no output schema, the description is mostly complete but misses describing the return value (e.g., list of IDs, names). The openWorldHint is not addressed, leaving some behavioral uncertainty.

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

Parameters4/5

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

The description adds that the search parameter is by name, which is not explicit in the schema. For a single string parameter with 0% schema coverage, this is helpful but lacks further details (e.g., format, wildcards).

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 it searches for organisations by name within contacts, with a specific verb and resource, distinguishing it from sibling search tools like search_contact_people.

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

Usage Guidelines3/5

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

Implies usage for name-based search but lacks explicit guidance on when to use vs alternatives (e.g., search_contact_people or search_proposals) and no exclusion criteria.

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

search_contact_peopleB

Search for people by name in the contacts

ParametersJSON Schema
NameRequiredDescriptionDefault
searchYes

TDQS

B3.3/5.0
Behavior2/5

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

The description only states 'search for people by name', with no additional behavioral traits like pagination, search algorithm (exact match vs fuzzy), or result limits. Annotations provide openWorldHint, but the description adds no context about what that implies for results.

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?

A single, front-loaded sentence with no redundant information. Every word serves a purpose, making it efficient and easy to parse.

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

Completeness3/5

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

The description is minimally adequate for a simple search with one parameter, but lacks details about return values (e.g., list of people, fields returned) and behavioral context (e.g., ordering, pagination). Without an output schema, the description should clarify what the agent can expect.

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 documentation coverage is 0% (the 'search' parameter has no description). The description adds 'by name', hinting that the parameter expects a name string, but does not specify format, case sensitivity, or partial matching behavior. It adds some meaning beyond the schema but is insufficient for full clarity.

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 it searches for people by name in contacts, using a specific verb and resource. It distinguishes from sibling tools like search_contact_organisations (organisations vs people) and get_contact_details (which likely retrieves a specific contact's details).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention when not to use it or provide context about search scope, such as whether it includes archived contacts or external sources. Sibling tools exist but no difference is highlighted.

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

search_proposalsC

Search for proposals by query

ParametersJSON Schema
NameRequiredDescriptionDefault
searchYes

TDQS

C2.6/5.0
Behavior2/5

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

The description does not disclose behavioral traits such as authentication requirements, rate limits, or side effects. The annotation openWorldHint gives a hint about openness, but adds minimal context. For a search tool, critical behaviors (e.g., empty results, pagination) are omitted.

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

Conciseness3/5

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

The description is extremely concise (one sentence, five words), which is efficient but comes at the cost of omitted details that could be included without excessive length. It is front-loaded but lacks substance.

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

Completeness2/5

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

Given the tool's complexity (single parameter, no output schema) and rich sibling context, the description is insufficient. It does not explain return values, pagination, sorting, or how results relate to other tools. The annotation openWorldHint hints at breadth but remains vague.

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

Parameters2/5

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

The sole parameter 'search' is a string with no description in the schema (0% coverage). The description only says 'by query', adding no detail about format, allowed values, or case sensitivity. It fails to compensate for the missing schema documentation.

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

Purpose4/5

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

The description clearly states the verb ('search') and resource ('proposals') with a method ('by query'). It distinguishes the tool from sibling tools like get_proposal_templates or search_contact_people, though it lacks details on the scope of search (e.g., fields searched).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_proposal_directories or search_contact_organisations. The description does not specify prerequisites or when not to use it, leaving the agent without decision support.

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

send_proposalC

Send a proposal to its assigned contacts

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYes
send_methodNoofforte
send_messageNo
password_resetNo
send_message_idNo

TDQS

C2.5/5.0
Behavior2/5

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

The description does not disclose side effects (e.g., whether an email is sent, status changes, etc.) beyond the annotation 'openWorldHint: true', which merely hints at potential unknown behaviors.

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

Conciseness2/5

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

The description is a single sentence that, while concise, lacks necessary structure and detail to be useful.

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

Completeness1/5

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

Given five parameters, one required, and no output schema, the description provides almost no contextual information, leaving the agent uninformed about how to invoke the tool correctly.

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

Parameters1/5

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

With 0% schema description coverage and no explanation of parameters in the description, the semantics of 'send_method', 'send_message', 'password_reset', and 'send_message_id' remain unclear.

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 'Send a proposal to its assigned contacts' clearly states a specific action and resource, distinguishing it from sibling tools like create_proposal or search_proposals.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool, prerequisites (e.g., proposal must exist and have assigned contacts), or when not to use it.

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

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose. Tools like create_contact, create_proposal, search_proposals, and send_proposal are unambiguous. The special get_initial_context tool is clearly separated.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., create_contact, get_design_templates, search_proposals). Even compound names like get_account_users are consistent.

Tool Count5/5

With 15 tools, the set is well-scoped for a proposal software. It covers contacts, proposals, templates, automation, and sending without being bloated or sparse.

Completeness3/5

The tool set covers creation, retrieval, search, and sending, but lacks update and delete operations for both contacts and proposals. Missing get_proposal_details creates a gap.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

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/offorte/offorte-mcp-server'

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