Outmano

AI competitive intelligence: competitor pricing, features, reviews and news for B2B SaaS.

Should I use this

Quality & Safety

B
Description quality
93%
Schema completeness
91%
Naming quality
68%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (9)

  • HIGHTool poisoning patterns detected
  • LOWTool 'outmano_list_competitor_pricing_changes' name length outside 3-30 rangein outmano_list_competitor_pricing_changes
  • LOWTool 'outmano_list_competitor_blog_posts' name length outside 3-30 rangein outmano_list_competitor_blog_posts
  • LOWTool 'outmano_list_competitor_roadmap_changes' name length outside 3-30 rangein outmano_list_competitor_roadmap_changes
  • LOWTool 'outmano_list_competitor_reviews' name length outside 3-30 rangein outmano_list_competitor_reviews
  • LOWTool 'outmano_list_competitor_news_mentions' name length outside 3-30 rangein outmano_list_competitor_news_mentions
  • LOWTool 'outmano_list_competitor_mentions' name length outside 3-30 rangein outmano_list_competitor_mentions
  • LOWTool 'outmano_get_competitor_battlecard' name length outside 3-30 rangein outmano_get_competitor_battlecard
  • INFOTool description contains placeholder or incomplete textin outmano_list_competitor_mentions

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,612Tokens (tool definitions)
~5.9 KBTypical response size
Significant attention impact (5.17% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "outmano": {
      "url": "https://outmano.com/mcp"
    }
  }
}

Remote endpoints

https://outmano.com/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢outmano_list_competitor_pricing_changes(significance, limit, offset)

List recently detected pricing changes for the competitors you track, newest first, paginated, with an AI summary and before/after details.

Input Schema

{
  "type": "object",
  "properties": {
    "significance": {
      "type": "string",
      "minLength": 1,
      "description": "Filter: one of minor, moderate, major"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 25, max 100)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "changes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "id": {
            "type": "integer",
            "description": "Activity event id"
          },
          "change_type": {
            "type": "string",
            "description": "e.g. price_increase, price_decrease, tier_added, tier_removed"
          },
          "significance": {
            "type": "string",
            "description": "minor, moderate or major"
          },
          "detected_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601"
          },
          "summary": {
            "type": [
              "string",
              "null"
            ],
            "description": "AI summary of the change"
          },
          "details": {
            "type": "object",
            "description": "Before/after values; keys vary by change_type",
            "additionalProperties": true
          },
          "evidence": {
            "type": [
              "object",
              "null"
            ],
            "description": "Page-level proof; null when none was captured",
            "properties": {
              "visibility": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "html_changed": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "screenshot_changed": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "excerpts": {
                "description": "Before/after page excerpts"
              }
            },
            "additionalProperties": true
          }
        },
        "required": [
          "competitor",
          "domain",
          "id",
          "change_type",
          "significance",
          "details"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "changes"
  ],
  "additionalProperties": true
}
🟢outmano_get_competitor_seo(include_keywords, include_moves)

Get the latest SEO snapshot for your product and each competitor you track: domain rating, organic keyword count, estimated monthly organic traffic, backlinks, referring domains, and top-3/top-10 keyword counts. Optionally include each one's top organic keywords and its latest ranking moves scored against you (keywords that matter: your brand, keywords you both rank for, real gaps).

Input Schema

{
  "type": "object",
  "properties": {
    "include_keywords": {
      "type": "boolean",
      "not": {
        "type": "null"
      },
      "description": "Also return each competitor's top 10 organic keywords by traffic (default false)"
    },
    "include_moves": {
      "type": "boolean",
      "not": {
        "type": "null"
      },
      "description": "Also return each rival's latest keyword ranking moves scored against your product: headline, significance, suggested action, per-keyword positions and your own position (default false)"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "description": "Tracked products, your own included"
    },
    "competitors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "is_own": {
            "type": "boolean",
            "description": "True for your own product"
          },
          "seo": {
            "type": [
              "object",
              "null"
            ],
            "description": "Latest reading; null until the first SEO fetch",
            "properties": {
              "fetched_at": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ISO 8601"
              },
              "domain_rating": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "organic_keywords": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "estimated_monthly_organic_traffic": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "backlinks": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "referring_domains": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "keywords_in_top_3": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "keywords_in_top_10": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "additionalProperties": true
          },
          "top_keywords": {
            "type": [
              "array",
              "null"
            ],
            "description": "Only with include_keywords; null until a keyword snapshot exists",
            "items": {
              "type": "object",
              "properties": {
                "keyword": {
                  "type": "string"
                },
                "position": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "etv": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Estimated monthly traffic"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": true
            }
          },
          "recent_moves": {
            "type": [
              "object",
              "null"
            ],
            "description": "Only with include_moves, rivals only; null until two snapshots exist",
            "properties": {
              "observed_at": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ISO 8601"
              },
              "relevant": {
                "type": "boolean",
                "description": "True when the moves matter to you"
              },
              "significance": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "headline": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "suggested_action": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "moves": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "keyword, kind, bucket, position, previous_position, your_position, vs_you, search_volume, url",
                  "additionalProperties": true
                }
              },
              "filtered": {
                "description": "Counts of moves the scorer set aside, by reason"
              }
            },
            "additionalProperties": true
          }
        },
        "required": [
          "competitor",
          "domain",
          "is_own",
          "seo"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "count",
    "competitors"
  ],
  "additionalProperties": true
}
🟢outmano_get_feature_matrix(category, differences_only)

Get the feature matrix for your competitive set: every canonical feature in your workspace's catalog, grouped by category, with which competitors market it and whether you do. Coverage comes from each product's public site, so a feature you're missing means you don't MARKET it — you may still have it unannounced. Use differences_only to hide rows where everyone (or no one) has it.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "minLength": 1,
      "description": "Filter to one category: core_workflow, collaboration, integrations, automation, analytics_reporting, ai_capabilities, security_compliance, administration, developer_api, mobile_platform, other"
    },
    "differences_only": {
      "type": "boolean",
      "not": {
        "type": "null"
      },
      "description": "Only return features where coverage differs across the set (default false)"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "note": {
      "type": "string"
    },
    "you": {
      "type": [
        "string",
        "null"
      ],
      "description": "Your own product's name"
    },
    "competitors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          }
        },
        "required": [
          "competitor",
          "domain"
        ],
        "additionalProperties": true
      }
    },
    "aligned_rival_count": {
      "type": "integer",
      "description": "Rivals whose features are mapped onto the catalog"
    },
    "feature_count": {
      "type": "integer",
      "description": "Features in the catalog before filtering"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "Human label for the category"
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "Canonical feature id"
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "you_market_it": {
                  "type": "boolean",
                  "description": "Absent when you have no own product tracked"
                },
                "marketed_by": {
                  "type": "array",
                  "description": "Rival names that market this feature",
                  "items": {
                    "type": "string"
                  }
                },
                "gap": {
                  "type": "boolean",
                  "description": "True when rivals market it and you do not"
                }
              },
              "required": [
                "id",
                "name",
                "marketed_by",
                "gap"
              ],
              "additionalProperties": true
            }
          }
        },
        "required": [
          "category",
          "label",
          "features"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "note",
    "competitors",
    "aligned_rival_count",
    "feature_count",
    "categories"
  ],
  "additionalProperties": true
}
🟢outmano_get_feature_gaps(category)

List the features your tracked competitors market on their sites that YOUR site doesn't mention, ranked by how many rivals have each one. For every gap you get each rival's own label and description for the capability. Two uses: (1) find missing features worth building — majority_of_rivals: true flags table stakes; (2) find features you already have but under-market — a gap you know you ship means your site isn't selling it, and the rival descriptions show how others position it.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "minLength": 1,
      "description": "Filter to one category: core_workflow, collaboration, integrations, automation, analytics_reporting, ai_capabilities, security_compliance, administration, developer_api, mobile_platform, other"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "note": {
      "type": "string"
    },
    "you": {
      "type": "string",
      "description": "Your own product's name"
    },
    "aligned_rival_count": {
      "type": "integer",
      "description": "Rivals whose features are mapped onto the catalog"
    },
    "gap_count": {
      "type": "integer"
    },
    "gaps": {
      "type": "array",
      "description": "Sorted by rivals_with_count, then name",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "description": "Canonical feature id"
          },
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "rivals_with_count": {
            "type": "integer",
            "description": "How many aligned rivals market it"
          },
          "majority_of_rivals": {
            "type": "boolean",
            "description": "True when at least half of the aligned rivals market it"
          },
          "how_rivals_market_it": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "competitor": {
                  "type": "string"
                },
                "labels": {
                  "type": "array",
                  "description": "The rival's own names for the capability",
                  "items": {
                    "type": "string"
                  }
                },
                "descriptions": {
                  "type": "array",
                  "description": "The rival's own descriptions",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "competitor",
                "labels",
                "descriptions"
              ],
              "additionalProperties": true
            }
          }
        },
        "required": [
          "id",
          "name",
          "category",
          "rivals_with_count",
          "majority_of_rivals",
          "how_rivals_market_it"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "note",
    "you",
    "aligned_rival_count",
    "gap_count",
    "gaps"
  ],
  "additionalProperties": true
}
🟢outmano_list_competitor_blog_posts(competitor, limit, offset)

List recent blog posts published by the competitors you track, newest first, paginated. Filter to one competitor by domain.

Input Schema

{
  "type": "object",
  "properties": {
    "competitor": {
      "type": "string",
      "minLength": 1,
      "description": "Only posts from this tracked competitor's domain, e.g. 'rival.com'"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 25, max 100)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "posts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 date"
          }
        },
        "required": [
          "competitor",
          "domain"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "posts"
  ],
  "additionalProperties": true
}
🟢outmano_list_competitor_roadmap_changes(significance, change_type, limit, offset)

List recently detected roadmap changes for the competitors you track (features added, shipped, renamed, or removed), newest first, paginated, with an AI summary and details.

Input Schema

{
  "type": "object",
  "properties": {
    "significance": {
      "type": "string",
      "minLength": 1,
      "description": "Filter: one of minor, moderate, major"
    },
    "change_type": {
      "type": "string",
      "minLength": 1,
      "description": "Filter: one of item_added, item_status_changed, item_shipped, item_removed, item_renamed"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 25, max 100)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "changes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "change_type": {
            "type": "string",
            "description": "e.g. item_added, item_shipped, item_status_changed, item_removed"
          },
          "significance": {
            "type": "string",
            "description": "minor, moderate or major"
          },
          "detected_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601"
          },
          "summary": {
            "type": [
              "string",
              "null"
            ],
            "description": "AI summary of the change"
          },
          "details": {
            "type": "object",
            "description": "Item and status fields; keys vary by change_type",
            "additionalProperties": true
          }
        },
        "required": [
          "competitor",
          "domain",
          "change_type",
          "significance",
          "details"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "changes"
  ],
  "additionalProperties": true
}
🟢outmano_list_competitor_reviews(competitor, source, negative_only, limit, offset)

List recent public reviews of the competitors you track, newest first, paginated, plus a per-competitor rating summary (average rating, review count). Filter by competitor domain, source, or negative-only.

Input Schema

{
  "type": "object",
  "properties": {
    "competitor": {
      "type": "string",
      "minLength": 1,
      "description": "Only reviews of this tracked competitor's domain, e.g. 'rival.com'"
    },
    "source": {
      "type": "string",
      "minLength": 1,
      "description": "Filter: one of trustpilot, g2 (G2 needs a trial or paid plan)"
    },
    "negative_only": {
      "type": "boolean",
      "not": {
        "type": "null"
      },
      "description": "Only reviews rated 2 stars or below"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 25, max 100)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "summary": {
      "type": "array",
      "description": "Latest rating per rival and source",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "source": {
            "type": "string",
            "description": "trustpilot or g2"
          },
          "average_rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "review_count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating_distribution": {
            "type": "object",
            "description": "Review counts keyed by star rating",
            "additionalProperties": true
          },
          "fetched_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601"
          }
        },
        "required": [
          "competitor",
          "domain",
          "source"
        ],
        "additionalProperties": true
      }
    },
    "reviews": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "source": {
            "type": "string",
            "description": "trustpilot or g2"
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "negative": {
            "type": "boolean",
            "description": "Rated at or below the negative threshold"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ],
            "description": "Truncated to 300 characters"
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "sentiment": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewed_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 date"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "competitor",
          "domain",
          "source",
          "negative"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "summary",
    "reviews"
  ],
  "additionalProperties": true
}
🟢outmano_list_competitor_news_mentions(competitor, category, limit, offset)

