Skip to main content
Glama

C2B Append Mcp Tool

c2b_append
Read-onlyIdempotent
Enrich consumer marketing records with business demographics for B2B segmentation. Match the record with a LinkedIn URL, or with first name, last name, and one of: email, phone, or city and state. Appends job title, seniority, department, business email, LinkedIn profile, and complete business information.
Use this tool when users ask for 'C2B', 'c2b', or 'Consumer to Business Person' data

**Tips for Best Results:**
- Provide full name and consumer email for best match quality
- LinkedIn URLs must be in format: linkedin.com/in/username
- Use `rcfg_require_email` to return only records with business email
- Use `rcfg_require_value` to filter by job title, department, or other attributes

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityNoA person's city
lastNoA person's last name
emailNoA valid consumer email address
firstNoA person's first name
phoneNoA person's phone number
stateNoA person's two-letter state code
domainNoA business domain
li_urlNoA LinkedIn URL (accepts https://www.linkedin.com/in/username, www.linkedin.com/in/username, or linkedin.com/in/username)
rcfg_max_timeNoMaximum allowed API run time (in seconds)
rcfg_require_emailNoReturns only records with email (set to 1 to enable)
rcfg_require_valueNoField/value requirements in "Field=Value" format. Example: ["Title=Manager"]

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultsNoRecords returned by the Operations API. Record fields pass through unchanged.
query_idNo
warningsNo
input_queryNo
num_matchesNoNumber of matching queries.
num_resultsNoNumber of records returned.
match_countsNoSparse match counts. An absent key means zero.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "first",
      +      "last",
      +      "email"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "first",
      +      "last",
      +      "phone"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "first",
      +      "last",
      +      "city",
      +      "state"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "li_url"
      +    ]
      +  }
      +]
    • addedInput schema / properties / city
      Added value: +{
      +  "description": "A person's city",
      +  "type": "string"
      +}
    • addedInput schema / properties / phone
      Added value: +{
      +  "description": "A person's phone number",
      +  "type": "string"
      +}
    • addedInput schema / properties / state
      Added value: +{
      +  "description": "A person's two-letter state code",
      +  "type": "string"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "input_query": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "match_counts": {
      +      "description": "Sparse match counts. An absent key means zero.",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "num_matches": {
      +      "description": "Number of matching queries.",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "num_results": {
      +      "description": "Number of records returned.",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "query_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "results": {
      +      "description": "Records returned by the Operations API. Record fields pass through unchanged.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "warnings": {
      +      "items": {
      +        "type": [
      +          "string",
      +          "integer",
      +          "number",
      +          "boolean",
      +          "object",
      +          "array",
      +          "null"
      +        ]
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about matching logic (LinkedIn URL or name+contact) and output fields, which clarifies what the tool returns. No contradiction with annotations exists; the words 'enrich' and 'appends' could be ambiguous, but annotations resolve that it is a read-only enrichment.

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?

The description is moderately detailed but well-structured: the main purpose is front-loaded, followed by the usage trigger and bulleted tips. Each section contributes relevant guidance; there is little fluff, though the LinkedIn URL format tip somewhat repeats the schema. Overall it is efficiently organized.

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?

Given the tool's complexity (11 parameters, a complex anyOf requirement, and an output schema), the description covers the critical matching conditions and best practices well. It does not discuss error scenarios or rate limits, but the annotations and output schema handle safety and return structure. For this complexity, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, baseline is 3. The description adds significant value beyond the schema by explaining the acceptable matching combinations (anyOf: LinkedIn URL, or first/last plus email/phone/city+state) in plain language. It also clarifies the use of rcfg_require_email and rcfg_require_value with practical examples, which helps an agent select parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: enrich consumer marketing records with business demographics for B2B segmentation. It lists specific appended fields (job title, seniority, department, business email, LinkedIn profile) and distinguishes itself from siblings through the explicit C2B (Consumer to Business) focus. The name and title align with this purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit trigger: 'Use this tool when users ask for C2B, c2b, or Consumer to Business Person data.' It also includes practical best-practice tips (e.g., provide full name and email for best match quality). However, it does not name sibling alternatives or explicitly state when not to use this tool, so it lacks exclusions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources