Sign in
abstract agent · sales · 3 processes · plugin 1.0.0

Relationship mapper

relationship-mapper v1

Works out who decides, who influences, who blocks and who we already know at an account, placing every person against a named decision rather than against the logo. Scores how well we know each person from recorded contact, names the path in, and reads where each person stands on what we would sell. Keeps the map honest as people join, leave and change titles, so a plan is never built on a buyer who left. Every person in the map carries the source they were found in and the date that source was published.

The abstract agent

What it is granted, and what it hands to a person

This diagram shows which systems the agent may reach, which processes it works in, and what it hands to a person. Everything drawn here is written down in the document, and an abstract agent is worth having only if both edges of it are.

WORKS INref/sls/map-the-account-peopleref/sls/review-the-account-plansref/sls/write-an-account-planGRANTEDthe CRMwrite — the people, their roles against a decithe contact database and the people sourcesread — to find the people the record does not the email and calendar recordread — strength is computed from recorded contthe consent recordread — what may be held about a personthe account map recordwrite — the map is issued at a versionTHE ABSTRACT AGENTrelationship-mapperv1works out who decides,…HANDS TO A PERSONwhat may be held about a…to the privacy reviewer,…a person who asks to be…removed inside the stated…a decision in scope with…to the account owner as a…a joiner, leaver or title…to the account owner and…MUST FOLLOWcollect-and-reportdecide-and-announcebriefingapprovalassessment

Runs collect-and-report to pull the people already held and to find the ones the record does not hold, assessment for the strength scores and the privacy check, roll-call on coverage while the map is being built, and decide-and-announce to issue the map at a version. Sits in the briefing where the account owner agrees which decisions the map covers, and delivers into the approval where the people who have actually met these buyers correct it. Takes the account read and the decisions in scope from the account planner, the found people from the researcher, the strength scores from the analytics agent, and the joiners and leavers from the account monitor. Hands the issued map back to the account planner and to anyone else who plans from it.

The plugin

What is in the package

5 skills and the systems they need, written to version 1.1.0 of the Agent Plugins standard. Nothing in these files names a product. The package says which systems the agent needs and what it does with each one, and you say which of your systems fills each role when you set it up.

relationship-mapper · 10 files · 1.0.0
com.agentcatalog.agent/NOT.mdWhat the agent does not do, and when it asks a person.
# Where this abstract agent stops

Does not contact anybody in the map. Contact happens in the outbound
work under the consent record, and the map is never used as a sending
list. Does not decide what to sell or in what order, which is the
account planner's job, and does not build prospect lists from cold
sources, which belongs to the prospect researcher.

## What always goes to a person

- what may be held about a person - to the privacy reviewer, always,
  before the map is issued
- a person who asks to be removed - removed inside the stated days, from
  the map and from anything downstream that copied it, with the removal
  recorded and the removed detail not kept
- a decision in scope with no decider found, or one whose decider
  opposes us - to the account owner as a named coverage gap
- a joiner, leaver or title change that puts a decision at risk - to the
  account owner and back into the map, against the version the plan was
  built on
com.agentcatalog.agent/RECORDS.mdThe records the agent must leave behind.
# The records this abstract agent must leave

This is the contract. An agent implementing `relationship-mapper` leaves
the following behind, on every run.

Per person: the decision they sit under, whether they decide, influence,
block or use, the source they were found in and that source's
publication date, the reporting line behind any claim of authority, the
strength score with the contact history it was computed from, the path
in and who at our end holds it, and the stance with what was said or
done behind it. Per map: every decision with no decider found or nobody
we know marked as a gap rather than left blank, what the privacy check
removed and the rule behind each removal, and the issued version naming
who corrected what and when they signed. A claim that somebody knows a
buyer well is recorded as a claim, with the person who made it.

An agent that leaves less than this does not implement
`relationship-mapper`, whatever else it does well.
com.agentcatalog.agent/SERVERS.mdThe systems the agent needs, by role rather than by product.
# The systems this abstract agent needs

Five systems, named by role rather than by product. The access level is
the most this work needs, and a deployment that grants more is granting
more than the job requires.

| Role | Access | What the access is for |
|---|---|---|
| the CRM | write | The people, their roles against a decision, and the last contact date. |
| the contact database and the people sources | read | To find the people the record does not hold, inside the run's cap. |
| the email and calendar record | read | Strength is computed from recorded contact, not from opinion. |
| the consent record | read | What may be held about a person. |
| the account map record | write | The map is issued at a version. |