List recent press mentions of the competitors you track (funding, acquisitions, layoffs, general coverage), newest first, paginated. Filter to one competitor by domain or to one category.

Input Schema

{
  "type": "object",
  "properties": {
    "competitor": {
      "type": "string",
      "minLength": 1,
      "description": "Only mentions of this tracked competitor's domain, e.g. 'rival.com'"
    },
    "category": {
      "type": "string",
      "minLength": 1,
      "description": "Only this category: funding, acquisition, layoffs, or general"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 25, max 100)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "mentions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "description": "Publication"
          },
          "category": {
            "type": [
              "string",
              "null"
            ],
            "description": "funding, acquisition, layoffs or general"
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 date"
          }
        },
        "required": [
          "competitor",
          "domain"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "mentions"
  ],
  "additionalProperties": true
}
🟢outmano_list_competitor_mentions(competitor, channel, sentiment, intent, limit, ...)

List recent public mentions of the competitors you track and of your own product (Hacker News and Reddit), newest first, paginated. Each mention carries sentiment and intent (praise, complaint, question, comparison, alternative_seeking, news). Filter by competitor domain, channel, sentiment or intent.

Input Schema

{
  "type": "object",
  "properties": {
    "competitor": {
      "type": "string",
      "minLength": 1,
      "description": "Only mentions of this tracked competitor's domain, e.g. 'rival.com' (your own product's domain works too)"
    },
    "channel": {
      "type": "string",
      "minLength": 1,
      "description": "Only this channel: hacker_news, reddit, or web"
    },
    "sentiment": {
      "type": "string",
      "minLength": 1,
      "description": "Only this sentiment: positive, negative, or neutral"
    },
    "intent": {
      "type": "string",
      "minLength": 1,
      "description": "Only this intent: praise, complaint, question, comparison, alternative_seeking, news, or other"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 25, max 100)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "mentions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "channel": {
            "type": "string",
            "description": "hacker_news, reddit or web"
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "description": "Source domain"
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "excerpt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Up to 300 characters"
          },
          "sentiment": {
            "type": [
              "string",
              "null"
            ],
            "description": "positive, negative or neutral"
          },
          "intent": {
            "type": [
              "string",
              "null"
            ],
            "description": "praise, complaint, question, comparison, alternative_seeking, news or other"
          },
          "mentions_competitors": {
            "type": "array",
            "description": "Other tracked names in the same mention",
            "items": {
              "type": "string"
            }
          },
          "score": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Hacker News points; absent elsewhere"
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Hacker News comment count; absent elsewhere"
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601"
          }
        },
        "required": [
          "competitor",
          "domain"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "mentions"
  ],
  "additionalProperties": true
}
🟢outmano_list_activity_events(angle, significance, limit, offset)

List the latest detected activity across everything you track — pricing, SEO, content, roadmap, and review events — newest first, paginated. This is the same feed as the in-app dashboard.

Input Schema

{
  "type": "object",
  "properties": {
    "angle": {
      "type": "string",
      "minLength": 1,
      "description": "Filter: one of seo, pricing, content, features, roadmap, reviews, hiring, news, mentions, ads"
    },
    "significance": {
      "type": "string",
      "minLength": 1,
      "description": "Filter: one of normal, important, critical"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 25, max 100)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "competitor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor name"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Competitor domain"
          },
          "event_type": {
            "type": "string",
            "description": "e.g. pricing_price_increase, seo_ranking_shift, blog_new_post"
          },
          "angle": {
            "type": [
              "string",
              "null"
            ],
            "description": "pricing, seo, content, roadmap, reviews, ..."
          },
          "significance": {
            "type": "string",
            "description": "normal, important or critical"
          },
          "title": {
            "type": "string"
          },
          "occurred_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601"
          },
          "details": {
            "type": [
              "object",
              "null"
            ],
            "description": "Event payload; keys vary by event_type",
            "additionalProperties": true
          }
        },
        "required": [
          "competitor",
          "domain",
          "event_type",
          "significance",
          "title"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "events"
  ],
  "additionalProperties": true
}
🟢outmano_list_action_plans(since, limit, offset)

