amplemarket-org-chart — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited amplemarket-org-chart (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Build an interactive, color-coded org chart for a target account that shows every contact, their outreach status, communication history, CRM deal context, and relationship signals -- all in a single visual.
The user must have the Amplemarket MCP connector enabled. If the tools aren't available, tell the user to enable the Amplemarket integration in their Claude settings.
HubSpot MCP is optional but recommended -- it enables CRM cross-referencing (deal context, lifecycle stage, ownership). If HubSpot tools aren't available, skip CRM steps and note it in the summary.
Follow these steps in order. Each step maps to specific MCP tools.
Ask the user for a company name or domain. Then:
Amplemarket:list_accounts with name or domain to find the account in Amplemarket.Amplemarket:get_account with the account ID to get account details, engagement stats, CRM data, tags, and AI insights.Amplemarket:enrich_company with the domain to get firmographic data (industry, size, HQ, funding, tech stack).If the account isn't found: Try Amplemarket:search_companies as a fallback. If that also returns nothing, fall back to Amplemarket:enrich_company with the domain to bootstrap firmographic data, then proceed with search_people only. Tell the user: "This account isn't tracked in Amplemarket yet, but I can still map contacts found in our database."
Before pulling contacts, ask the user which departments or functions to focus on. Tailor the question based on company size (from Step 1 firmographics):
Use the answer to set job_functions and person_seniorities filters for the contact search in Step 3.
Pull contacts from multiple angles to maximize coverage, applying department/seniority filters from Step 2:
Amplemarket:search_people with company_domains: [domain], the scoped filters, and full_output: true. Start with page_size: 50. Paginate if needed.person_seniorities:["C-Suite", "Founder", "Owner", "Partner"]["VP", "Head", "Director"]["Manager", "Senior"]Amplemarket:get_contacts to pull their Amplemarket contact records with engagement history.Deduplication strategy -- deduplicate using this priority:
Enrichment: For the most important contacts (C-suite, VPs, decision-makers), call Amplemarket:enrich_person to get:
reveal_email: true if the user wants contact info -- warn about credit cost)reveal_phone_numbers: true only if explicitly requested)Be judicious with enrichment credits. Prioritize leadership and contacts in relevant departments.
HubSpot cross-reference (skip if HubSpot tools are unavailable): For contacts with email addresses, call HubSpot:search_crm_objects (type=contacts) searching by email to find matching CRM records. For matches, pull:
HubSpot:search_crm_objects (type=deals) associated with those contacts -- capture deal stage, amount, and close dateThis enriches the "Already in CRM" signal with actual deal context.
Fire Amplemarket:ask_analytics to query outreach history. Ask questions like:
"Show me all outreach activity for contacts at [company domain]""Which contacts at [domain] have replied to our sequences?"While waiting for analytics: Proceed immediately to Step 6 (signal identification) using data already gathered from Steps 3-4. Don't block on analytics.
Then poll with Amplemarket:get_analytics_result using this retry strategy:
get_analytics_result.Also check Amplemarket:get_contacts for any contacts whose emails you already have -- the contact record may include sequence enrollment, email status, and reply data. This supplements analytics data.
Merge analytics data into signals when available; if not, contacts retain their "unknown" status with a note in the summary.
From the data gathered, flag these signals for each contact:
Create a React .jsx artifact that renders an interactive org chart. The visual approach depends on how many contacts were discovered.
#### Data Structure
const orgData = {
company: {
name: "Acme Corp",
domain: "acme.com",
industry: "SaaS",
size: "201-500",
hq: "San Francisco, CA"
},
contacts: [
{
id: "1",
name: "Jane Smith",
title: "CEO",
department: "Executive",
seniority: "C-Suite",
email: "[email protected]",
linkedin: "https://linkedin.com/in/janesmith",
status: "engaged", // engaged | in_sequence | no_outreach | connected | unknown
outreach: {
reached: true,
channel: "email",
sequence: "Enterprise Outbound Q1",
touchpoints: 3,
replied: true,
replySummary: "Positive -- asked for a demo next week",
lastActivity: "2026-02-28"
},
relationships: {
teamConnection: "Luis B. (LinkedIn)",
inCRM: true
},
hubspot: {
lifecycleStage: "opportunity",
owner: "Maria G.",
deal: {
name: "Acme Corp - Enterprise",
stage: "Contract Sent",
amount: 85000,
closeDate: "2026-04-15"
}
}
},
// ... more contacts
]
};#### Layout Selection by Contact Count
Small accounts (1-5 contacts) - Card Grid layout: Don't render a tree -- show a horizontal row of contact cards (or 2x3 grid) beneath the company header. Each card is larger with more detail visible by default: name, title, department, email, LinkedIn link, status badge, outreach summary, and deal info. No connector lines needed.
Medium accounts (6-30 contacts) - Full Tree layout: This is the primary use case. Render the full interactive tree as described below.
Large accounts (30+ contacts) - Collapsed Tree layout: Render the tree but collapse Director-level branches by default (show the Director card with a "+N reports" badge). User can click to expand any branch. Provide "Expand All" / "Collapse All" toggles. Group by department at the VP level.
#### Visual Design
Style after theorg.com: clean white cards, subtle shadows, thin gray connector lines, top-down vertical tree layout.
Cards: Initials avatar (colored by status), name, title, colored left-border stripe for status. Click a card to expand a detail panel showing outreach data, LinkedIn link, CRM deal info (stage, amount, close date), and relationship signals.
Status Color Coding:
Tree Hierarchy Construction: Since Amplemarket doesn't store reporting lines, infer hierarchy from seniority and department:
If the user scoped the search to a specific department in Step 2, make that department's VP/Head the root instead of CEO.
Group children by department or region when a parent has many reports. If a node has >8 direct reports, show first 4-5 and a "+N more" expandable badge.
Responsive: Horizontally scrollable for wide trees.
Company Header: Above the tree. Company name, domain, industry, size, and key engagement stats (emails sent, replies, meetings, account score) in a row of stat badges.
Controls Bar: Below header, above tree: search input, status filter pills (All, Engaged, In Sequence, No Outreach, Warm -- each with a count), and expand-all toggle.
Legend: Fixed bottom-right corner: small floating card with color dot + label for each status.
After rendering the org chart, provide a brief text summary:
If analytics data was unavailable (Step 5 failed), note this in the summary and suggest re-running later. If HubSpot data was unavailable, note that CRM cross-referencing was skipped.
After presenting the chart, offer: "Want me to create an Amplemarket lead list with the uncovered contacts (no outreach yet)?"
If the user says yes:
Amplemarket:create_lead_list with a name like "[Company] - Org Chart Gaps - [Date]"Amplemarket:add_leads_to_lead_list with only contacts whose status is "no_outreach" or "unknown"This gives the sales team a ready-made list of gaps to fill.
| Goal | Tool | Key Params |
|---|---|---|
| Find account | Amplemarket:list_accounts | name, domain |
| Account details | Amplemarket:get_account | id |
| Company firmographics | Amplemarket:enrich_company | domain |
| Find contacts | Amplemarket:search_people | company_domains, person_seniorities, job_functions, full_output: true |
| Contact records | Amplemarket:get_contacts | emails |
| Enrich a person | Amplemarket:enrich_person | linkedin_url or name + company_domain |
| Outreach history | Amplemarket:ask_analytics + Amplemarket:get_analytics_result | natural language question |
| CRM contacts | HubSpot:search_crm_objects | objectType: "contacts", filter by email |
| CRM deals | HubSpot:search_crm_objects | objectType: "deals", associated contact |
| Create lead list | Amplemarket:create_lead_list | name |
| Add to lead list | Amplemarket:add_leads_to_lead_list | lead_list_id, leads |
enrich_person costs 0.5 credits per call. reveal_email and reveal_phone_numbers cost additional credits. Always warn the user before batch-enriching. For large accounts (50+ people), suggest enriching only leadership first.enrich_person calls. Don't fire 50 enrichments simultaneously.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.