Find MCP Enrollment
curl --request POST \
--url https://api.example.com/api/public/tools/find_mcp_enrollment \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enrollmentId": null,
"prospectId": null,
"linkedInUrl": null,
"email": null,
"phone": null,
"hubspotContactId": null,
"firstName": null,
"lastName": null,
"companyDomain": null
}
'import requests
url = "https://api.example.com/api/public/tools/find_mcp_enrollment"
payload = {
"enrollmentId": None,
"prospectId": None,
"linkedInUrl": None,
"email": None,
"phone": None,
"hubspotContactId": None,
"firstName": None,
"lastName": None,
"companyDomain": None
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enrollmentId: null,
prospectId: null,
linkedInUrl: null,
email: null,
phone: null,
hubspotContactId: null,
firstName: null,
lastName: null,
companyDomain: null
})
};
fetch('https://api.example.com/api/public/tools/find_mcp_enrollment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/public/tools/find_mcp_enrollment",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'enrollmentId' => null,
'prospectId' => null,
'linkedInUrl' => null,
'email' => null,
'phone' => null,
'hubspotContactId' => null,
'firstName' => null,
'lastName' => null,
'companyDomain' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/public/tools/find_mcp_enrollment"
payload := strings.NewReader("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"linkedInUrl\": null,\n \"email\": null,\n \"phone\": null,\n \"hubspotContactId\": null,\n \"firstName\": null,\n \"lastName\": null,\n \"companyDomain\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/public/tools/find_mcp_enrollment")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"linkedInUrl\": null,\n \"email\": null,\n \"phone\": null,\n \"hubspotContactId\": null,\n \"firstName\": null,\n \"lastName\": null,\n \"companyDomain\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/find_mcp_enrollment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"linkedInUrl\": null,\n \"email\": null,\n \"phone\": null,\n \"hubspotContactId\": null,\n \"firstName\": null,\n \"lastName\": null,\n \"companyDomain\": null\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}FirstTouch tools
Find MCP Enrollment
Call get_guide with topic=dynamic_actions for the complete one-contact workflow.
Detailed usage guidance
- Find existing MCP Dynamic Actions enrollments for one contact, including completed or canceled history, so the customer can decide whether to continue an enrollment or start a new one.
- If no candidate is returned and the requested action has all required identity and target data, create the new action without asking the customer to confirm the same request again.
- If any candidate is returned, the MCP client must stop and ask the customer which enrollment to continue or whether to start a new sequence;
never infer that choice from status or flowPlanDisplayStatus, even when the match is completed, canceled, failed, pending, or in-progress. - Search by enrollmentId, prospectId, email, LinkedIn URL, phone, HubSpot contact id, or name with optional companyDomain.
- This searches MCP Dynamic Actions enrollments across dynamic action flow plans;
candidates include sourceDescription when known, flowPlanId, raw runtime status, hasFailedAction, flowPlanDisplayStatus, and a lightweight root with nodeId, type, payload.subject, payload.subjectType, next, onConnectionAccepted, and onConnectionTimeout. - Use sourceDescription as helpful context when asking whether to continue or start a new sequence, but never infer that decision.
- Use root to choose an email reply or new thread on the requested branch.
- Use get_flow_enrollment after selecting an enrollment only when complete enrollment/action/task details are needed.
POST
/
api
/
public
/
tools
/
find_mcp_enrollment
Find MCP Enrollment
curl --request POST \
--url https://api.example.com/api/public/tools/find_mcp_enrollment \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enrollmentId": null,
"prospectId": null,
"linkedInUrl": null,
"email": null,
"phone": null,
"hubspotContactId": null,
"firstName": null,
"lastName": null,
"companyDomain": null
}
'import requests
url = "https://api.example.com/api/public/tools/find_mcp_enrollment"
payload = {
"enrollmentId": None,
"prospectId": None,
"linkedInUrl": None,
"email": None,
"phone": None,
"hubspotContactId": None,
"firstName": None,
"lastName": None,
"companyDomain": None
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enrollmentId: null,
prospectId: null,
linkedInUrl: null,
email: null,
phone: null,
hubspotContactId: null,
firstName: null,
lastName: null,
companyDomain: null
})
};
fetch('https://api.example.com/api/public/tools/find_mcp_enrollment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/public/tools/find_mcp_enrollment",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'enrollmentId' => null,
'prospectId' => null,
'linkedInUrl' => null,
'email' => null,
'phone' => null,
'hubspotContactId' => null,
'firstName' => null,
'lastName' => null,
'companyDomain' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/public/tools/find_mcp_enrollment"
payload := strings.NewReader("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"linkedInUrl\": null,\n \"email\": null,\n \"phone\": null,\n \"hubspotContactId\": null,\n \"firstName\": null,\n \"lastName\": null,\n \"companyDomain\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/public/tools/find_mcp_enrollment")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"linkedInUrl\": null,\n \"email\": null,\n \"phone\": null,\n \"hubspotContactId\": null,\n \"firstName\": null,\n \"lastName\": null,\n \"companyDomain\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/find_mcp_enrollment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"linkedInUrl\": null,\n \"email\": null,\n \"phone\": null,\n \"hubspotContactId\": null,\n \"firstName\": null,\n \"lastName\": null,\n \"companyDomain\": null\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}Authorizations
Body
application/json
Existing FirstTouch enrollment/activity id, when known. Use exact enrollmentId values returned by MCP tools; do not pass queueItemId here.
Existing FirstTouch prospect id, when known. Use exact prospectId values returned by MCP tools.
Prospect LinkedIn profile URL.
Prospect work email address.
Prospect phone number.
HubSpot contact id, when the client has HubSpot context. Use the exact HubSpot contact id; do not pass a FirstTouch prospectId here.
Prospect first name.
Prospect last name.
Optional company domain to refine matches; not enough by itself.
Response
Tool result.