List your weekly AI action plans — suggested action items generated from your competitors' latest moves, each with angle, urgency, confidence, the evidence behind it, and a ~30-minute first step. Each item carries status (active/completed); items you ignored are omitted. Newest first, paginated; use limit 1 for just the current plan.

Input Schema

{
  "type": "object",
  "properties": {
    "since": {
      "type": "string",
      "minLength": 1,
      "description": "Only plans generated on/after this date (ISO 8601, e.g. 2026-06-01)"
    },
    "limit": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Max results per page (default 5, max 50)"
    },
    "offset": {
      "type": "integer",
      "not": {
        "type": "null"
      },
      "description": "Skip this many results (default 0); use next_offset from the previous page"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Total matching items"
    },
    "count": {
      "type": "integer",
      "description": "Items on this page"
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when another page follows"
    },
    "next_offset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent on the last page"
    },
    "plans": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "generated_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601"
          },
          "summary": {
            "type": [
              "string",
              "null"
            ],
            "description": "The week in one paragraph"
          },
          "action_items": {
            "type": "array",
            "description": "Sorted by urgency; items you ignored are omitted",
            "items": {
              "type": "object",
              "properties": {
                "angle": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "why_it_matters": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "evidence": {
                  "type": "array",
                  "description": "The competitor moves behind the item",
                  "items": {
                    "type": "string"
                  }
                },
                "urgency": {
                  "type": "string",
                  "description": "high, medium or low"
                },
                "confidence": {
                  "type": "string",
                  "description": "high, medium or low"
                },
                "next_step_30_min": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "A first step that fits in about 30 minutes"
                },
                "is_new": {
                  "type": [
                    "boolean",
                    "null"
                  ],
                  "description": "First appearance of this item"
                },
                "status": {
                  "type": "string",
                  "description": "active or completed"
                }
              },
              "required": [
                "angle",
                "title",
                "status"
              ],
              "additionalProperties": true
            }
          },
          "no_action_angles": {
            "type": [
              "array",
              "null"
            ],
            "description": "Angles with nothing to do this week",
            "items": {
              "type": "object",
              "properties": {
                "angle": {
                  "type": "string"
                },
                "reason": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": true
            }
          }
        },
        "required": [
          "generated_at",
          "summary",
          "action_items"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "plans"
  ],
  "additionalProperties": true
}
🟢outmano_get_competitor_battlecard(domain)

Get the AI-generated sales battlecard for one tracked competitor — overview, quick stats, strengths, weaknesses, how you win, objection handling (they say X / you say Y), pricing talk track, and landmine questions to plant. Generate or refresh cards from the competitor's Battlecard tab in the app.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Competitor domain, e.g. acme.com"
    }
  },
  "required": [
    "domain"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "competitor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Competitor name"
    },
    "domain": {
      "type": [
        "string",
        "null"
      ],
      "description": "Competitor domain"
    },
    "generated_at": {
      "type": "string",
      "description": "ISO 8601"
    },
    "built_from": {
      "description": "Angle name to timestamp of the data the card was built from"
    },
    "stale_angles": {
      "type": "array",
      "description": "Angles with newer data than the card",
      "items": {
        "type": "string"
      }
    },
    "battlecard": {
      "type": "object",
      "properties": {
        "overview": {
          "type": [
            "string",
            "null"
          ]
        },
        "quick_stats": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {}
            },
            "additionalProperties": true
          }
        },
        "strengths": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "point": {
                "type": "string"
              },
              "evidence": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": true
          }
        },
        "weaknesses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "point": {
                "type": "string"
              },
              "evidence": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": true
          }
        },
        "how_we_win": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "differentiator": {
                "type": "string"
              },
              "talk_track": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": true
          }
        },
        "objection_handling": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "objection": {
                "type": "string",
                "description": "They say ..."
              },
              "response": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "You say ..."
              }
            },
            "additionalProperties": true
          }
        },
        "pricing_talk_track": {
          "type": "object",
          "properties": {
            "their_pricing": {
              "type": [
                "string",
                "null"
              ]
            },
            "our_position": {
              "type": [
                "string",
                "null"
              ]
            },
            "guidance": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": true
        },
        "landmines": {
          "type": "array",
          "description": "Questions to plant with the buyer",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": true
    }
  },
  "required": [
    "competitor",
    "domain",
    "generated_at",
    "battlecard"
  ],
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools