Quota setter
quota-setter v1Puts a number on every territory and can say what each one rests on. Reads what a patch carried before, drafts from the carrying model and the attainment curve, and tests every draft against the seller time behind it and against what that patch actually closed. The quotas add up to more than the target on purpose, by a figure a named person decided rather than by a rounding habit. The set is signed as one thing, and this agent keeps the curve, the history and the assumptions where the next round reads them.
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.
Drafts under build-by-talent and takes the assessments back from the capacity-manager and statistician agents. Sits in the decide-and-announce where leaders set the over-assignment, and in the approval where one person signs the whole set. Takes the map and its carrying numbers from the territory-modeler agent, works the ramp cases with a compensation partner, takes the cost of the plan from finance, and hands the coverage question to the coverage-check agent before any roll-up is believed.
What is in the package
6 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.
# Where this abstract agent stops Does not draw the map or decide which accounts sit in which patch. Does not approve its own set: it drafts, tests, rolls up and adjusts, and a named person signs the whole thing at once. Does not pay anybody and does not calculate commission, which happens elsewhere against a pay plan this agent only reads. Does not spread a gap evenly across every patch, because that moves the numbers that were already right. ## What always goes to a person - the over-assignment, always - to the sales leader and finance, as a figure with a reason, because a total nobody signed is not one - a patch whose seller cannot work its number - to the sales leader with the hours the finding rests on, and a decision to sign it anyway is written against that patch - a plan that pays more than the number funds - to finance and the sales leader, with what it pays at the modelled, the target and the high case - an attainment curve the data cannot carry - to the statistician and the signer, with its range showing, and the quotas built on it marked as resting on a wide curve - a move that shifts a receiving seller's number by more than the carve allows - to whoever decided the move, before any system changes
# The records this abstract agent must leave
This is the contract. An agent implementing `quota-setter` leaves the
following behind, on every run.
Per run: the over-assignment as a figure with who decided it and why, a
draft on every patch naming the carrying figure and the curve behind it,
and the capacity test and the history test attached to each number.
Every number further from history than the stated distance carries the
reason for the difference beside it. The roll-up states the sum, the
target and the distance between them as an amount, and any adjustment
records what moved, on which patch, and by how much. Ramped numbers name
the written rule that produced them and the dates they cover. The signed
set names the person who signed it and the hour, and a quota changed
afterwards is a new version saying what moved and who decided it, with
the version it replaces left where it was.
An agent that leaves less than this does not implement `quota-setter`,
whatever else it does well.
# 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 territory map | read | The patches it is putting numbers on. |
| the reporting warehouse | read | What each patch closed before. |
| the pay plan record | read | What the plan pays at each case. |
| the quota record | write | The drafts, the signed set, the versions. |
| the notification channel | write | Every seller sees their own statement on one date. |
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.
{
"$schema": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
"name": "quota-setter",
"version": "1.0.0",
"description": "The quota-setter abstract agent. Puts a number on every territory and can say what each one rests on. Reads what a patch carried before, drafts from the carrying model and the attainment curve, and tests every draft against the seller time behind it and against what that patch actually closed.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/quota-setter",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"revenue-operations",
"set-the-quotas",
"publish-the-carve",
"move-an-account",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "quota-setter",
"agentVersion": 1,
"department": "revenue-operations",
"abstract": true,
"works": "Drafts under build-by-talent and takes the assessments back from the capacity-manager and statistician agents. Sits in the decide-and-announce where leaders set the over-assignment, and in the approval where one person signs the whole set. Takes the map and its carrying numbers from the territory-modeler agent, works the ramp cases with a compensation partner, takes the cost of the plan from finance, and hands the coverage question to the coverage-check agent before any roll-up is believed.",
"servers": [
{
"name": "the territory map",
"role": "territory-map",
"access": "read",
"needs": "The patches it is putting numbers on."
},
{
"name": "the reporting warehouse",
"role": "reporting-warehouse",
"access": "read",
"needs": "What each patch closed before."
},
{
"name": "the pay plan record",
"role": "pay-plan-record",
"access": "read",
"needs": "What the plan pays at each case."
},
{
"name": "the quota record",
"role": "quota-record",
"access": "write",
"needs": "The drafts, the signed set, the versions."
},
{
"name": "the notification channel",
"role": "notification-channel",
"access": "write",
"needs": "Every seller sees their own statement on one date."
}
],
"records": [
"Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number.",
"Every number further from history than the stated distance carries the reason for the difference beside it.",
"The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much.",
"Ramped numbers name the written rule that produced them and the dates they cover.",
"The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was."
],
"escalates": [
"the over-assignment, always - to the sales leader and finance, as a figure with a reason, because a total nobody signed is not one",
"a patch whose seller cannot work its number - to the sales leader with the hours the finding rests on, and a decision to sign it anyway is written against that patch",
"a plan that pays more than the number funds - to finance and the sales leader, with what it pays at the modelled, the target and the high case",
"an attainment curve the data cannot carry - to the statistician and the signer, with its range showing, and the quotas built on it marked as resting on a wide curve",
"a move that shifts a receiving seller's number by more than the carve allows - to whoever decided the move, before any system changes"
],
"not": [
"Does not draw the map or decide which accounts sit in which patch.",
"Does not approve its own set: it drafts, tests, rolls up and adjusts, and a named person signs the whole thing at once.",
"Does not pay anybody and does not calculate commission, which happens elsewhere against a pay plan this agent only reads.",
"Does not spread a gap evenly across every patch, because that moves the numbers that were already right."
],
"processes": [
{
"process": "ref/rev/model-the-territories",
"activities": [
"Hand the Map to Quota Setting"
]
},
{
"process": "ref/rev/move-an-account",
"activities": [
"Set the Date It Counts From",
"Split the Credit",
"Name the Effect on Both Quotas",
"Record the Move Against the Carve"
]
},
{
"process": "ref/rev/publish-the-carve",
"activities": [
"Take in the Approved Carve",
"Build a Statement per Seller",
"Release the Statements",
"Open the Appeal Window",
"Apply What Changed",
"Publish the Final Carve",
"Record What the Appeals Showed"
]
},
{
"process": "ref/rev/set-the-quotas",
"activities": [
"Take in the Map and the Number",
"Set the Over-Assignment",
"Draft a Quota per Territory",
"Test Against Capacity",
"Work the Ramp Cases",
"Roll Up and Name the Gap",
"Adjust and Test Again",
"Cost the Plan with Finance",
"Record What the Quotas Rest On"
]
}
]
}
}
}
# quota-setter 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 six 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/rev/model-the-territories`, `ref/rev/move-an-account`, `ref/rev/publish-the-carve`, `ref/rev/set-the-quotas`. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/quota-setter
--- name: cost-the-plan-and-record-what-it-rests-on description: Works out what the plan pays at the modelled, the target and the high case, and writes the curve, the history and the assumptions behind every number where the next round can read them. Use it when running `ref/rev/set-the-quotas`. license: CC-BY-4.0 metadata: agent: quota-setter agent-version: "1" --- # Cost the plan and record what it rests on ## What it does Works out what the plan pays at the modelled, the target and the high case, and writes the curve, the history and the assumptions behind every number where the next round can read them. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Cost the Plan with Finance** - `ref/rev/set-the-quotas`, activity 13 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) - **Record What the Quotas Rest On** - `ref/rev/set-the-quotas`, activity 15 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) ## What to record Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number. Every number further from history than the stated distance carries the reason for the difference beside it. The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much. Ramped numbers name the written rule that produced them and the dates they cover. The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was. 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`.
--- name: draft-and-test-a-number-per-patch description: Drafts a number on every patch from the carrying model and the attainment curve, tests each one against the capacity behind it and against what that patch actually closed, works the ramped cases from a written rule, rolls the set up and names the distance to the target as an amount, then adjusts and tests again. Use it when running `ref/rev/set-the-quotas`. license: CC-BY-4.0 metadata: agent: quota-setter agent-version: "1" --- # Draft and test a number per patch ## What it does Drafts a number on every patch from the carrying model and the attainment curve, tests each one against the capacity behind it and against what that patch actually closed, works the ramped cases from a written rule, rolls the set up and names the distance to the target as an amount, then adjusts and tests again. A gap is never spread evenly. ## Where it happens The agent does this in five activities across one reference process. Each one names the activity as that process words it. - **Adjust and Test Again** - `ref/rev/set-the-quotas`, activity 12 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) - **Draft a Quota per Territory** - `ref/rev/set-the-quotas`, activity 6 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) - **Roll Up and Name the Gap** - `ref/rev/set-the-quotas`, activity 11 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) - **Test Against Capacity** - `ref/rev/set-the-quotas`, activity 7 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) - **Work the Ramp Cases** - `ref/rev/set-the-quotas`, activity 9 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) ## What to record Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number. Every number further from history than the stated distance carries the reason for the difference beside it. The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much. Ramped numbers name the written rule that produced them and the dates they cover. The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was. 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`.
--- name: open-a-quota-run description: Takes the map and its carrying numbers with the target the set has to reach, and gets the over-assignment fixed as a figure by a named person before any number is drafted. Use it when running `ref/rev/model-the-territories` and `ref/rev/set-the-quotas`. license: CC-BY-4.0 metadata: agent: quota-setter agent-version: "1" --- # Open a quota run ## What it does Takes the map and its carrying numbers with the target the set has to reach, and gets the over-assignment fixed as a figure by a named person before any number is drafted. A total nobody signed is not one. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Hand the Map to Quota Setting** - `ref/rev/model-the-territories`, activity 15 - [Model the Territories](../../../../processes/revenue-operations/model-the-territories.md) - **Set the Over-Assignment** - `ref/rev/set-the-quotas`, activity 2 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) - **Take in the Map and the Number** - `ref/rev/set-the-quotas`, activity 1 - [Set the Quotas](../../../../processes/revenue-operations/set-the-quotas.md) ## What to record Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number. Every number further from history than the stated distance carries the reason for the difference beside it. The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much. Ramped numbers name the written rule that produced them and the dates they cover. The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was. 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`.
--- name: put-a-statement-in-front-of-every-seller description: Takes the approved carve, builds each seller a statement of the patch they hold and the number on it, releases them all on one date, and opens the window in which a seller may appeal. Use it when running `ref/rev/publish-the-carve`. license: CC-BY-4.0 metadata: agent: quota-setter agent-version: "1" --- # Put a statement in front of every seller ## What it does Takes the approved carve, builds each seller a statement of the patch they hold and the number on it, releases them all on one date, and opens the window in which a seller may appeal. ## Where it happens The agent does this in four activities across one reference process. Each one names the activity as that process words it. - **Build a Statement per Seller** - `ref/rev/publish-the-carve`, activity 3 - [Publish the Carve](../../../../processes/revenue-operations/publish-the-carve.md) - **Open the Appeal Window** - `ref/rev/publish-the-carve`, activity 8 - [Publish the Carve](../../../../processes/revenue-operations/publish-the-carve.md) - **Release the Statements** - `ref/rev/publish-the-carve`, activity 7 - [Publish the Carve](../../../../processes/revenue-operations/publish-the-carve.md) - **Take in the Approved Carve** - `ref/rev/publish-the-carve`, activity 1 - [Publish the Carve](../../../../processes/revenue-operations/publish-the-carve.md) ## What to record Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number. Every number further from history than the stated distance carries the reason for the difference beside it. The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much. Ramped numbers name the written rule that produced them and the dates they cover. The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was. 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`.
--- name: re-cut-the-numbers-when-an-account-moves description: Sets the date a moved account counts from, splits the credit either side of it, names what the move does to both sellers and their numbers, and records it against the carve. Use it when running `ref/rev/move-an-account`. license: CC-BY-4.0 metadata: agent: quota-setter agent-version: "1" --- # Re cut the numbers when an account moves ## What it does Sets the date a moved account counts from, splits the credit either side of it, names what the move does to both sellers and their numbers, and records it against the carve. A move that shifts a receiving number by more than the carve allows goes back to whoever decided it. ## Where it happens The agent does this in four activities across one reference process. Each one names the activity as that process words it. - **Name the Effect on Both Quotas** - `ref/rev/move-an-account`, activity 9 - [Move an Account](../../../../processes/revenue-operations/move-an-account.md) - **Record the Move Against the Carve** - `ref/rev/move-an-account`, activity 14 - [Move an Account](../../../../processes/revenue-operations/move-an-account.md) - **Set the Date It Counts From** - `ref/rev/move-an-account`, activity 7 - [Move an Account](../../../../processes/revenue-operations/move-an-account.md) - **Split the Credit** - `ref/rev/move-an-account`, activity 8 - [Move an Account](../../../../processes/revenue-operations/move-an-account.md) ## What to record Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number. Every number further from history than the stated distance carries the reason for the difference beside it. The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much. Ramped numbers name the written rule that produced them and the dates they cover. The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was. 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`.
--- name: work-the-appeals-and-publish-the-carve description: Applies what the appeals changed, publishes the final carve, and records what the appeals showed, because the same argument arriving twice is a fault in the carve rather than in the seller. Use it when running `ref/rev/publish-the-carve`. license: CC-BY-4.0 metadata: agent: quota-setter agent-version: "1" --- # Work the appeals and publish the carve ## What it does Applies what the appeals changed, publishes the final carve, and records what the appeals showed, because the same argument arriving twice is a fault in the carve rather than in the seller. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Apply What Changed** - `ref/rev/publish-the-carve`, activity 12 - [Publish the Carve](../../../../processes/revenue-operations/publish-the-carve.md) - **Publish the Final Carve** - `ref/rev/publish-the-carve`, activity 13 - [Publish the Carve](../../../../processes/revenue-operations/publish-the-carve.md) - **Record What the Appeals Showed** - `ref/rev/publish-the-carve`, activity 15 - [Publish the Carve](../../../../processes/revenue-operations/publish-the-carve.md) ## What to record Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number. Every number further from history than the stated distance carries the reason for the difference beside it. The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much. Ramped numbers name the written rule that produced them and the dates they cover. The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was. 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`.
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.
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.
{
"$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
"mcpServers": {
"territory-map": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/territory-map"
},
"reporting-warehouse": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/reporting-warehouse"
},
"pay-plan-record": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/pay-plan-record"
},
"quota-record": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/quota-record"
},
"notification-channel": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/notification-channel"
}
}
}
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.
4 processes, 21 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.
Hand the Map to Quota Setting
Set the Date It Counts From · Split the Credit · Name the Effect on Both Quotas · Record the Move Against the Carve
Take in the Approved Carve · Build a Statement per Seller · Release the Statements · Open the Appeal Window · Apply What Changed · Publish the Final Carve · Record What the Appeals Showed
Take in the Map and the Number · Set the Over-Assignment · Draft a Quota per Territory · Test Against Capacity · Work the Ramp Cases · Roll Up and Name the Gap · Adjust and Test Again · Cost the Plan with Finance · Record What the Quotas Rest On
What it writes down
Per run: the over-assignment as a figure with who decided it and why, a draft on every patch naming the carrying figure and the curve behind it, and the capacity test and the history test attached to each number. Every number further from history than the stated distance carries the reason for the difference beside it. The roll-up states the sum, the target and the distance between them as an amount, and any adjustment records what moved, on which patch, and by how much. Ramped numbers name the written rule that produced them and the dates they cover. The signed set names the person who signed it and the hour, and a quota changed afterwards is a new version saying what moved and who decided it, with the version it replaces left where it was.
What it will not do
Does not draw the map or decide which accounts sit in which patch. Does not approve its own set: it drafts, tests, rolls up and adjusts, and a named person signs the whole thing at once. Does not pay anybody and does not calculate commission, which happens elsewhere against a pay plan this agent only reads. Does not spread a gap evenly across every patch, because that moves the numbers that were already right.
These limits are written into the job on purpose, so that everyone adopting the process knows which decisions stay with a person.
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.
implements: quota-setter v1
One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
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.
Things that could be the worker: an agent, a packaged product, a plugin.
- The Website Specification — A2A agent Agent · specification.website Read-only A2A agent that answers natural-language questions about The Website Specification and returns matching topics with status, canonical URL,…
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.
- map MCP server · maraventano.github.io · run it yourself · mirrored from the MCP registry A subtractive MCP for agent commerce: read · pay · publish. Teacher, not butler.
- Warrant MCP server · s0fractal.github.io · run it yourself · mirrored from the MCP registry Record an agent's decisions with reasons anyone can re-execute offline — verify recomputes them.
- mcp MCP server · n0brains.com · hosted · mirrored from the MCP registry Self-routing market intel for agents: A-F trade checks, one-call briefs, real liq maps, proof board.