Whoever builds an agent from this plugin writes the `mcp.json` that
points these roles at their own systems. Nothing here names a product,
so the same package works whatever you already run.
plugin.jsonThe manifest. It lists the skills and the systems the agent needs.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
  "name": "relationship-mapper",
  "version": "1.0.0",
  "description": "The relationship-mapper abstract agent. Works out who decides, who influences, who blocks and who we already know at an account, placing every person against a named decision rather than against the logo.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/relationship-mapper",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "sales",
    "map-the-account-people",
    "review-the-account-plans",
    "write-an-account-plan",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "relationship-mapper",
      "agentVersion": 1,
      "department": "sales",
      "abstract": true,
      "works": "Runs collect-and-report to pull the people already held and to find the ones the record does not hold, assessment for the strength scores and the privacy check, roll-call on coverage while the map is being built, and decide-and-announce to issue the map at a version. Sits in the briefing where the account owner agrees which decisions the map covers, and delivers into the approval where the people who have actually met these buyers correct it. Takes the account read and the decisions in scope from the account planner, the found people from the researcher, the strength scores from the analytics agent, and the joiners and leavers from the account monitor. Hands the issued map back to the account planner and to anyone else who plans from it.",
      "servers": [
        {
          "name": "the CRM",
          "role": "crm",
          "access": "write",
          "needs": "The people, their roles against a decision, and the last contact date."
        },
        {
          "name": "the contact database and the people sources",
          "role": "contact-database-and-the-people-sources",
          "access": "read",
          "needs": "To find the people the record does not hold, inside the run's cap."
        },
        {
          "name": "the email and calendar record",
          "role": "email-and-calendar-record",
          "access": "read",
          "needs": "Strength is computed from recorded contact, not from opinion."
        },
        {
          "name": "the consent record",
          "role": "consent-record",
          "access": "read",
          "needs": "What may be held about a person."
        },
        {
          "name": "the account map record",
          "role": "account-map-record",
          "access": "write",
          "needs": "The map is issued at a version."
        }
      ],
      "records": [
        "Per person: the decision they sit under, whether they decide, influence, block or use, the source they were found in and that source's publication date, the reporting line behind any claim of authority, the strength score with the contact history it was computed from, the path in and who at our end holds it, and the stance with what was said or done behind it.",
        "Per map: every decision with no decider found or nobody we know marked as a gap rather than left blank, what the privacy check removed and the rule behind each removal, and the issued version naming who corrected what and when they signed.",
        "A claim that somebody knows a buyer well is recorded as a claim, with the person who made it."
      ],
      "escalates": [
        "what may be held about a person - to the privacy reviewer, always, before the map is issued",
        "a person who asks to be removed - removed inside the stated days, from the map and from anything downstream that copied it, with the removal recorded and the removed detail not kept",
        "a decision in scope with no decider found, or one whose decider opposes us - to the account owner as a named coverage gap",
        "a joiner, leaver or title change that puts a decision at risk - to the account owner and back into the map, against the version the plan was built on"
      ],
      "not": [
        "Does not contact anybody in the map.",
        "Contact happens in the outbound work under the consent record, and the map is never used as a sending list.",
        "Does not decide what to sell or in what order, which is the account planner's job, and does not build prospect lists from cold sources, which belongs to the prospect researcher."
      ],
      "processes": [
        {
          "process": "ref/sls/map-the-account-people",
          "activities": [
            "Pull the People We Already Hold",
            "Find the People We Do Not Hold",
            "Place People Against a Decision",
            "Read the Reporting Lines",
            "Score How Well We Know Each Person",
            "Find the Paths In",
            "Read Where Each Person Stands",
            "Name the Coverage Gaps",
            "Check What May Be Held About a Person",
            "Issue the Map at a Version",
            "Watch for People Moving"
          ]
        },
        {
          "process": "ref/sls/write-an-account-plan",
          "activities": [
            "Name Who Buys Each One"
          ]
        },
        {
          "process": "ref/sls/review-the-account-plans",
          "activities": [
            "Check Whether the People Changed"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# relationship-mapper

This is an abstract agent, published as an Agent Plugin. An abstract
agent is a job description rather than an implementation. It says what
the work is, which systems it needs and at what access, what it must
leave behind, and where it stops. Any agent that leaves the records can
implement it.

The plugin carries five skills, no `mcp.json`, and everything the
abstract agent owes under `com.agentcatalog.agent/`.

## Why there is no mcp.json

A conformant server entry in `mcp.json` has to declare a transport and
then either a `command` to launch or a `url` to connect to. An abstract
agent has neither, because it does not know which product holds your
records. Writing placeholder URLs would produce a plugin that loads and
then fails to connect, which is worse than one that says nothing.

Section 6.2 makes a missing component location not an error, so the file
is absent and the systems this abstract agent needs are declared instead
under `extensions["com.agentcatalog.agent"].servers`, as a role, an
access level and what the access is for. Whoever builds an agent from
this plugin writes the `mcp.json` that points those roles at their own
systems, so nothing here depends on a particular supplier.

## Why the obligations are in an extension

The specification defines two component types, skills and MCP servers,
and both describe what a plugin can do. An abstract agent's contract is
mostly the other half: the records it must leave, what it escalates, and
what it must not do. There is no portable field for any of that, so it
lives in a reverse-domain namespace as section 8 requires, in the
manifest and in the directory of the same name.

## Where this abstract agent is used

`ref/sls/map-the-account-people`, `ref/sls/write-an-account-plan`,
`ref/sls/review-the-account-plans`. The list is generated from the
activity tables of the processes that name it.

https://agentcatalog.com/abstract-agents/relationship-mapper
skills/find-the-people-at-an-account/SKILL.mdPulls the people the record already holds at an account and finds the ones it does not, inside the cap the run sets. Use it when running `ref/sls/map-the-account-people`.
---
name: find-the-people-at-an-account
description: Pulls the people the record already holds at an account and finds the ones it does not, inside the cap the run sets. Use it when running `ref/sls/map-the-account-people`.
license: CC-BY-4.0
metadata:
  agent: relationship-mapper
  agent-version: "1"
---

# Find the people at an account

## What it does

Pulls the people the record already holds at an account and finds the
ones it does not, inside the cap the run sets. Every person carries the
source they were found in and the date that source was published.

## Where it happens

The agent does this in two activities across one reference process. Each
one names the activity as that process words it.

- **Find the People We Do Not Hold**
  - `ref/sls/map-the-account-people`, activity 4 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)
- **Pull the People We Already Hold**
  - `ref/sls/map-the-account-people`, activity 3 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)

## What to record

Per person: the decision they sit under, whether they decide, influence,
block or use, the source they were found in and that source's
publication date, the reporting line behind any claim of authority, the
strength score with the contact history it was computed from, the path
in and who at our end holds it, and the stance with what was said or
done behind it. Per map: every decision with no decider found or nobody
we know marked as a gap rather than left blank, what the privacy check
removed and the rule behind each removal, and the issued version naming
who corrected what and when they signed. A claim that somebody knows a
buyer well is recorded as a claim, with the person who made it.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/issue-the-map-with-its-gaps/SKILL.mdMarks every decision with no decider found, and every one where we know nobody, as a gap. Use it when running `ref/sls/map-the-account-people`.
---
name: issue-the-map-with-its-gaps
description: Marks every decision with no decider found, and every one where we know nobody, as a gap. Use it when running `ref/sls/map-the-account-people`.
license: CC-BY-4.0
metadata:
  agent: relationship-mapper
  agent-version: "1"
---

# Issue the map with its gaps

## What it does

Marks every decision with no decider found, and every one where we know
nobody, as a gap. Checks what may be held about each person before
anything goes out, then issues the map at a version.

## Where it happens

The agent does this in three activities across one reference process.
Each one names the activity as that process words it.

- **Check What May Be Held About a Person**
  - `ref/sls/map-the-account-people`, activity 11 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)
- **Issue the Map at a Version**
  - `ref/sls/map-the-account-people`, activity 13 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)
- **Name the Coverage Gaps**
  - `ref/sls/map-the-account-people`, activity 10 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)

## What to record

Per person: the decision they sit under, whether they decide, influence,
block or use, the source they were found in and that source's
publication date, the reporting line behind any claim of authority, the
strength score with the contact history it was computed from, the path
in and who at our end holds it, and the stance with what was said or
done behind it. Per map: every decision with no decider found or nobody
we know marked as a gap rather than left blank, what the privacy check
removed and the rule behind each removal, and the issued version naming
who corrected what and when they signed. A claim that somebody knows a
buyer well is recorded as a claim, with the person who made it.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/keep-the-map-true-as-people-move/SKILL.mdWatches for joiners, leavers and title changes, and reads the people again at review against the version the plan was built on. Use it when running `ref/sls/map-the-account-people` and `ref/sls/review-the-account-plans`.
---
name: keep-the-map-true-as-people-move
description: Watches for joiners, leavers and title changes, and reads the people again at review against the version the plan was built on. Use it when running `ref/sls/map-the-account-people` and `ref/sls/review-the-account-plans`.
license: CC-BY-4.0
metadata:
  agent: relationship-mapper
  agent-version: "1"
