DirectIQ MCP
The DirectIQ MCP server allows AI agents to programmatically manage contacts, organize lists and tags, view campaign analytics, and send transactional emails directly from MCP-compatible clients without manual dashboard interaction.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.directiq.com/mcpWhat its tools do
30 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (15)
directiq_account_overviewdirectiq_get_contactdirectiq_list_contactsdirectiq_contact_countdirectiq_list_listsdirectiq_get_listdirectiq_list_segmentsdirectiq_list_tagsdirectiq_get_tagdirectiq_list_campaignsdirectiq_get_campaigndirectiq_campaign_statsdirectiq_campaign_reportdirectiq_list_endpointsdirectiq_read_request
Can change data (15)
directiq_upsert_contactdirectiq_update_contactdirectiq_delete_contactdirectiq_create_listdirectiq_rename_listdirectiq_delete_listdirectiq_add_contact_to_listdirectiq_remove_contact_from_listdirectiq_create_tagdirectiq_rename_tagdirectiq_delete_tagdirectiq_tag_contactdirectiq_untag_contactdirectiq_send_emaildirectiq_write_request
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to mcp.directiq.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Manage contacts by looking up, adding, updating, and removing them
- Organize lists and tags by creating, renaming, and moving contacts
- See campaign results including opens, clicks, bounces, and unsubscribes
- Send transactional emails like confirmations and receipts
Source and maintenance
- Last repository push
- Maintenance checked
Protocol and capabilities
- Server
- directiq-mcp 0.2.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 30 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Tools
30 advertised
directiq_account_overview
Summarize the account in one call: total contacts, active/disabled status counts, list count, tag count, and confirmed sender addresses. A good first call in a conversation, and the way to find a valid "from" address for directiq_send_email. Each section that fails to load is returned as { error } without failing the rest.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}{
"title": "Account Overview",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_get_contact
Get one contact by numeric ID: email, first and last name, status, created and updated dates, tags, lists, and notes. Use when you already have the ID; to find a contact, page through directiq_list_contacts. Returns an error if no contact has that ID.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric contact ID (from directiq_list_contacts or directiq_get_contact)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Get Contact",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_list_contacts
List contacts one page at a time, oldest first, with each contact's ID, email, name, status, tags, and lists. Returns { pageNumber, totalCount, result, hasNextPage }; request the next pageNumber while hasNextPage is true. Use to browse contacts or find an ID. For just the total, use directiq_contact_count instead.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"pageSize": {
"type": "integer",
"maximum": 500,
"minimum": 50,
"description": "Results per page, 50–500 (default 50)"
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"description": "1-based page number (default 1)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "List Contacts",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_contact_count
Return the total number of contacts in the account as a single number. Use for a quick count; for counts plus active/disabled status, lists, tags, and senders, use directiq_account_overview.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}{
"title": "Contact Count",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_upsert_contact
Add a contact to a list, creating the contact if the email is new or updating its name if it already exists. Optionally applies tags (created if missing). Use this to create contacts; to change other fields on an existing contact, use directiq_update_contact. Returns import counts (inserted, alreadyExisting, addedToList); emails on a suppression or bounce list are counted but not added.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"email"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Tag names to apply; missing tags are created"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Contact email address"
},
"listId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric list ID (from directiq_list_lists)",
"exclusiveMinimum": 0
},
"lastName": {
"type": "string",
"description": "Last name; overwrites the existing value"
},
"firstName": {
"type": "string",
"description": "First name; overwrites the existing value"
}
},
"additionalProperties": false
}{
"title": "Add or Update Contact",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_update_contact
Update fields on an existing contact by ID, such as firstName, lastName, or email. Only the fields you pass change, and they overwrite the current values. To create a contact, use directiq_upsert_contact; to change list or tag membership, use the list and tag tools.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"fields"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric contact ID (from directiq_list_contacts or directiq_get_contact)",
"exclusiveMinimum": 0
},
"fields": {
"type": "object",
"description": "Contact fields to change, e.g. {\"firstName\": \"Jamie\"}",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"additionalProperties": false
}{
"title": "Update Contact",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_delete_contact
Permanently delete a contact by ID, removing it from every list and tag. This cannot be undone. Confirm with the user first; to only take a contact off one list, use directiq_remove_contact_from_list.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric contact ID (from directiq_list_contacts or directiq_get_contact)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Delete Contact",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_list_lists
List every contact list in the account with its ID and name. Use to find a list ID before adding contacts, sending campaigns, or calling directiq_get_list.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}{
"title": "List Contact Lists",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_get_list
Get one contact list by ID: name, created and modified dates, and total, active, and disabled contact counts. Use directiq_list_lists to find the ID. Returns an error if no list has that ID.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric list ID (from directiq_list_lists)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Get Contact List",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_create_list
Create a new, empty contact list and return it with its new ID. Calling it twice creates two lists with the same name, so check directiq_list_lists first. Add contacts afterwards with directiq_upsert_contact or directiq_add_contact_to_list.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "List name, 1–200 characters"
}
},
"additionalProperties": false
}{
"title": "Create Contact List",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}directiq_rename_list
Rename a contact list by ID. Its contacts are unchanged; the previous name is overwritten.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric list ID (from directiq_list_lists)",
"exclusiveMinimum": 0
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "New name, 1–200 characters"
}
},
"additionalProperties": false
}{
"title": "Rename Contact List",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_delete_list
Permanently delete a contact list by ID. The contacts themselves are kept, but their membership in this list is lost. This cannot be undone; confirm with the user first.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric list ID (from directiq_list_lists)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Delete Contact List",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_add_contact_to_list
Add an existing contact (by contact ID) to a list. Adding a contact that is already on the list has no effect. To add someone by email who may not exist yet, use directiq_upsert_contact.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"contactId"
],
"properties": {
"listId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric list ID (from directiq_list_lists)",
"exclusiveMinimum": 0
},
"contactId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric contact ID (from directiq_list_contacts or directiq_get_contact)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Add Contact to List",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_remove_contact_from_list
Remove a contact from one list. The contact stays in the account and on its other lists; to delete the contact entirely, use directiq_delete_contact.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"contactId"
],
"properties": {
"listId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric list ID (from directiq_list_lists)",
"exclusiveMinimum": 0
},
"contactId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric contact ID (from directiq_list_contacts or directiq_get_contact)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Remove Contact from List",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_list_segments
List saved segments (rule-based groups of contacts) with their IDs and names. Returns an empty array if the account has none. Segments are managed in the DirectIQ dashboard.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}{
"title": "List Segments",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_list_tags
List every tag in the account with its ID and name. Use to check whether a tag exists or to find its ID before renaming or deleting it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}{
"title": "List Tags",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_get_tag
Get one tag by ID with its name and details. Use directiq_list_tags to find the ID. Returns an error if no tag has that ID.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric tag ID (from directiq_list_tags)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Get Tag",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_create_tag
Create a new tag and return it with its ID. Check directiq_list_tags first to avoid duplicates. To tag a contact, use directiq_tag_contact, which also creates missing tags.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Tag name"
}
},
"additionalProperties": false
}{
"title": "Create Tag",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}directiq_rename_tag
Rename a tag by ID. Contacts keep the tag under its new name; the previous name is overwritten.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric tag ID (from directiq_list_tags)",
"exclusiveMinimum": 0
},
"name": {
"type": "string",
"minLength": 1,
"description": "New tag name"
}
},
"additionalProperties": false
}{
"title": "Rename Tag",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_delete_tag
Permanently delete a tag by ID and remove it from every contact. Contacts are kept. This cannot be undone; confirm with the user first.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric tag ID (from directiq_list_tags)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Delete Tag",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_tag_contact
Apply one or more tags to a contact by contact ID. Tags that do not exist yet are created. Applying a tag the contact already has has no effect.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contactId",
"tags"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"description": "Tag names to apply"
},
"contactId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric contact ID (from directiq_list_contacts or directiq_get_contact)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Tag Contact",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_untag_contact
Remove a tag from a contact, identified by the contact email and the tag name. The tag itself and the contact are kept; to delete the tag everywhere, use directiq_delete_tag.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"tag"
],
"properties": {
"tag": {
"type": "string",
"minLength": 1,
"description": "Tag name to remove"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Contact email address"
}
},
"additionalProperties": false
}{
"title": "Untag Contact",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}directiq_list_campaigns
List email campaigns and automation flows with ID, name, type (Regular or Flow), status, subject, sender, target lists, recipient count, and scheduled send time. Returns { campaigns, nextPageToken }; pass nextPageToken back to get the next page (null means no more). Use the IDs with directiq_campaign_stats for performance.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"nextPageToken": {
"type": "string",
"description": "Token from the previous page; omit for the first page"
}
},
"additionalProperties": false
}{
"title": "List Campaigns",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_get_campaign
Get one campaign by ID: name, type, status, subject, sender, target lists and segments, template ID, recipient count, and scheduled send time. For opens, clicks, and other results, use directiq_campaign_stats.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric campaign ID (from directiq_list_campaigns)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Get Campaign",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_campaign_stats
Summarize how a campaign performed: counts of recipients, opens, clicks, bounces, unsubscribes, and complaints, plus open, click, bounce, and unsubscribe rates as percentages of recipients. Use directiq_campaign_report to see which contacts did what. A section that fails to load is returned as an error without failing the rest.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"campaignId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric campaign ID (from directiq_list_campaigns)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Campaign Stats",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_campaign_report
List the contacts behind one campaign result, one page at a time: who received, opened, clicked, bounced, unsubscribed, or complained. Returns { totalCount, result }. Optionally filter to one email address, or for clicks, to one link. For totals and rates only, use directiq_campaign_stats.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId",
"type"
],
"properties": {
"link": {
"type": "string",
"description": "For type \"clicks\" only: only return clicks on this URL"
},
"type": {
"enum": [
"recipients",
"opens",
"clicks",
"bounces",
"unsubscribes",
"complaints"
],
"type": "string",
"description": "Which result to list"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Only return rows for this contact email"
},
"pageSize": {
"type": "integer",
"maximum": 500,
"description": "Results per page, up to 500",
"exclusiveMinimum": 0
},
"campaignId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric campaign ID (from directiq_list_campaigns)",
"exclusiveMinimum": 0
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"description": "1-based page number (default 1)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Campaign Report",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_send_email
Send one transactional email (a receipt, confirmation, or one-to-one message) immediately. It is delivered to real recipients and cannot be recalled, and it counts toward the account’s sending plan. The from address must be a confirmed sender on the account (see directiq_account_overview). Not for bulk marketing: campaigns are sent from the DirectIQ dashboard.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"from",
"to",
"subject",
"content"
],
"properties": {
"cc": {
"type": "array",
"items": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"description": "CC recipient addresses"
},
"to": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Recipient email address"
},
"bcc": {
"type": "array",
"items": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"description": "BCC recipient addresses"
},
"from": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Sender address; must be a confirmed sender on the account"
},
"content": {
"type": "string",
"minLength": 2,
"description": "Message body as HTML or plain text, at least 2 characters"
},
"subject": {
"type": "string",
"minLength": 2,
"description": "Subject line, at least 2 characters"
},
"fromName": {
"type": "string",
"description": "Sender display name, e.g. \"Acme Support\""
}
},
"additionalProperties": false
}{
"title": "Send Transactional Email",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}directiq_list_endpoints
List known DirectIQ API operations (HTTP method, API group, path, summary). Optionally filter by a search term. Call GET operations with directiq_read_request and POST/PUT/PATCH/DELETE operations with directiq_write_request.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"search": {
"type": "string",
"description": "Optional case-insensitive filter matched against each operation path or summary"
}
},
"additionalProperties": false
}{
"title": "List DirectIQ Endpoints",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_read_request
Issue an authenticated GET request to any DirectIQ endpoint and return the JSON response. Prefer a dedicated directiq_* tool when one exists; use this for read operations without one, found with directiq_list_endpoints (e.g. segments for a contact, email client reports). Full request/response schemas for each group are in the DirectIQ API docs at https://rest.directiq.com/{group}/swagger/index.html (core, contacts, subscription).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"group",
"path"
],
"properties": {
"path": {
"type": "string",
"pattern": "^\\/",
"minLength": 1,
"description": "Endpoint path within the group, e.g. '/contact/list' or '/email/send'"
},
"group": {
"enum": [
"core",
"contacts",
"subscription"
],
"type": "string",
"description": "DirectIQ API group: core, contacts, or subscription"
},
"query": {
"type": "object",
"description": "Optional query parameters",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
}
},
"additionalProperties": false
}{
"title": "DirectIQ Read Request",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}directiq_write_request
Issue an authenticated POST, PUT, PATCH, or DELETE request to any DirectIQ endpoint. May create, modify, or permanently delete account data, including bulk operations. Prefer a dedicated directiq_* tool when one exists; use this only for operations without one, found with directiq_list_endpoints, and confirm destructive calls with the user first. Full request/response schemas for each group are in the DirectIQ API docs at https://rest.directiq.com/{group}/swagger/index.html (core, contacts, subscription).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"group",
"method",
"path"
],
"properties": {
"body": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "array",
"items": {}
}
],
"description": "Optional JSON request body: an object, or an array for bulk operations"
},
"path": {
"type": "string",
"pattern": "^\\/",
"minLength": 1,
"description": "Endpoint path within the group, e.g. '/contact/list' or '/email/send'"
},
"group": {
"enum": [
"core",
"contacts",
"subscription"
],
"type": "string",
"description": "DirectIQ API group: core, contacts, or subscription"
},
"query": {
"type": "object",
"description": "Optional query parameters",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH",
"DELETE"
],
"type": "string",
"description": "HTTP method"
}
},
"additionalProperties": false
}{
"title": "DirectIQ Write Request",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-02: 3 of 3 checks answered
- 2026-11-03: 2 of 2 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 473 ms
- 95th percentile latency
- 473 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · repository · passed · metadata changed · updated
- · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
- · probe · passed · 473 ms · metadata changed · 30 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http directiq-mcp https://mcp.directiq.com/mcpCodex
codex mcp add directiq-mcp --url https://mcp.directiq.com/mcpCursor
{
"mcpServers": {
"directiq-mcp": {
"url": "https://mcp.directiq.com/mcp"
}
}
}Cline
{
"mcpServers": {
"directiq-mcp": {
"type": "streamableHttp",
"url": "https://mcp.directiq.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"directiq-mcp": {
"type": "http",
"url": "https://mcp.directiq.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http directiq-mcp https://mcp.directiq.com/mcpClaude Desktop
{
"mcpServers": {
"directiq-mcp": {
"url": "https://mcp.directiq.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"directiq-mcp": {
"serverUrl": "https://mcp.directiq.com/mcp"
}
}
}Let your agent find its tools
Find servers like DirectIQ MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other crm, sales, and marketing servers
Do you run DirectIQ MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.