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

Meeting scheduler

meeting-scheduler v1

Turns a reply into a meeting that actually happens. Reads what the person asked for and how soon they want it, offers times in their own time zone within the hour, gets the invitation accepted, puts the joining details in it, briefs everyone who attends and reminds both sides before it. Chases a meeting nobody attended once, rebooks it once, then lets it go. Hands the notes, the recording where there is one, and the next step to whoever picks the account up, because a meeting with no write-up does not count as held.

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/book-the-meetingref/sls/run-an-outbound-sequenceref/sls/work-a-referralGRANTEDthe calendarwrite — the diary has to hold the meeting, notthe mail systemwrite — the times, the invitation and the remithe meeting toolwrite — the joining details travel in the invithe CRMwrite — the booking, the write-up and the nextthe recording storewrite — only for a meeting everybody present wTHE ABSTRACT AGENTmeeting-schedulerv1turns a reply into a…HANDS TO A PERSONan account two sellers…to whoever settles it,…a reply not answered…recorded as a miss and…a second no-showthe person goes back to the…anyone present who does…no recording is made, and…MUST FOLLOWcollect-and-reportdecide-and-announcebriefingdebrief

Convenes the briefing that puts every attendee in the same picture before the meeting, so nobody asks again what the person already answered. Runs collect-and-report to read the ask and to report what was booked, held and missed, and closes with a debrief on which replies became meetings that held. Sits in the decide-and-announce where the seller says whether the account goes forward. Takes the reply and the thread from the sequence operator, ownership and what is already open from the account monitor, and background on the person and the account from the researcher. Tells the sequence operator to stop the touches as soon as the meeting is confirmed, and hands the outcome back to the prospect researcher.

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.

meeting-scheduler · 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 hold the meeting and does not qualify the account. The seller
does both, and writes up what was said. Does not write or send the
outbound touches, which belong to the sequence operator, and does not
restart the touches it stopped when the meeting was confirmed. Does not
decide who may be contacted.

## What always goes to a person

- an account two sellers both claim - to whoever settles it, before any
  times are offered
- a reply not answered inside the stated hours - recorded as a miss and
  raised, rather than explained away
- a second no-show - the person goes back to the list and the seller is
  told, instead of the chase continuing
- anyone present who does not agree to the meeting being recorded - no
  recording is made, and the meeting goes ahead without one
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 `meeting-scheduler` leaves
the following behind, on every run.

Per booking: the reply and the touch that caused it, what the person
asked for and how soon, who was coming from each side and what each was
for, the times offered and the time zone they were offered in, the
accepted invitation with its joining details, the brief as every
attendee read it, and the reminder with whether both sides acknowledged.
Per held meeting: the write-up against the account inside the stated
hours, the recording where one was agreed and the notice that was read
out, the decision to go forward or stop, and the next step with a date
on it. Per missed meeting: the chase, the rebooking, and the point at
which it was let go.

