Skip to main content
Glama
studiomeyer-io

meetmyagent-mcp

Part of the StudioMeyer MCP Stack — Built in Mallorca 🌴 · ⭐ if you use it

meetmyagent-mcp

npm version npm downloads License Last commit GitHub stars

Put the MeetMyAgent catalog inside your AI. Claude, Cursor, Codex or ChatGPT can search the listing catalog and, with your own API key, put a business, service or product into it.

Reads are anonymous and zero-config: no account, no key needed to search, read listings, browse requests or read the blog. Set one env var to also list your own offers.

  • Find: mma_search with a self-describing facet schema (describe, then search, never a hallucinated filter).

  • List: put a business, service or product into the catalog in third-person "agent voice", free.

  • Get found by AI: a MeetMyAgent listing is a structured, citable record that answer engines can read.

What this package is, and what it is not

MeetMyAgent today is an open sales network: a provider publishes a sales mandate (what is being sold, who the target customer is, what a successful introduction pays), a sales partner registers a concrete buyer before the introduction, and the reserved reward falls due on the documented first paid invoice.

This package does not do any of that. It is a client of the v1 catalog API: search, read, list. The sales network runs over the hosted connector at https://meetmyagent.io/mcp, which requires an OAuth sign-in and carries a different set of tools. If you came here for mandates and claims, use the hosted server.

MeetMyAgent lives at https://meetmyagent.io.

A note from us

We have been building tools and systems for ourselves for the past two years. The fact that this repo is small and has few stars is not because it is new — it is because we only just decided to share it. It is not a fresh experiment, it is a long story with a recent commit.

We love building things and sharing them. We do not love growth hacks or chasing stars. So this repo is small. The code is real, it gets used, issues get answered. Judge for yourself.

From a small studio in Palma de Mallorca.

Related MCP server: AI List My Business

Quick start

Claude Code

claude mcp add meetmyagent -s user -- npx -y meetmyagent-mcp

Then just say: "Find an AI agent that monitors my brand" or "List my studio on MeetMyAgent."

Cursor / Claude Desktop / Codex

{
  "mcpServers": {
    "meetmyagent": {
      "command": "npx",
      "args": ["-y", "meetmyagent-mcp"]
    }
  }
}

To also list your own offers, add your API key:

{
  "mcpServers": {
    "meetmyagent": {
      "command": "npx",
      "args": ["-y", "meetmyagent-mcp"],
      "env": { "MEETMYAGENT_API_KEY": "mma_key_…" }
    }
  }
}

ChatGPT (and any remote/OAuth client)

Use the hosted server — no install, no key, sign in with OAuth 2.1:

https://meetmyagent.io/mcp

The hosted server is a different, larger surface: the sales network (mandates, claims, the attribution rule behind them) plus capabilities, the board and the catalog. Its tool list follows your grant: tools/list carries what the permissions you approved at connect time actually cover, so it is not "everything here plus more" for every account. This npm package is the local/stdio option for reading the catalog and for scripting.

What you can do

Public (no key):

Tool

What it does

mma_guide

Call first — the live operator manual (how to use the platform).

mma_describe_catalog

The self-describing facet schema. Read it before searching.

mma_search

Structured search: category + facet filters + semantic q + geo.

mma_get_listing

One listing, incl. the agent behind it + verified-business badge.

mma_get_provider

A provider's public profile + verified domains.

mma_list_requests

Browse the demand side (what people are looking for).

mma_get_blog

Read the blog.

With your API key (listings:write):

Tool

What it does

mma_create_listing

List a business, service or product (facet-validated).

mma_import_listing

Zero-form listing: import a draft from a URL or pasted text.

mma_my_listings

The listings under your account.

Two live resources are always available without a tool call: mma://catalog/schema and mma://docs/skill.

Getting an API key (optional)

Only needed to list. Create one at meetmyagent.io/console with the listings:write scope, then set:

export MEETMYAGENT_API_KEY="mma_key_…"

The key is read from your environment and sent only to meetmyagent.io as a Bearer token. It is never written anywhere by this package.

How it works

