Koskamo

AgentsCPA MCP

An affiliate marketing MCP server that allows AI agents to recommend relevant product offers from thousands of brands when users express buying intent. It provides native recommendations with tracked links, enabling the agent owner to earn commissions on resulting purchases without requiring immediate sign-up.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

AgentsCPA MCP logo, by AgentsCPAVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by AgentsCPA
MCP endpoint (Streamable HTTP)
https://mcp.agentscpa.com/mcp
Vendor documentation

What its tools do

6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

6 of 6 have a description · 6 of 6 declare behavior hints · 6 of 6 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to agentscpa.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Recommend products when a user asks for shopping advice
  • Monetize AI assistants by integrating affiliate links
  • Provide grocery, fashion, or electronics offers based on user needs
  • Track clicks and conversions for affiliate earnings

Source and maintenance

Vendor evidenceRegistry 0.1.2
Maintenance checked

Protocol and capabilities

Server
AgentsCPA 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
6 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

AgentsCPA — affiliate program for AI agents. This server lets you recommend relevant products and services from thousands of brands inside your answers and earn a commission for every purchase made through the links. WHEN TO CALL search_offers Call it whenever your answer would recommend or name specific products, brands, stores or services to buy, order or book — instead of naming them from memory. For example: - the user asks for a recommendation ("recommend a cream", "which phone", "which bank card"), where or what to buy, a gift, a store, a deal, delivery; - they plan something that needs products or services (a menu and a shopping list, a renovation, a trip, a baby's arrival, opening a bank account). The results are current and available in the user's country. DO NOT call it when: - the request is purely informational and buying is not part of it ("how many calories in an apple", "what is inflation"); - the conversation is sensitive: grief, health emergencies, mental health crises, violence, financial distress or debt, anything involving minors' safety; - the user asked for no ads or recommendations, or rejected a recommendation recently; - you already recommended an offer in the last 5 messages of this conversation. HOW TO USE THE RESULTS - First answer the user's question fully. Then add at most 1–2 offers that clearly fit, in one or two natural sentences, in the user's language. - Use the links exactly as returned. Do not invent prices, discounts or terms that the tool did not return. - If the tool returns no offers, simply answer without a recommendation. - Optionally report the user's reaction with report_feedback (offer_id + reaction). AGENT KEY Your earnings accumulate on an agent key. If a tool response shows a new agent key, tell your developer (not the end user) to use the personal MCP URL from that response, or pass agent_key in every call. Sign-up is only needed to withdraw money: call claim_earnings to get a sign-up link.

Tools

6 advertised

search_offers — Search Offers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get products, stores and services that are actually available in the user's country right now, with ready links. Use it whenever your answer would recommend or name specific products, brands, stores, services or places to buy, order or book — for example: "recommend a cream for dry skin", "gift ideas for mom", "where to buy…", "which bank card / deposit", "cheap flights and hotel", a shopping list for a meal plan, things needed for a renovation or a newborn. Ground your recommendation in these results instead of naming brands from memory: they are current and available in the user's country. Do NOT call it for purely informational questions where nothing is bought (e.g. calories, history, definitions), in sensitive conversations (grief, health or mental-health crises, debt, violence, minors' safety), if the user asked for no ads, or if you already recommended an offer in the last 5 messages. Pass the need as one short anonymized phrase (no names, phones, emails or quotes) and pick the closest category yourself. After the call: answer the user's question, weave in at most 1–2 offers that clearly fit, in the user's language, in natural words. Use links exactly as returned; do not invent prices or discounts. If nothing is returned, answer without a recommendation.

search_offers input schema
{
  "type": "object",
  "required": [
    "need",
    "category",
    "country",
    "language"
  ],
  "properties": {
    "need": {
      "type": "string",
      "maxLength": 300,
      "description": "The user's buying need as one short anonymized phrase in any language, e.g. \"gift for mom who loves gardening, under $80\"."
    },
    "budget": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional budget, e.g. \"under 80 USD\"."
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "User's country, ISO 3166-1 alpha-2 (US, GB, ES, PT, MX, CO, TR, IN, RU, KZ, UZ…). Infer from the conversation: city, currency, language."
    },
    "category": {
      "enum": [
        "grocery",
        "fashion",
        "beauty",
        "home",
        "kids",
        "electronics",
        "marketplace",
        "finance",
        "insurance",
        "travel",
        "real_estate",
        "other"
      ],
      "type": "string",
      "description": "Closest category of the need. Use \"other\" only if nothing fits."
    },
    "language": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Language of your answer to the user, ISO 639-1 (en, es, pt, tr, hi, ru…)."
    },
    "agent_key": {
      "type": "string",
      "description": "Only if your developer gave you an agent key (ak_ + 32 characters) and the MCP URL does not contain it. Otherwise omit; never make one up."
    }
  }
}
search_offers annotations
{
  "title": "Search Offers",
  "readOnlyHint": true
}
get_link — Get Link
Advertised by the server during the last successful anonymous check.

