create_contact
Add new contacts to Offorte Proposal Software by entering organization or individual details including name, address, contact information, and business identifiers for proposal management.
Instructions
Create a new contact (organisation or person/individual)
Input 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 |
Input Schema (JSON Schema)
{
"properties": {
"city": {
"type": "string"
},
"coc_number": {
"type": "string"
},
"country": {
"type": "string"
},
"email": {
"type": "string"
},
"facebook": {
"type": "string"
},
"firstname": {
"type": "string"
},
"instagram": {
"type": "string"
},
"internet": {
"type": "string"
},
"lastname": {
"type": "string"
},
"linkedin": {
"type": "string"
},
"mobile": {
"type": "string"
},
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"salutation": {
"type": "string"
},
"state": {
"type": "string"
},
"street": {
"type": "string"
},
"tags": {
"items": {
"additionalProperties": true,
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"type": "object"
},
"type": "array"
},
"twitter": {
"type": "string"
},
"type": {
"enum": [
"organisation",
"person"
],
"type": "string"
},
"vat_number": {
"type": "string"
},
"zipcode": {
"type": "string"
}
},
"required": [
"type",
"name"
],
"type": "object"
}
Implementation Reference
- The complete create_contact tool definition, including its execute handler that validates input using the schema, performs a POST request to create the contact, and returns the JSON result.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 input schema for the create_contact tool defining all possible fields for creating a contact (organisation or person).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:37-39 (registration)Registration function that adds the createContactTool to the MCP server. The tool is imported on line 13 and included in the 'tools' array on line 32.export function registerTools({ server }: { server: FastMCP }) { (tools as unknown as FastMCPTool<Record<string, unknown>, ToolParameters>[]).map(initialContextGuard).forEach((tool) => server.addTool(tool)); }