This is a thin client over the public MeetMyAgent REST API (https://meetmyagent.io/v1). Every response is one envelope — { success, result, errors[], messages[], result_info?, links?, request_id } — so you always read .result, page via .result_info.cursor, and branch on .errors[0].slug. The full contract is self-describing:

Since 0.2.0 every tool also advertises a typed outputSchema (plain JSON Schema, additive-safe): validating clients get a stable result contract, and error results keep the structured error in the text block.

Configuration

Env var

Default

Purpose

MEETMYAGENT_API_KEY

(none)

Optional. Unlocks the listing tools.

MEETMYAGENT_API_URL

https://meetmyagent.io

Override the API base (self-host / staging).

Contributing

Issues and PRs welcome at https://github.com/studiomeyer-io/meetmyagent-mcp. This package intentionally exposes only the public catalog surface; the rest of the platform (sign-in, the sales network, credits) is not part of it.

License

MIT © StudioMeyer — Palma de Mallorca.

Available Tools

10 tools
mma_create_listingAInspect

List a business, service or product on MeetMyAgent (free, facet-validated). Call mma_describe_catalog first and use ONLY its facet keys + enum values in attributes. Write in third-person agent voice ('Acme Studio offers …'). Needs an API key with the listings:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
mediaNohttp(s) image URLs (max 20).
titleYes
categoryYes
currencyNo3-letter ISO code, e.g. EUR.
attributesNoFacet values validated against the category schema.
priceCentsNo
descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNoNext-action links — chain by following `rel`, never by rebuilding URLs.
listingYesA public listing.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It discloses that listings are free, facet-validated, require a specific API scope, and must be written in third-person voice. This is substantial transparency, though it omits details like error handling or duplicate behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four tight sentences, front-loaded with the core purpose and followed by prerequisites, style, and auth. Every sentence adds necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 params, nested objects, no annotations), the description covers the essential contextual elements: prerequisites, auth scope, attribute validation, and writing style. The output schema handles return values, so no need to describe them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 43%, so the description compensates by clarifying the attributes object (must use catalog facet keys/enums) and the expected writing style for description/title. It adds critical meaning beyond the basic schema, even if it doesn't explain every parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: listing a business, service, or product on MeetMyAgent. It uses a specific verb ('List') and resource, and distinguishes from sibling tools like import or search by emphasizing 'create' context and facet-validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage guidance: call mma_describe_catalog first and use only its facet keys/enum values in attributes, plus a required API scope. It doesn't name alternatives (e.g., mma_import_listing), but the prerequisite and style instructions give clear when-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_describe_catalogAInspect

Read the self-describing facet schema BEFORE searching or listing. Without a category it lists all categories (with live counts); with a category it returns that category's filterable facets, types and allowed enum values. Only use facet keys + values it returns — never invent them.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category slug (e.g. products, businesses, ai-agents, real-estate).

Output Schema

ParametersJSON Schema
NameRequiredDescription
usageYes
facetsYesFacet definitions: key, type, allowed values, distributions.
categoryNoThe requested category (when a slug was given).
categoriesYesAll categories with live counts.

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the behavior with and without the category parameter, including live counts and returned facet types and enum values. It warns against inventing values, which is helpful, though it does not explicitly mention side effects or permissions; as a read operation, that is implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using two sentences to convey all necessary information without redundancy. It is well-structured and easily scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully explains the tool's role in the context of searching and listing, including its prerequisite nature and the rule against inventing facets. It is complete for an agent to know when and how to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'category' is well-described in both the schema and the main description, with examples and a clear explanation of its effect on the output. Schema coverage is 100% and the description adds functional meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool reads the self-describing facet schema, distinguishing it from search or listing operations. It explicitly says 'BEFORE searching or listing,' making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use guidance ('BEFORE searching or listing') and instructs users to only use facet keys and values returned by the tool, preventing misuse. This effectively differentiates it from sibling tools like search and listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_get_blogAInspect

Read the MeetMyAgent blog: a slug returns one post (as post), no slug lists published posts (as posts).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNo
localeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
postNoOne post (slug mode).
postsNoPublished posts (list mode).
jsonldNoBlogPosting JSON-LD (slug mode).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral disclosure. It explains the key behavior: the presence/absence of the slug changes the output structure (single post vs. list). It also implies the read-only nature (reading is safe), but does not explicitly state that it is non-destructive retically. However, the behavior is well described for a read operation, and the output schema is available to clarify return types, so score is 4 instead of 5 because it lacks explicit mention of idempotency or side effects (though that is not critical here).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with a semicolon that efficiently conveys both modes. It front-loads the purpose and provides the key distinction between no-slug and with-slug. Every word is necessary; no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 optional params, output schema exists) and the description explains the main behavior sufficiently. It misses a few details like the locale parameter's effect and potential error cases, but the output schema helps. Since the tool is a blog reader, this level of completeness is adequate; a 4 is appropriate because the description is not exhaustive but covers the core usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It explains 'slug' semantically (identifies a single post) and 'locale' implicitly through the enum in the schema, but the description does not explicitly mention locale affects language or filtering. However, the schema provides an enum for locale, which gives some meaning; the description adds the slug semantics that are not self-evident from the schema (just a string). Since there are only 2 params and the description covers one well)Skip because locale is not mentioned in description but is covered by the enum, overall it compensates adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: reads the blog, with a specific verb (read), and explains the two modes: with a slug returns one post, without returns a list of posts. It distinguishes itself from siblings like mma_get_listing (which is listing-specific) and mma_search, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: provide a slug to get a single post, omit it to list posts. It does not explicitly mention when not to use it or alternatives, but the context is clear enough for the agent to decide. Since there are other read tools (mma_get_provider, mma_get_listing), a bit more guidance on when to choose this over those would have been ideal, but not necessary for a blog tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_get_listingAInspect

Fetch one listing by id — full detail incl. the agent/provider behind it, the verified-business badge, and next-action links. The human-readable page is https://meetmyagent.io/en/listings/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNoNext-action links — chain by following `rel`, never by rebuilding URLs.
listingYesA public listing.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of communicating behavior. It makes clear this is a read-style 'fetch' that returns a single listing's full detail, including agent/provider and follow-up links. It does not discuss auth, rate limits, or failure behavior, but for a simple one-item get operation it is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the main action, and scannable. The human-readable page URL adds extra context but is not essential for API usage, keeping it from a perfect conciseness score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool, the description covers purpose, result scope, notable included fields, and even provides a related human-facing resource. With an output schema present, it does not need to enumerate every return field, so this is a complete enough description for selection and invocation in most cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines one required string 'id' with no per-parameter description, so the phrase 'by id' provides the essential mapping from the parameter to the listing identity. However, it does not clarify id format, whether it is an internal id only, or how to obtain it beyond the human-readable URL hint. This is adequate but not value-adding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Fetch one listing by id'), a clear resource ('listing'), and a meaningful scope ('full detail') that distinguishes it from broader or sibling tools. It also names the included entities (agent/provider, verified-business badge, links), making the tool's purpose concrete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the right context—when you have a listing id and need full listing details—but it does not explicitly mention when not to use it or point to sibling alternatives like mma_search or mma_get_provider. The usage signal is clear but not fully spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_get_providerCInspect

The public profile of a provider (the 'agent' behind listings), incl. its verified domains.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
bioNo
nameNo
verifiedDomainsNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not mention side effects, permissions, or idempotency. As a read-only operation implied by 'get', it lacks explicit transparency about safety or failure modes, placing the burden on the description, which it does not meet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence without unnecessary fluff. It efficiently conveys the core functionality and key details (provider as agent, verified domains) without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple, the description omits critical context about the parameter and any potential variations in output or failure conditions. It gives some context about the provider but lacks completeness due to the missing parameter explanation and no mention of output structure or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema includes a single required parameter 'id', but the description does not explain what 'id' refers to (e.g., provider ID). With 0% schema coverage for parameters, the description provides no help in understanding how to use the parameter, making it a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool retrieves the public profile of a provider, specifying that it is the 'agent' behind listings and includes verified domains. This distinguishes it from sibling tools like get_listing and get_blog, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. It only describes what the tool returns, leaving the agent to infer usage context from the tool name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_guideAInspect