---

# Keep the map true as people move

## What it does

Watches for joiners, leavers and title changes, and reads the people
again at review against the version the plan was built on. A plan is
never left standing on a buyer who left.

## Where it happens

The agent does this in two activities across two reference processes.
Each one names the activity as that process words it.

- **Check Whether the People Changed**
  - `ref/sls/review-the-account-plans`, activity 5 -
    [Review the Account Plans](../../../../processes/sales/review-the-account-plans.md)
- **Watch for People Moving**
  - `ref/sls/map-the-account-people`, activity 14 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)

## What to record

Per person: the decision they sit under, whether they decide, influence,
block or use, the source they were found in and that source's
publication date, the reporting line behind any claim of authority, the
strength score with the contact history it was computed from, the path
in and who at our end holds it, and the stance with what was said or
done behind it. Per map: every decision with no decider found or nobody
we know marked as a gap rather than left blank, what the privacy check
removed and the rule behind each removal, and the issued version naming
who corrected what and when they signed. A claim that somebody knows a
buyer well is recorded as a claim, with the person who made it.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/place-people-against-the-decisions/SKILL.mdPlaces each person against a named decision rather than against the logo, and says whether they decide, influence, block or use. Use it when running `ref/sls/map-the-account-people` and `ref/sls/write-an-account-plan`.
---
name: place-people-against-the-decisions
description: Places each person against a named decision rather than against the logo, and says whether they decide, influence, block or use. Use it when running `ref/sls/map-the-account-people` and `ref/sls/write-an-account-plan`.
license: CC-BY-4.0
metadata:
  agent: relationship-mapper
  agent-version: "1"
---

# Place people against the decisions

## What it does

Places each person against a named decision rather than against the
logo, and says whether they decide, influence, block or use. Reads the
reporting lines behind any claim of authority, and names the buyer
behind an opportunity a plan carries.

## Where it happens

The agent does this in three activities across two reference processes.
Each one names the activity as that process words it.

- **Name Who Buys Each One**
  - `ref/sls/write-an-account-plan`, activity 7 -
    [Write an Account Plan](../../../../processes/sales/write-an-account-plan.md)
- **Place People Against a Decision**
  - `ref/sls/map-the-account-people`, activity 5 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)
- **Read the Reporting Lines**
  - `ref/sls/map-the-account-people`, activity 6 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)

## What to record

Per person: the decision they sit under, whether they decide, influence,
block or use, the source they were found in and that source's
publication date, the reporting line behind any claim of authority, the
strength score with the contact history it was computed from, the path
in and who at our end holds it, and the stance with what was said or
done behind it. Per map: every decision with no decider found or nobody
we know marked as a gap rather than left blank, what the privacy check
removed and the rule behind each removal, and the issued version naming
who corrected what and when they signed. A claim that somebody knows a
buyer well is recorded as a claim, with the person who made it.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/read-the-relationship-and-the-way-in/SKILL.mdScores how well we know each person from recorded contact rather than from opinion, names the path in and who at our end holds it, and reads where each person stands on what we would sell. Use it when running `ref/sls/map-the-account-people`.
---
name: read-the-relationship-and-the-way-in
description: Scores how well we know each person from recorded contact rather than from opinion, names the path in and who at our end holds it, and reads where each person stands on what we would sell. Use it when running `ref/sls/map-the-account-people`.
license: CC-BY-4.0
metadata:
  agent: relationship-mapper
  agent-version: "1"
---

# Read the relationship and the way in

## What it does

Scores how well we know each person from recorded contact rather than
from opinion, names the path in and who at our end holds it, and reads
where each person stands on what we would sell.

## Where it happens

The agent does this in three activities across one reference process.
Each one names the activity as that process words it.

- **Find the Paths In**
  - `ref/sls/map-the-account-people`, activity 8 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)
- **Read Where Each Person Stands**
  - `ref/sls/map-the-account-people`, activity 9 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)
- **Score How Well We Know Each Person**
  - `ref/sls/map-the-account-people`, activity 7 -
    [Map the People at an Account](../../../../processes/sales/map-the-account-people.md)

## What to record

Per person: the decision they sit under, whether they decide, influence,
block or use, the source they were found in and that source's
publication date, the reporting line behind any claim of authority, the
strength score with the contact history it was computed from, the path
in and who at our end holds it, and the stance with what was said or
done behind it. Per map: every decision with no decider found or nobody
we know marked as a gap rather than left blank, what the privacy check
removed and the rule behind each removal, and the issued version naming
who corrected what and when they signed. A claim that somebody knows a
buyer well is recorded as a claim, with the person who made it.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
mcp.jsonNot in the package.

Every server entry in an mcp.json needs either a command to run or a url to connect to, and the package cannot know either of those until somebody points it at their own systems. So the file is left out, the systems the agent needs are named by role in plugin.json, and you write the mcp.json when you set it up.

Setting it up

Point it at your systems

To run an agent built from this package, write an mcp.json that says which of your systems fills each role. The package names these 5 roles, and the access level beside each one is the most the work needs.

crm · writecontact-database-and-the-people-sources · reademail-and-calendar-record · readconsent-record · readaccount-map-record · write
mcp.json You write this file. It is not part of the package.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
  "mcpServers": {
    "crm": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/crm"
    },
    "contact-database-and-the-people-sources": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/contact-database-and-the-people-sources"
    },
    "email-and-calendar-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/email-and-calendar-record"
    },
    "consent-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/consent-record"
    },
    "account-map-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/account-map-record"
    }
  }
}

The hostnames here are a placeholder for your own. Whichever product holds each of these systems, the agent you build is yours and nobody else has to be involved in running it.

Where it works

3 processes, 13 activities

The highlighted activities are the ones this abstract agent does. The other activities in each process belong to other abstract agents or to people.

Map the People at an Accountref/sls/map-the-account-people · 14 activities
1234567891011121314

Pull the People We Already Hold · Find the People We Do Not Hold · Place People Against a Decision · Read the Reporting Lines · Score How Well We Know Each Person · Find the Paths In · Read Where Each Person Stands · Name the Coverage Gaps · Check What May Be Held About a Person · Issue the Map at a Version · Watch for People Moving

Review the Account Plansref/sls/review-the-account-plans · 14 activities
1234567891011121314

Check Whether the People Changed

Write an Account Planref/sls/write-an-account-plan · 16 activities
12345678910111213141516

Name Who Buys Each One

The records it leaves

What it writes down

Per person: the decision they sit under, whether they decide, influence, block or use, the source they were found in and that source's publication date, the reporting line behind any claim of authority, the strength score with the contact history it was computed from, the path in and who at our end holds it, and the stance with what was said or done behind it. Per map: every decision with no decider found or nobody we know marked as a gap rather than left blank, what the privacy check removed and the rule behind each removal, and the issued version naming who corrected what and when they signed. A claim that somebody knows a buyer well is recorded as a claim, with the person who made it.

Where it stops

What it will not do

Does not contact anybody in the map. Contact happens in the outbound work under the consent record, and the map is never used as a sending list. Does not decide what to sell or in what order, which is the account planner's job, and does not build prospect lists from cold sources, which belongs to the prospect researcher.

These limits are written into the job on purpose, so that everyone adopting the process knows which decisions stay with a person.

Agents built from this plugin

Who has built one, and how far each one got

Nobody has built one yet. The catalog says so rather than leaving the section off, because an empty list is a fact about the document.

declare it implements: relationship-mapper v1 One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
A guess, not a claim

The closest things in the catalog, by description

Nobody above has claimed any of these. This is the nearest match by wording between the job written above and what publishers wrote about their own listings, closest first, and wording is not evidence: some of these will be wrong, and a job with nothing suitable still gets whatever was nearest. The publishers have never heard of this abstract agent and have promised nothing about it. What a claim looks like is in the table above, and it is signed.

Might be reached for

Not workers. These are capability that whatever does the job would use, which is a different relationship and kept in its own column for that reason.

  • Red String MCP server · redstringapp.xyz · hosted · mirrored from the MCP registry Revenue research and pipeline tools for agencies: scouting, contact intel, ABM, cadences, briefs.
  • Relentless Identity MCP server · relentlessidentity.com · hosted · mirrored from the MCP registry Corporate identity finder and email verification. Map real addresses and users to real people.
  • RepScale MCP server · kbrayatl.github.io · hosted · mirrored from the MCP registry Sales research and prep tools for B2B reps. Prospect briefs, angles, citations.