create_contact
Add new contacts (organizations or individuals) to Offorte Proposal Software by entering details like name, address, and contact information.
Instructions
Create a new contact (organisation or person/individual)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| name | Yes | ||
| street | No | ||
| zipcode | No | ||
| city | No | ||
| state | No | ||
| country | No | ||
| phone | No | ||
| No | |||
| internet | No | ||
| No | |||
| No | |||
| No | |||
| No | |||
| coc_number | No | ||
| vat_number | No | ||
| tags | No | ||
| firstname | No | ||
| lastname | No | ||
| salutation | No | ||
| mobile | No |
Implementation Reference
- Full tool definition including the execute handler function that parses input schema, makes POST request to '/contacts/' endpoint, and returns the result as JSON string.export const createContactTool: Tool<typeof parameters._type, typeof parameters> = { name: 'create_contact', description: 'Create a new contact (organisation or person/individual)', parameters, annotations: { title: 'Create Contact', openWorldHint: true, }, async execute(params) { const parsed = contactCreateSchema.safeParse(params); if (!parsed.success) { throwApiInvalidResponseError(parsed.error); } const result = await post('/contacts/', parsed.data); return JSON.stringify(result); }, };
- src/schemas/contacts.ts:115-139 (schema)Zod schema defining the input parameters for creating a contact, referenced by the tool.export const contactCreateSchema = z .object({ type: contactType, name: z.string(), street: z.string().optional(), zipcode: z.string().optional(), city: z.string().optional(), state: z.string().optional(), country: z.string().optional(), phone: z.string().optional(), email: z.string().optional(), internet: z.string().optional(), linkedin: z.string().optional(), facebook: z.string().optional(), twitter: z.string().optional(), instagram: z.string().optional(), coc_number: z.string().optional(), vat_number: z.string().optional(), tags: tagsSchema.optional(), firstname: z.string().optional(), lastname: z.string().optional(), salutation: z.string().optional(), mobile: z.string().optional(), }) .passthrough();
- src/tools/register.ts:19-39 (registration)Registration of all tools including createContactTool into the MCP server via registerTools function.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)); }
- src/tools/register.ts:13-13 (registration)Import of the createContactTool for registration.import { createContactTool } from './contacts/create-contact.js';