createCompany
Add new companies to Teamwork by providing details like name, address, email, and tags for organization and management.
Instructions
Create a new company. This tool allows you to create a company. The request requires a companyRequest object with various properties like addressOne, emailOne, name, and tags.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| companyRequest | Yes | ||
| options | No | Additional options for the request |
Implementation Reference
- Handler function that executes the createCompany tool: extracts companyData from input, validates name, calls teamworkService.createCompany, returns formatted result or error response.export async function handleCreateCompany(input: any) { logger.info('Calling teamworkService.createCompany()'); try { const companyData = input.companyRequest; if (!companyData || !companyData.name) { throw new Error("Company name is required"); } const result = await teamworkService.createCompany(companyData); logger.info(`Company created successfully with name: ${companyData.name}`); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error: any) { return createErrorResponse(error, 'Creating company'); } }
- Tool definition with name, description, detailed inputSchema for companyRequest (name required, optional fields like address, email, etc.), and annotations.export const createCompanyDefinition = { name: "createCompany", description: "Create a new company. This tool allows you to create a company. The request requires a companyRequest object with various properties like addressOne, emailOne, name, and tags.", inputSchema: { type: 'object', properties: { companyRequest: { type: 'object', properties: { addressOne: { type: 'string', description: 'First line of address' }, addressTwo: { type: 'string', description: 'Second line of address' }, city: { type: 'string', description: 'City' }, company: { type: 'object', properties: { name: { type: 'string', description: 'Company name' } }, required: ['name'] }, countryCode: { type: 'string', description: 'Country code' }, emailOne: { type: 'string', description: 'First email address' }, emailTwo: { type: 'string', description: 'Second email address' }, fax: { type: 'string', description: 'Fax number' }, name: { type: 'string', description: 'Company name' }, phone: { type: 'string', description: 'Phone number' }, state: { type: 'string', description: 'State' }, tags: { type: 'array', items: { type: 'string' }, description: 'List of tags' }, website: { type: 'string', description: 'Website URL' }, zip: { type: 'string', description: 'ZIP/Postal code' } }, required: ['name'] }, options: { type: 'object', properties: {}, description: 'Additional options for the request' } }, required: ['companyRequest'] }, annotations: { title: "Create Company", readOnlyHint: false, destructiveHint: false, openWorldHint: false } };
- src/tools/index.ts:89-89 (registration)Registration of createCompany tool in the toolPairs array, pairing the definition with its handler function.{ definition: createCompany, handler: handleCreateCompany },
- Helper service function that performs the actual API POST to 'companies.json' to create the company using the API client.export const createCompany = async (companyData: any) => { try { logger.info(`Creating new company with name: ${companyData.name}`); const api = ensureApiClient(); const response = await api.post('companies.json', companyData); logger.info(`Successfully created company. Response status: ${response.status}`); return response.data; } catch (error: any) { logger.error(`Error creating company: ${error.message}`); throw new Error(`Failed to create company: ${error.message}`); } };