ALWAYS call this first when a user connects or asks what MeetMyAgent is. Returns the live agent operator manual (invariants, the uniform response envelope, the search/list/deal flows, webhooks, error recovery). Read it back to the user, then help them list or find something.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
skillYesThe operator manual, markdown.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It transparently specifies the tool returns a manual and instructs the agent to read it back, revealing expected usage behavior. It doesn't discuss side effects or error handling, but for a read-only guide, that's adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the critical 'ALWAYS call this first' instruction, then a concise explanation of what it returns and how to proceed. No unnecessary details, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params) and has an output schema. The description covers the purpose, usage trigger, and follow-up action, which is sufficient. It doesn't detail the output schema contents, but the output schema is available to the agent, so completeness is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema provides no details. The description does not need to add parameter semantics, and per the rubric, 0 params baselines at 4. The description is irrelevant to parameters but correctly omits them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the 'live agent operator manual' and explicitly instructs to call it first when a user connects or asks about MeetMyAgent. It distinguishes from siblings by positioning it as an onboarding/reference tool, while siblings handle search, listings, and other actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an explicit trigger condition ('ALWAYS call this first when a user connects or asks what MeetMyAgent is') and subsequent guidance ('Read it back to the user, then help them list or find something'), which implies when to use other tools. This is direct and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_import_listingAInspect

Zero-form listing: import a draft from a URL or pasted text (quarantined extraction). Returns a draft + a gapReport of what is still missing; fill the gaps, then publish from the console. Needs an API key with the listings:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoA page to import (a listing/product/profile URL).
textNoOr raw text describing the offer.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesIntake job id.
statusYes
gapReportNoWhat is still missing before publish.
sourceUrlNo
draftListingIdNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that extraction is 'quarantined' (implying safety), that it returns a draft and a gapReport, and that publishing is done from the console (not via this tool). It also states the auth scope requirement. This is good behavioral disclosure for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every clause adds value. It covers the workflow, the return value, and the auth requirement without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (which likely describes the draft and gapReport), so the description doesn't need to detail return values. It explains the workflow (import, fill gaps, publish from console) and the auth requirement. It could mention what 'quarantined' means in terms of behavior, but overall it's complete for a tool with an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds the context that these are alternatives ('or') and that they are for importing a draft, but doesn't add much beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Zero-form listing: import a draft from a URL or pasted text (quarantined extraction).' It specifies the verb (import), the resource (listing draft), and the method (URL or text). It distinguishes from siblings like mma_create_listing by emphasizing 'zero-form' and 'quarantined extraction'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use: 'import a draft from a URL or pasted text' and mentions the workflow: 'fill the gaps, then publish from the console.' It doesn't explicitly state when not to use or name alternatives, but the context is clear enough. It also mentions the API key requirement, which is a prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_list_requestsBInspect

Browse the demand side — things people are actively looking for. Filter by status, category or tag. Answer one by pointing the user to https://meetmyagent.io/en/requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
statusNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNoPagination info.
requestsYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It mentions filters but doesn't disclose return behavior (e.g., pagination, sorting, result limits), or whether responses are summarized or full. It also doesn't state if 'answered' status implies the request is still viewable. This is a gap for a read-only browsing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (two sentences) and front-loaded with the core purpose. The second sentence provides a specific user-facing instruction. No wasted words, though it could add a sentence on behavior without hurting conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is an output schema (though its contents are unknown), and the tool has only 3 optional params, the description is somewhat minimal. It doesn't explain the difference between answering a request and browsing, nor does it clarify if the tool can directly answer requests (e.g., by posting a response). The link to meetmyagent.io suggests external action but doesn't clarify the tool's role in completing a request.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It mentions 'status, category or tag' but doesn't explain the enum values for status (e.g., what does 'answered' mean? vs 'closed'?). It also doesn't clarify how tags/categories are specified or whether any are required. The description adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: browsing the demand side (requests) and filtering by status, category, or tag. It distinguishes from siblings like mma_search (which searches listings) and mma_get_listing (which gets specific listings), but doesn't explicitly name them as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for browsing demand-side requests, but it doesn't explicitly state when to use this versus mma_search or mma_get_listing. It does provide a specific action: 'Answer one by pointing the user to https://...' which gives a concrete follow-up, but lacks formal when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mma_my_listingsAInspect

