Skip to main content
Glama

send_proposal

Send proposals to assigned contacts using Offorte Proposal Software. Choose between Offorte or self-delivery methods and include custom messages with your proposal submissions.

Instructions

Send a proposal to its assigned contacts

Input Schema

NameRequiredDescriptionDefault
proposal_idYes
send_message_idNo
send_methodNoofforte
send_messageNo
password_resetNo

Input Schema (JSON Schema)

{ "properties": { "password_reset": { "type": "boolean" }, "proposal_id": { "type": "number" }, "send_message": { "type": "string" }, "send_message_id": { "type": "number" }, "send_method": { "default": "offorte", "enum": [ "offorte", "self" ], "type": "string" } }, "required": [ "proposal_id" ], "type": "object" }

Implementation Reference

  • The main handler for the 'send_proposal' tool. Defines the tool with name, description, parameters (input schema), and the execute function that sends a POST request to `/proposals/${proposal_id}/send/` and parses the response.
    export const sendProposalTool: Tool<typeof parameters._type, typeof parameters> = { name: 'send_proposal', description: 'Send a proposal to its assigned contacts', parameters, annotations: { title: 'Send Proposal', openWorldHint: true, }, async execute({ proposal_id, ...body }) { const result = await post(`/proposals/${proposal_id}/send/`, body); const parsed = sendProposalSchema.safeParse(result); if (!parsed.success) { throwApiInvalidResponseError(parsed.error); } return JSON.stringify(parsed.data); }, };
  • Output schema used by the send_proposal handler to validate the API response, consisting of an array of receivers with email, fullname, id, and proposal_link.
    export const sendProposalReceiverSchema = z.object({ email: z.string(), fullname: z.string(), id: z.number(), proposal_link: z.string(), }); export const sendProposalSchema = z.object({ receivers: z.array(sendProposalReceiverSchema), });
  • Registration of the sendProposalTool: imported at line 17, included in the tools array at line 34, and all tools are registered to the FastMCP server in the registerTools function.
    import { sendProposalTool } from './proposals/send-proposal.js'; const tools = [ getInitialContextTool, getAccountUsersTool, getAutomationSetsTool, getContactDetailsTool, getDesignTemplatesTool, getEmailTemplatesTool, getProposalDirectoriesTool, getProposalTemplatesTool, getTextTemplatesTool, searchContactOrganisationsTool, searchContactPeopleTool, searchProposalsTool, createContactTool, createProposalTool, sendProposalTool, ]; export function registerTools({ server }: { server: FastMCP }) { (tools as unknown as FastMCPTool<Record<string, unknown>, ToolParameters>[]).map(initialContextGuard).forEach((tool) => server.addTool(tool)); }

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