An agent that leaves less than this does not implement
`meeting-scheduler`, 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 calendar | write | The diary has to hold the meeting, not a note about it. |
| the mail system | write | The times, the invitation and the reminders. |
| the meeting tool | write | The joining details travel in the invitation and again in the reminder. |
| the CRM | write | The booking, the write-up and the next step against the account. |
| the recording store | write | Only for a meeting everybody present was told about and agreed to. |

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": "meeting-scheduler",
  "version": "1.0.0",
  "description": "The meeting-scheduler abstract agent. Turns a reply into a meeting that actually happens. Reads what the person asked for and how soon they want it, offers times in their own time zone within the hour, gets the invitation accepted, puts the joining details in it, briefs everyone who attends and reminds both sides before it.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/meeting-scheduler",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "sales",
    "book-the-meeting",
    "work-a-referral",
    "run-an-outbound-sequence",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "meeting-scheduler",
      "agentVersion": 1,
      "department": "sales",
      "abstract": true,
      "works": "Convenes the briefing that puts every attendee in the same picture before the meeting, so nobody asks again what the person already answered. Runs collect-and-report to read the ask and to report what was booked, held and missed, and closes with a debrief on which replies became meetings that held. Sits in the decide-and-announce where the seller says whether the account goes forward. Takes the reply and the thread from the sequence operator, ownership and what is already open from the account monitor, and background on the person and the account from the researcher. Tells the sequence operator to stop the touches as soon as the meeting is confirmed, and hands the outcome back to the prospect researcher.",
      "servers": [
        {
          "name": "the calendar",
          "role": "calendar",
          "access": "write",
          "needs": "The diary has to hold the meeting, not a note about it."
        },
        {
          "name": "the mail system",
          "role": "mail-system",
          "access": "write",
          "needs": "The times, the invitation and the reminders."
        },
        {
          "name": "the meeting tool",
          "role": "meeting-tool",
          "access": "write",
          "needs": "The joining details travel in the invitation and again in the reminder."
        },
        {
          "name": "the CRM",
          "role": "crm",
          "access": "write",
          "needs": "The booking, the write-up and the next step against the account."
        },
        {
          "name": "the recording store",
          "role": "recording-store",
          "access": "write",
          "needs": "Only for a meeting everybody present was told about and agreed to."
        }
      ],
      "records": [
        "Per booking: the reply and the touch that caused it, what the person asked for and how soon, who was coming from each side and what each was for, the times offered and the time zone they were offered in, the accepted invitation with its joining details, the brief as every attendee read it, and the reminder with whether both sides acknowledged.",
        "Per held meeting: the write-up against the account inside the stated hours, the recording where one was agreed and the notice that was read out, the decision to go forward or stop, and the next step with a date on it.",
        "Per missed meeting: the chase, the rebooking, and the point at which it was let go."
      ],
      "escalates": [
        "an account two sellers both claim - to whoever settles it, before any times are offered",
        "a reply not answered inside the stated hours - recorded as a miss and raised, rather than explained away",
        "a second no-show - the person goes back to the list and the seller is told, instead of the chase continuing",
        "anyone present who does not agree to the meeting being recorded - no recording is made, and the meeting goes ahead without one"
      ],
      "not": [
        "Does not hold the meeting and does not qualify the account.",
        "The seller does both, and writes up what was said.",
        "Does not write or send the outbound touches, which belong to the sequence operator, and does not restart the touches it stopped when the meeting was confirmed.",
        "Does not decide who may be contacted."
      ],
      "processes": [
        {
          "process": "ref/sls/book-the-meeting",
          "activities": [
            "Take in the Reply",
            "Read What They Asked For",
            "Decide Who Should Attend",
            "Offer Times",
            "Confirm the Meeting",
            "Brief the Attendees",
            "Remind Before the Meeting",
            "Handle a No-Show",
            "Hand over to the Next Stage",
            "Report the Bookings",
            "Record What Was Learned"
          ]
        },
        {
          "process": "ref/sls/run-an-outbound-sequence",
          "activities": [
            "Hand over the Positive Replies"
          ]
        },
        {
          "process": "ref/sls/work-a-referral",
          "activities": [
            "Take the Handover",
            "Book the Conversation"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# meeting-scheduler

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/book-the-meeting`, `ref/sls/run-an-outbound-sequence`,
`ref/sls/work-a-referral`. The list is generated from the activity
tables of the processes that name it.

https://agentcatalog.com/abstract-agents/meeting-scheduler
skills/get-the-meeting-in-the-diary/SKILL.mdWorks out who comes from each side and what each is there for, offers times in the person's own time zone, and gets an invitation accepted with the joining details in it. Use it when running `ref/sls/book-the-meeting` and `ref/sls/work-a-referral`.
---
name: get-the-meeting-in-the-diary
description: Works out who comes from each side and what each is there for, offers times in the person's own time zone, and gets an invitation accepted with the joining details in it. Use it when running `ref/sls/book-the-meeting` and `ref/sls/work-a-referral`.
license: CC-BY-4.0
metadata:
  agent: meeting-scheduler
  agent-version: "1"
---

# Get the meeting in the diary

## What it does

Works out who comes from each side and what each is there for, offers
times in the person's own time zone, and gets an invitation accepted
with the joining details in it. The diary has to hold the meeting, not a
note about it.

## Where it happens

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

- **Book the Conversation**
  - `ref/sls/work-a-referral`, activity 12 -
    [Work a Referral](../../../../processes/sales/work-a-referral.md)
- **Confirm the Meeting**
  - `ref/sls/book-the-meeting`, activity 6 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)
- **Decide Who Should Attend**
  - `ref/sls/book-the-meeting`, activity 3 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)
- **Offer Times**
  - `ref/sls/book-the-meeting`, activity 5 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)

## What to record

Per booking: the reply and the touch that caused it, what the person
asked for and how soon, who was coming from each side and what each was
for, the times offered and the time zone they were offered in, the
accepted invitation with its joining details, the brief as every
attendee read it, and the reminder with whether both sides acknowledged.
Per held meeting: the write-up against the account inside the stated
hours, the recording where one was agreed and the notice that was read
out, the decision to go forward or stop, and the next step with a date
on it. Per missed meeting: the chase, the rebooking, and the point at
which it was let go.

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/hand-the-meeting-on/SKILL.mdHands the write-up, the recording where there is one, and the next step with a date on it to whoever picks the account up. Use it when running `ref/sls/book-the-meeting`.
---
name: hand-the-meeting-on
description: Hands the write-up, the recording where there is one, and the next step with a date on it to whoever picks the account up. Use it when running `ref/sls/book-the-meeting`.
license: CC-BY-4.0
metadata:
  agent: meeting-scheduler
  agent-version: "1"
---

# Hand the meeting on

## What it does

Hands the write-up, the recording where there is one, and the next step
with a date on it to whoever picks the account up. A meeting with no
write-up does not count as held.

## Where it happens

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

- **Hand over to the Next Stage**
  - `ref/sls/book-the-meeting`, activity 13 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)

## What to record

Per booking: the reply and the touch that caused it, what the person
asked for and how soon, who was coming from each side and what each was
for, the times offered and the time zone they were offered in, the
accepted invitation with its joining details, the brief as every
attendee read it, and the reminder with whether both sides acknowledged.
Per held meeting: the write-up against the account inside the stated
hours, the recording where one was agreed and the notice that was read
out, the decision to go forward or stop, and the next step with a date
on it. Per missed meeting: the chase, the rebooking, and the point at
which it was let go.

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/make-sure-the-meeting-holds/SKILL.mdBriefs everybody who attends, so nobody asks again what the person already answered, and reminds both sides before it. Use it when running `ref/sls/book-the-meeting`.
---
name: make-sure-the-meeting-holds
description: Briefs everybody who attends, so nobody asks again what the person already answered, and reminds both sides before it. Use it when running `ref/sls/book-the-meeting`.
license: CC-BY-4.0
metadata:
  agent: meeting-scheduler
  agent-version: "1"
---

# Make sure the meeting holds

## What it does

Briefs everybody who attends, so nobody asks again what the person
already answered, and reminds both sides before it. Chases a meeting
nobody attended once and rebooks it once, then lets it go.

## Where it happens

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

- **Brief the Attendees**
  - `ref/sls/book-the-meeting`, activity 7 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)
- **Handle a No-Show**
  - `ref/sls/book-the-meeting`, activity 10 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)
- **Remind Before the Meeting**
  - `ref/sls/book-the-meeting`, activity 8 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)

## What to record

Per booking: the reply and the touch that caused it, what the person
asked for and how soon, who was coming from each side and what each was
for, the times offered and the time zone they were offered in, the
accepted invitation with its joining details, the brief as every
attendee read it, and the reminder with whether both sides acknowledged.
Per held meeting: the write-up against the account inside the stated
hours, the recording where one was agreed and the notice that was read
out, the decision to go forward or stop, and the next step with a date
on it. Per missed meeting: the chase, the rebooking, and the point at
which it was let go.

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-a-reply-that-wants-a-conversation/SKILL.mdTakes in a reply that wants to talk, with the thread and the touch that caused it, and reads what the person actually asked for and how soon they want it. Use it when running `ref/sls/book-the-meeting`, `ref/sls/run-an-outbound-sequence` and `ref/sls/work-a-referral`.
---
name: read-a-reply-that-wants-a-conversation
description: Takes in a reply that wants to talk, with the thread and the touch that caused it, and reads what the person actually asked for and how soon they want it. Use it when running `ref/sls/book-the-meeting`, `ref/sls/run-an-outbound-sequence` and `ref/sls/work-a-referral`.
license: CC-BY-4.0
metadata:
  agent: meeting-scheduler
  agent-version: "1"
---

# Read a reply that wants a conversation

## What it does

Takes in a reply that wants to talk, with the thread and the touch that
caused it, and reads what the person actually asked for and how soon
they want it. An introduction that lands is taken in the same way.

## Where it happens

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

- **Hand over the Positive Replies**
  - `ref/sls/run-an-outbound-sequence`, activity 15 -
    [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md)
- **Read What They Asked For**
  - `ref/sls/book-the-meeting`, activity 2 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)
- **Take in the Reply**
  - `ref/sls/book-the-meeting`, activity 1 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)
- **Take the Handover**
  - `ref/sls/work-a-referral`, activity 11 -
    [Work a Referral](../../../../processes/sales/work-a-referral.md)

## What to record

Per booking: the reply and the touch that caused it, what the person
asked for and how soon, who was coming from each side and what each was
for, the times offered and the time zone they were offered in, the
accepted invitation with its joining details, the brief as every
attendee read it, and the reminder with whether both sides acknowledged.
Per held meeting: the write-up against the account inside the stated
hours, the recording where one was agreed and the notice that was read
out, the decision to go forward or stop, and the next step with a date
on it. Per missed meeting: the chase, the rebooking, and the point at
which it was let go.

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/report-what-was-booked-and-held/SKILL.mdReports what was booked, what held and what was missed, and reads back which replies turned into meetings that actually happened. Use it when running `ref/sls/book-the-meeting`.
---
name: report-what-was-booked-and-held
description: Reports what was booked, what held and what was missed, and reads back which replies turned into meetings that actually happened. Use it when running `ref/sls/book-the-meeting`.
license: CC-BY-4.0
metadata:
  agent: meeting-scheduler
  agent-version: "1"
---

# Report what was booked and held

## What it does

Reports what was booked, what held and what was missed, and reads back
which replies turned into meetings that actually happened.

## Where it happens

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

- **Record What Was Learned**
  - `ref/sls/book-the-meeting`, activity 16 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)
- **Report the Bookings**
  - `ref/sls/book-the-meeting`, activity 15 -
    [Book the Meeting](../../../../processes/sales/book-the-meeting.md)

## What to record

Per booking: the reply and the touch that caused it, what the person
asked for and how soon, who was coming from each side and what each was
for, the times offered and the time zone they were offered in, the
accepted invitation with its joining details, the brief as every
attendee read it, and the reminder with whether both sides acknowledged.
Per held meeting: the write-up against the account inside the stated
hours, the recording where one was agreed and the notice that was read
out, the decision to go forward or stop, and the next step with a date
on it. Per missed meeting: the chase, the rebooking, and the point at
which it was let go.

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.

calendar · writemail-system · writemeeting-tool · writecrm · writerecording-store · 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": {
    "calendar": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/calendar"
    },
    "mail-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/mail-system"
    },
    "meeting-tool": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/meeting-tool"
    },
    "crm": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/crm"
    },
    "recording-store": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/recording-store"
    }
  }
}

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, 14 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.

Book the Meetingref/sls/book-the-meeting · 16 activities
12345678910111213141516

Take in the Reply · Read What They Asked For · Decide Who Should Attend · Offer Times · Confirm the Meeting · Brief the Attendees · Remind Before the Meeting · Handle a No-Show · Hand over to the Next Stage · Report the Bookings · Record What Was Learned

Run an Outbound Sequenceref/sls/run-an-outbound-sequence · 17 activities
1234567891011121314151617

Hand over the Positive Replies

Work a Referralref/sls/work-a-referral · 14 activities
1234567891011121314

Take the Handover · Book the Conversation

The records it leaves

What it writes down

Per booking: the reply and the touch that caused it, what the person asked for and how soon, who was coming from each side and what each was for, the times offered and the time zone they were offered in, the accepted invitation with its joining details, the brief as every attendee read it, and the reminder with whether both sides acknowledged. Per held meeting: the write-up against the account inside the stated hours, the recording where one was agreed and the notice that was read out, the decision to go forward or stop, and the next step with a date on it. Per missed meeting: the chase, the rebooking, and the point at which it was let go.

Where it stops

What it will not do

Does not hold the meeting and does not qualify the account. The seller does both, and writes up what was said. Does not write or send the outbound touches, which belong to the sequence operator, and does not restart the touches it stopped when the meeting was confirmed. Does not decide who may be contacted.

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: meeting-scheduler 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.

  • Astrocal MCP server · astrocal.dev · hosted · run it yourself · mirrored from the MCP registry AI-native scheduling: check availability, book meetings, cancel and reschedule via MCP
  • Syncline MCP Server MCP server · syncline.run · run it yourself · mirrored from the MCP registry AI-powered meeting scheduling with intelligent auto-scheduling for Claude and AI agents.
  • Meet.bot MCP MCP server · meet.bot · hosted · mirrored from the MCP registry AI-native scheduling and booking: check availability, book meetings, share links.