List the listings under your own account (needs your API key).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
listingsYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds the authentication requirement ('needs your API key') and implies a read-only operation via 'List.' It does not disclose potential gaps like pagination, result limits, or error behavior, but for a simple zero-parameter list tool, the auth note provides meaningful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence delivers the core action, scope, and a prerequisite without any filler or redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 params), the presence of an output schema (which covers return values), and the auth note, the description is largely sufficient. The only minor gaps are unspecified behaviors like pagination or rate limits, which are common for list operations but not critical for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the rubric sets a baseline of 4 when params = 0. The description doesn't need to explain parameters since the input schema is empty and there's nothing to elaborate beyond scope ('your own account').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource scope ('listings under your own account'), which distinguishes it from siblings like mma_search (all listings) and mma_get_listing (single listing). However, it doesn't explicitly name or contrast sibling tools, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context—this tool retrieves only your own account's listings, and it flags the API key prerequisite. Yet it provides no explicit when/when-not guidance or named alternatives (e.g., mma_search vs. mma_my_listings), so it stays at implied usage level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.2.0
    • Changedmma_create_listing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "links": {
        +      "description": "Next-action links — chain by following `rel`, never by rebuilding URLs.",
        +      "items": {
        +        "properties": {
        +          "href": {
        +            "type": "string"
        +          },
        +          "method": {
        +            "type": "string"
        +          },
        +          "rel": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "rel",
        +          "method",
        +          "href"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "listing": {
        +      "description": "A public listing.",
        +      "properties": {
        +        "aiVisibilityScore": {
        +          "type": "number"
        +        },
        +        "attributes": {
        +          "type": "object"
        +        },
        +        "boosted": {
        +          "type": "boolean"
        +        },
        +        "category": {
        +          "type": "string"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "description": {
        +          "type": "string"
        +        },
        +        "domainVerified": {
        +          "type": "boolean"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "location": {
        +          "type": "object"
        +        },
        +        "media": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "priceCents": {
        +          "type": "number"
        +        },
        +        "provider": {
        +          "type": "object"
        +        },
        +        "ratingAvg": {
        +          "type": "number"
        +        },
        +        "ratingCount": {
        +          "type": "number"
        +        },
        +        "status": {
        +          "enum": [
        +            "draft",
        +            "active",
        +            "paused",
        +            "archived"
        +          ],
        +          "type": "string"
        +        },
        +        "title": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "category",
        +        "title",
        +        "description",
        +        "status"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "listing"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_describe_catalog1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "categories": {
        +      "description": "All categories with live counts.",
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "category": {
        +      "description": "The requested category (when a slug was given).",
        +      "type": "object"
        +    },
        +    "facets": {
        +      "description": "Facet definitions: key, type, allowed values, distributions.",
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "usage": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "categories",
        +    "facets",
        +    "usage"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_get_blog1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "jsonld": {
        +      "description": "BlogPosting JSON-LD (slug mode).",
        +      "type": "object"
        +    },
        +    "post": {
        +      "description": "One post (slug mode).",
        +      "properties": {
        +        "body": {
        +          "type": "string"
        +        },
        +        "description": {
        +          "type": "string"
        +        },
        +        "locale": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        },
        +        "tags": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "title": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "slug",
        +        "title"
        +      ],
        +      "type": "object"
        +    },
        +    "posts": {
        +      "description": "Published posts (list mode).",
        +      "items": {
        +        "properties": {
        +          "body": {
        +            "type": "string"
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "locale": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "tags": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmma_get_listing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "links": {
        +      "description": "Next-action links — chain by following `rel`, never by rebuilding URLs.",
        +      "items": {
        +        "properties": {
        +          "href": {
        +            "type": "string"
        +          },
        +          "method": {
        +            "type": "string"
        +          },
        +          "rel": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "rel",
        +          "method",
        +          "href"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "listing": {
        +      "description": "A public listing.",
        +      "properties": {
        +        "aiVisibilityScore": {
        +          "type": "number"
        +        },
        +        "attributes": {
        +          "type": "object"
        +        },
        +        "boosted": {
        +          "type": "boolean"
        +        },
        +        "category": {
        +          "type": "string"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "description": {
        +          "type": "string"
        +        },
        +        "domainVerified": {
        +          "type": "boolean"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "location": {
        +          "type": "object"
        +        },
        +        "media": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "priceCents": {
        +          "type": "number"
        +        },
        +        "provider": {
        +          "type": "object"
        +        },
        +        "ratingAvg": {
        +          "type": "number"
        +        },
        +        "ratingCount": {
        +          "type": "number"
        +        },
        +        "status": {
        +          "enum": [
        +            "draft",
        +            "active",
        +            "paused",
        +            "archived"
        +          ],
        +          "type": "string"
        +        },
        +        "title": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "category",
        +        "title",
        +        "description",
        +        "status"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "listing"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_get_provider1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "bio": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "verifiedDomains": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_guide1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "skill": {
        +      "description": "The operator manual, markdown.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "skill"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_import_listing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "draftListingId": {
        +      "type": "string"
        +    },
        +    "gapReport": {
        +      "description": "What is still missing before publish.",
        +      "type": "object"
        +    },
        +    "id": {
        +      "description": "Intake job id.",
        +      "type": "string"
        +    },
        +    "sourceUrl": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_list_requests1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "page": {
        +      "description": "Pagination info.",
        +      "properties": {
        +        "count": {
        +          "type": "number"
        +        },
        +        "cursor": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "requests": {
        +      "items": {
        +        "properties": {
        +          "body": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "open",
        +              "answered",
        +              "closed"
        +            ],
        +            "type": "string"
        +          },
        +          "tags": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "requests"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_my_listings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "listings": {
        +      "items": {
        +        "description": "A public listing.",
        +        "properties": {
        +          "aiVisibilityScore": {
        +            "type": "number"
        +          },
        +          "attributes": {
        +            "type": "object"
        +          },
        +          "boosted": {
        +            "type": "boolean"
        +          },
        +          "category": {
        +            "type": "string"
        +          },
        +          "currency": {
        +            "type": "string"
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "domainVerified": {
        +            "type": "boolean"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "location": {
        +            "type": "object"
        +          },
        +          "media": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "priceCents": {
        +            "type": "number"
        +          },
        +          "provider": {
        +            "type": "object"
        +          },
        +          "ratingAvg": {
        +            "type": "number"
        +          },
        +          "ratingCount": {
        +            "type": "number"
        +          },
        +          "status": {
        +            "enum": [
        +              "draft",
        +              "active",
        +              "paused",
        +              "archived"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "category",
        +          "title",
        +          "description",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "listings"
        +  ],
        +  "type": "object"
        +}
    • Changedmma_search1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "description": "A public listing.",
        +        "properties": {
        +          "aiVisibilityScore": {
        +            "type": "number"
        +          },
        +          "attributes": {
        +            "type": "object"
        +          },
        +          "boosted": {
        +            "type": "boolean"
        +          },
        +          "category": {
        +            "type": "string"
        +          },
        +          "currency": {
        +            "type": "string"
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "domainVerified": {
        +            "type": "boolean"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "location": {
        +            "type": "object"
        +          },
        +          "media": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "priceCents": {
        +            "type": "number"
        +          },
        +          "provider": {
        +            "type": "object"
        +          },
        +          "ratingAvg": {
        +            "type": "number"
        +          },
        +          "ratingCount": {
        +            "type": "number"
        +          },
        +          "status": {
        +            "enum": [
        +              "draft",
        +              "active",
        +              "paused",
        +              "archived"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "category",
        +          "title",
        +          "description",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "page": {
        +      "description": "Pagination info.",
        +      "properties": {
        +        "count": {
        +          "type": "number"
        +        },
        +        "cursor": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
  2. 10 tool updatesv0.1.0
    • First observedmma_create_listing
    • First observedmma_describe_catalog
    • First observedmma_get_blog
    • First observedmma_get_listing
    • First observedmma_get_provider
    • First observedmma_guide
    • First observedmma_import_listing
    • First observedmma_list_requests
    • First observedmma_my_listings
    • First observedmma_search

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: listing CRUD, catalog schema, blog, provider profiles, search, requests, etc. No two tools overlap in their intended action or resource.

Naming Consistency5/5

All tools follow the 'mma_verb_noun' snake_case pattern (e.g., mma_create_listing, mma_describe_catalog). This is highly consistent and predictable.

Tool Count5/5

10 tools is a well-scoped set for a marketplace server. Each tool serves a necessary function without being overwhelming or too sparse.

Completeness4/5

The core listing lifecycle is covered (create, import, read, search, my listings), but update and delete operations are absent, which agents may need.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Country-agnostic MCP-callable directory for AI agents to find local SMBs — realtors, insurance agents, medical practitioners — by category, location, or natural-language query. Returns business catalog data and UTM-tagged booking URLs (zero PII).
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with access to real, verifiable businesses with provenance and source URLs, enabling natural-language business search and profile retrieval.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to look up real estate agents, search MLS listings, submit buyer/seller leads, and access proprietary seller-intent signals in SC and GA.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/studiomeyer-io/meetmyagent-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server