{
  "name": "abm-dev",
  "description": "Account Based Marketing APIs for AI agents. Enrich contacts, research LinkedIn profiles, and send personalised outreach.",
  "version": "2.0.0",
  "base_url": "https://api.abm.dev",
  "auth": {
    "type": "bearer",
    "header": "Authorization",
    "additional_headers": {
      "X-Org-ID": "Your organization UUID from the ABM.dev dashboard"
    }
  },
  "tools": [
    {
      "name": "enrich_contact",
      "description": "Enrich a contact with data from 10+ sources. Returns verified emails, phone numbers, company data, tech stack, funding, and AI-generated insights with confidence scores.",
      "method": "POST",
      "path": "/v1/enrichments",
      "input_schema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Contact's email address"
          },
          "linkedinUrl": {
            "type": "string",
            "description": "Contact's LinkedIn profile URL (e.g. https://linkedin.com/in/username)"
          },
          "firstName": {
            "type": "string",
            "description": "Contact's first name (optional, improves match quality)"
          },
          "lastName": {
            "type": "string",
            "description": "Contact's last name (optional, improves match quality)"
          },
          "company": {
            "type": "string",
            "description": "Contact's company name (optional, improves match quality)"
          }
        },
        "required": []
      },
      "output_description": "Returns an enrichment job with id, status, and eventually 90 canonical fields with confidence scores. Poll GET /v1/enrichments/{id} or stream GET /v1/enrichments/{id}/stream for progress."
    },
    {
      "name": "get_enrichment",
      "description": "Get the result of an enrichment job. Returns all 90 canonical fields with confidence scores and source attribution.",
      "method": "GET",
      "path": "/v1/enrichments/{id}",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Enrichment job ID returned from enrich_contact"
          }
        },
        "required": ["id"]
      }
    },
    {
      "name": "linkedin_research",
      "description": "Research a person's LinkedIn profile. Returns full professional history including experience, education, skills, location, headline, and connection degree.",
      "method": "GET",
      "path": "/v1/linkedin/profile/{publicId}",
      "input_schema": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string",
            "description": "LinkedIn public ID (the slug from their profile URL, e.g. 'marcuschen-revops')"
          }
        },
        "required": ["publicId"]
      }
    },
    {
      "name": "linkedin_contact_info",
      "description": "Get a LinkedIn user's contact information including email addresses, phone numbers, and websites.",
      "method": "GET",
      "path": "/v1/linkedin/profile/{publicId}/contact",
      "input_schema": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string",
            "description": "LinkedIn public ID"
          }
        },
        "required": ["publicId"]
      }
    },
    {
      "name": "linkedin_search_people",
      "description": "Search for people on LinkedIn by keywords, company, title, or location.",
      "method": "GET",
      "path": "/v1/linkedin/search/people",
      "input_schema": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string",
            "description": "Search keywords (name, title, company, etc.)"
          },
          "company": {
            "type": "string",
            "description": "Filter by company name"
          },
          "title": {
            "type": "string",
            "description": "Filter by job title"
          },
          "location": {
            "type": "string",
            "description": "Filter by location"
          }
        },
        "required": ["keywords"]
      }
    },
    {
      "name": "linkedin_message",
      "description": "Send a personalised LinkedIn message to a prospect. The API automatically routes through your team member with the closest connection to the recipient.",
      "method": "POST",
      "path": "/v1/linkedin/messages",
      "input_schema": {
        "type": "object",
        "properties": {
          "recipient": {
            "type": "string",
            "description": "LinkedIn public ID of the recipient"
          },
          "text": {
            "type": "string",
            "description": "Message text. Keep under 300 chars for best response rates. Personalise based on recipient's profile."
          }
        },
        "required": ["recipient", "text"]
      }
    },
    {
      "name": "linkedin_company",
      "description": "Get detailed information about a company on LinkedIn including employee count, industry, and recent updates.",
      "method": "GET",
      "path": "/v1/linkedin/company/{universalName}",
      "input_schema": {
        "type": "object",
        "properties": {
          "universalName": {
            "type": "string",
            "description": "Company's LinkedIn universal name (from their LinkedIn URL, e.g. 'datawise-analytics')"
          }
        },
        "required": ["universalName"]
      }
    },
    {
      "name": "linkedin_post",
      "description": "Publish a post on LinkedIn on behalf of a connected team member.",
      "method": "POST",
      "path": "/v1/linkedin/posts",
      "input_schema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Post content text"
          },
          "visibility": {
            "type": "string",
            "enum": ["public", "connections"],
            "description": "Post visibility. Default: public."
          }
        },
        "required": ["text"]
      }
    },
    {
      "name": "list_enrichments",
      "description": "List recent enrichment jobs with optional status filtering. Useful for checking batch progress.",
      "method": "GET",
      "path": "/v1/enrichments",
      "input_schema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": ["queued", "processing", "completed", "failed"],
            "description": "Filter by status"
          },
          "limit": {
            "type": "integer",
            "description": "Number of results (default 20, max 100)"
          }
        }
      }
    },
    {
      "name": "linkedin_conversations",
      "description": "List LinkedIn message conversations for tracking outreach responses.",
      "method": "GET",
      "path": "/v1/linkedin/conversations",
      "input_schema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Number of conversations to return (default 20)"
          }
        }
      }
    }
  ]
}
