Skip to main content
Glama
mh-zeynal

gapify-mcp-server

by mh-zeynal

Contacts: Create Contact

gapify_create_contact

Create a new contact in a support account by providing an inbox ID and optional details like name, email, phone, avatar, identifier, or custom attributes.

Instructions

Create a new contact in the account [Contacts] POST /api/v1/accounts/{account_id}/contacts Auth: User API key (header api-access-token). Body fields: inbox_id (required), name, email, phone_number, avatar, avatar_url, identifier, custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoname of the contact
emailNoemail of the contact Example: "user@example.com"
avatarNoSend the form data with the avatar image binary or use the avatar_url
inbox_idYesNumeric ID of the inbox. Example: 0
account_idYesThe numeric ID of the account
avatar_urlNoThe url to a jpeg, png file for the contact avatar Example: "https://example.com"
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
identifierNoA unique identifier for the contact in external system
phone_numberNophone number of the contact
custom_attributesNoAn object where you can store custom attributes for contact. example {"type":"customer", "age":30} Example: {}

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.1

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the write profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false), so the safety bar is low. The description adds real value beyond that: the required auth header, the exact endpoint, and the note that text/IDs are sent unchanged and may contain Persian or Arabic-Indic digits. It does not say what happens on a duplicate email or identifier, which matters for a non-idempotent create.

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?

Front-loads the action and endpoint, then auth, then body fields -- a sensible order. The body-field list largely restates the schema, which is mild redundancy, but the added language/digit note justifies the length and nothing is padded.

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?

For a 10-parameter write tool with nested objects, no output schema and no idempotency guarantee, the description covers endpoint, auth, required fields, field list, the extra_body escape hatch, and input encoding. What it omits is failure/duplicate behavior and the distinction from the client-side sibling, which are the remaining reasons an agent could still mis-call it.

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?

Schema description coverage is 100%, so the baseline is 3 and the schema already documents every field. The description earns above baseline by adding input-format nuance the schema omits: values pass through unchanged, and identifiers/phone numbers may use Persian or Arabic-Indic digits, which directly affects how a caller should format inbox_id and account_id.

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?

States a specific verb+resource ("Create a new contact in the account") and includes the endpoint, so the operation is unambiguous. However, it never distinguishes itself from the sibling gapify_client_create_contact, which addresses the same resource from a different API surface, so an agent cannot route between them from the description alone.

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 gives prerequisites (auth header, required inbox_id) but no when-to-use guidance and names no alternative. The critical ambiguity -- gapify_create_contact vs gapify_client_create_contact -- is left entirely unaddressed, and no note about duplicates or pre-checks is offered.

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

Deploy Server

Other Tools