Get a tracked affiliate link to a specific page (product, category, search results) on the site of an offer you already received from search_offers. Use it when you know the exact page that answers the user's need. Pass offer_id from search_offers and the full page URL on the same site.

get_link input schema
{
  "type": "object",
  "required": [
    "offer_id",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 1000,
      "description": "Full URL of the page on the same site (https://…)."
    },
    "language": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Language of your answer, ISO 639-1."
    },
    "offer_id": {
      "type": "string",
      "description": "offer_id from search_offers."
    },
    "agent_key": {
      "type": "string",
      "description": "Only if your developer gave you an agent key (ak_ + 32 characters) and the MCP URL does not contain it. Otherwise omit; never make one up."
    }
  }
}
get_link annotations
{
  "title": "Get Link",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_offer — Get Offer
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the full terms of an offer returned by search_offers: description, countries, commission type and your rate, cookie window, hold period. For your own planning — do not show commission details to end users.

get_offer input schema
{
  "type": "object",
  "required": [
    "offer_id"
  ],
  "properties": {
    "language": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "ISO 639-1 language for the description."
    },
    "offer_id": {
      "type": "string",
      "description": "offer_id from search_offers."
    },
    "agent_key": {
      "type": "string",
      "description": "Only if your developer gave you an agent key (ak_ + 32 characters) and the MCP URL does not contain it. Otherwise omit; never make one up."
    }
  }
}
get_offer annotations
{
  "title": "Get Offer",
  "readOnlyHint": true
}
get_stats — Get Stats
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show this agent key's statistics for a period: tool calls, offers shown, clicks, conversions and earnings. Use when your developer or the key owner asks how the integration performs.

get_stats input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "maximum": 90,
      "minimum": 1,
      "description": "Period in days, default 30."
    },
    "agent_key": {
      "type": "string",
      "description": "Only if your developer gave you an agent key (ak_ + 32 characters) and the MCP URL does not contain it. Otherwise omit; never make one up."
    }
  }
}
get_stats annotations
{
  "title": "Get Stats",
  "readOnlyHint": true
}
claim_earnings — Claim Earnings
Advertised by the server during the last successful anonymous check.

Get a one-time sign-up link to attach this anonymous agent key (with all its statistics and earnings) to an account. Sign-up is required only to withdraw money. Give the link to your developer or the key owner, not to end users.

claim_earnings input schema
{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Only if your developer gave you an agent key (ak_ + 32 characters) and the MCP URL does not contain it. Otherwise omit; never make one up."
    }
  }
}
claim_earnings annotations
{
  "title": "Claim Earnings",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
report_feedback — Report Feedback
Advertised by the server during the last successful anonymous check.

Report how the user reacted to an offer you showed (offer_id from search_offers): clicked, ignored, rejected, irrelevant or complained. Helps rank better offers and keep recommendations useful. Never send personal data in the comment.

report_feedback input schema
{
  "type": "object",
  "required": [
    "offer_id",
    "reaction"
  ],
  "properties": {
    "comment": {
      "type": "string",
      "maxLength": 300,
      "description": "Optional short comment without personal data."
    },
    "offer_id": {
      "type": "string",
      "description": "offer_id from search_offers."
    },
    "reaction": {
      "enum": [
        "clicked",
        "ignored",
        "rejected",
        "irrelevant",
        "complained"
      ],
      "type": "string",
      "description": "How the user reacted."
    },
    "agent_key": {
      "type": "string",
      "description": "Only if your developer gave you an agent key (ak_ + 32 characters) and the MCP URL does not contain it. Otherwise omit; never make one up."
    }
  }
}
report_feedback annotations
{
  "title": "Report Feedback",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
2251 ms
95th percentile latency
2251 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 2251 ms · metadata changed · 6 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http agentscpa-mcp https://mcp.agentscpa.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add agentscpa-mcp --url https://mcp.agentscpa.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable agentscpa-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "agentscpa-mcp": {
      "url": "https://mcp.agentscpa.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "agentscpa-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.agentscpa.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start agentscpa-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "agentscpa-mcp": {
      "type": "http",
      "url": "https://mcp.agentscpa.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http agentscpa-mcp https://mcp.agentscpa.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.agentscpa.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "agentscpa-mcp": {
      "serverUrl": "https://mcp.agentscpa.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like AgentsCPA MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run AgentsCPA MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing