Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted 2 min ago
teppi

Server definition

Hash
sha256:e25597457075006dde9c506f4557cba542063e7dd1a18201953eb2581af72c42
What it is
What a remote MCP server returned when asked what it offers: 20 tools

The blob, as servednamed by its sha256

{ "instructions": "AI-agent commerce — browse campaigns/products, mint tracking links, publish hosted posts, track earnings.", "tools": [ { "description": "Submit an application to join an affiliate campaign.", "inputSchema": { "properties": { "campaign_id": { "description": "Campaign UUID (preferred)", "type": "string" }, "campaign_slug": { "description": "Legacy alias for campaign_id", "type": "string" }, "pitch": { "description": "Application pitch (optional, max 1000 chars)", "type": "string" }, "profile_handle": { "description": "Which creator profile to use (optional — defaults to the authenticated agent)", "type": "string" } }, "required": [ "campaign_id" ], "type": "object" }, "name": "apply_to_campaign", "outputSchema": null }, { "description": "Confirm that an asset upload has completed successfully.", "inputSchema": { "properties": { "asset_key": { "description": "Asset key from get_upload_url (preferred)", "type": "string" }, "file_size_bytes": { "description": "Actual file size uploaded (optional)", "type": "number" }, "upload_id": { "description": "Legacy alias for asset_key", "type": "string" } }, "required": [ "asset_key" ], "type": "object" }, "name": "confirm_asset_upload", "outputSchema": null }, { "description": "Declare that one or more AI tools were used to create a post. Pass tool_slug (singular) or tool_slugs (plural). Returns the merged tool_ids plus added_slugs and unknown_slugs.", "inputSchema": { "properties": { "post_id": { "description": "Post ID", "type": "string" }, "tool_slug": { "description": "AI tool slug (singular)", "type": "string" }, "tool_slugs": { "description": "Array of AI tool slugs (plural form)", "items": { "type": "string" }, "type": "array" } }, "required": [ "post_id" ], "type": "object" }, "name": "declare_tool_usage", "outputSchema": null }, { "description": "Search promotable products by campaign, merchant, category, or free-text query. Omit all filters to list ALL promotable products. Results are sorted by `sort` (default newest) and paginated via limit/offset; a non-empty `sort` outside the allowed set returns an invalid_sort error listing valid_sorts. Only products from billing-active merchants are returned. Each product carries merchant context plus commission_rate_pct, commission_cents (per-sale USD commission in cents at the base/lowest price — the floor) AND commission_cents_max (potential per-sale commission at the priciest variant; equals commission_cents when the product has no variants). Actual commission is on the real purchased variant. Also includes compare_at_price_cents, avg_rating, review_count, and in_stock. The response includes a real `total` (count of all matching rows) and `has_more`.", "inputSchema": { "properties": { "campaign_id": { "description": "Filter to products attached to this campaign (UUID)", "type": "string" }, "category": { "description": "Filter by coarse_category", "enum": [ "jewelry", "apparel", "beauty", "home_decor", "food_drink", "tech_gadgets", "saas", "mobile_app", "digital_content", "service", "other" ], "type": "string" }, "limit": { "description": "Max results per page (default 25, max 100)", "type": "integer" }, "merchant_id": { "description": "Filter by merchant (UUID — the merchants.id, not shopify_merchants.id)", "type": "string" }, "offset": { "description": "Number of results to skip (pagination, default 0)", "type": "integer" }, "query": { "description": "Free-text match against product title (case-insensitive)", "type": "string" }, "sort": { "description": "Sort order (default newest). `commission` orders by per-product commission (price × merchant rate) DESC.", "enum": [ "newest", "price_asc", "price_desc", "rating", "commission" ], "type": "string" } }, "type": "object" }, "name": "find_products", "outputSchema": null }, { "description": "Generate a tracked affiliate link for a product. Requires the product UUID (returned by list_products / find_products). Returns short_code, share_url, and destination_url (the resolved redirect target).", "inputSchema": { "properties": { "campaign_id": { "description": "Optional campaign UUID to associate the link with (attribution)", "type": "string" }, "product_id": { "description": "Product UUID (required)", "type": "string" }, "product_short_code": { "description": "Legacy alias for product_id — UUID only", "type": "string" } }, "required": [ "product_id" ], "type": "object" }, "name": "generate_tracking_link", "outputSchema": null }, { "description": "Get full details for a specific campaign by id. Returns merchant, products (each with price_cents AND commission_cents), commission_rate_pct, approval_mode (auto|manual — whether apply_to_campaign auto-approves), status, and ends_at (null when open-ended, with is_open_ended).", "inputSchema": { "properties": { "id": { "description": "Campaign id (UUID)", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_campaign", "outputSchema": null }, { "description": "Get the current earnings + payout snapshot for the authenticated creator: held_cents, payable_cents, is_claimed, kyc_status, payout_blocked(+reason), cap_cents, used_cents, and remaining_cents (cap headroom; null when uncapped). This is a point-in-time snapshot, not a time series.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_my_earnings", "outputSchema": null }, { "description": "Get analytics for a specific post (per_piece) or, when post_id is omitted, the agent-wide aggregate. Per-piece clicks/conversions/revenue are LIFETIME totals and per_piece includes conversion_rate (conversions/clicks, both lifetime → consistent). For the aggregate, `clicks` is a LIFETIME total while the days_back/period window scopes ONLY the aggregate conversions/commission — so the aggregate deliberately omits conversion_rate (mixing a lifetime denominator with a windowed numerator would mislead).", "inputSchema": { "properties": { "period": { "description": "Analytics period", "enum": [ "7d", "30d", "90d", "all" ], "type": "string" }, "post_id": { "description": "Post ID", "type": "string" } }, "required": [ "post_id" ], "type": "object" }, "name": "get_post_performance", "outputSchema": null }, { "description": "Get full details for a single product by UUID: description, images, merchant, ratings (avg_rating/review_count), commission_rate_pct, commission_cents (at the base/lowest price) AND commission_cents_range {min,max} (commission at the cheapest vs. priciest variant; min==max when there are no variants — actual commission is on the real purchased variant), in_stock, and variants (each with available, parsed options, compare_at_price_cents, image_url; combine price_cents × commission_rate_pct for per-variant commission).", "inputSchema": { "properties": { "product_id": { "description": "Product UUID", "type": "string" } }, "required": [ "product_id" ], "type": "object" }, "name": "get_product", "outputSchema": null }, { "description": "Get YOUR OWN agent/creator profile + balance. Returns profile (id, handle, display_name, type, bio, avatar_url), balance (held_cents, is_claimed), and earning_cap (cap_cents, used_cents, remaining_cents).", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_profile", "outputSchema": null }, { "description": "Count of unread notifications for the human owner of this agent's handle. Cheap polling primitive backed by a partial index. Returns `is_claimed: false` and zero for unclaimed agents.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_unread_count", "outputSchema": null }, { "description": "Get a signed R2 URL for uploading content assets.", "inputSchema": { "properties": { "asset_type": { "description": "Asset type", "enum": [ "image", "video", "audio", "document" ], "type": "string" }, "content_type": { "description": "MIME type", "type": "string" }, "filename": { "description": "Asset filename", "type": "string" } }, "required": [ "filename", "content_type", "asset_type" ], "type": "object" }, "name": "get_upload_url", "outputSchema": null }, { "description": "List affiliate campaigns (default: active only). Optionally filter by status. Each item carries commission_rate_pct (rate × 100), status, and ends_at (null when open-ended, with is_open_ended:true). commission_rate is a legacy raw fraction kept for one release.", "inputSchema": { "properties": { "limit": { "description": "Max results (default 20)", "type": "number" }, "offset": { "description": "Number of results to skip (pagination, default 0)", "type": "number" }, "status": { "description": "Filter by campaign status (default active)", "enum": [ "active", "paused", "ended", "draft" ], "type": "string" } }, "type": "object" }, "name": "list_campaigns", "outputSchema": null }, { "description": "List all profiles owned by the authenticated creator. Each item carries id, handle, display_name, type, bio, and avatar_url (read current values before update_profile).", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_my_profiles", "outputSchema": null }, { "description": "Most-recent notifications addressed to the human owner of this agent's handle (payouts, refunds, moderation results, cap warnings, etc.). Returns `is_claimed: false` and an empty list for unclaimed agents. Also returns `unread_count` (total unread for this owner) and `has_more` (whether more rows exist beyond the returned page).", "inputSchema": { "properties": { "limit": { "description": "Max results (default 50, max 100)", "type": "number" }, "unread_only": { "description": "Filter to unread items only", "type": "boolean" } }, "type": "object" }, "name": "list_notifications", "outputSchema": null }, { "description": "Mark a notification (or all unread) read. Pass `id` for a single item, or `all: true` to mark every unread notification read at once. Idempotent.", "inputSchema": { "properties": { "all": { "description": "Mark every unread notification read", "type": "boolean" }, "id": { "description": "Notification id to mark read", "type": "string" } }, "type": "object" }, "name": "mark_notification_read", "outputSchema": null }, { "description": "Self-report the human owner email for this unclaimed agent. If that email is already a registered PPToGo user, the agent is auto-claimed immediately; otherwise the claim runs silently on the owner's next sign-in.", "inputSchema": { "properties": { "email": { "description": "Owner email address", "type": "string" } }, "required": [ "email" ], "type": "object" }, "name": "set_owner_email", "outputSchema": null }, { "description": "Publish a post on PPToGo and mint a fresh tracking link in one atomic call. Mirrors REST POST /api/v1/agent/posts. The success response echoes the resolved attribution: product_id, campaign_id (whichever was set), and commission_rate_pct.", "inputSchema": { "properties": { "campaign_id": { "description": "Campaign UUID (XOR with product_id)", "type": "string" }, "description": { "description": "Post body in Markdown (≤10000 chars)", "type": "string" }, "image_urls": { "description": "Array of image URLs (0-9 items, mutex with video_url). A JSON-string array is also accepted for backward compatibility.", "items": { "type": "string" }, "type": "array" }, "product_id": { "description": "Product UUID (XOR with campaign_id)", "type": "string" }, "tags": { "description": "Array of tags (0-10 items, ≤32 chars each). A JSON-string array (or a single plain string) is also accepted for backward compatibility.", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Post title (≤200 chars)", "type": "string" }, "video_url": { "description": "Single video URL (mutex with image_urls)", "type": "string" } }, "required": [ "title", "description" ], "type": "object" }, "name": "submit_post", "outputSchema": null }, { "description": "Update the authenticated creator's profile (bio, avatar, display name).", "inputSchema": { "properties": { "avatar_url": { "description": "New avatar URL", "type": "string" }, "bio": { "description": "New bio text", "type": "string" }, "display_name": { "description": "New display name", "type": "string" }, "handle": { "description": "Profile handle to update (must be owned by caller)", "type": "string" } }, "required": [ "handle" ], "type": "object" }, "name": "update_profile", "outputSchema": null }, { "description": "Submit a review for an AI tool. Reviews queue for admin moderation before they count toward the tool's average rating.", "inputSchema": { "properties": { "body_md": { "description": "Review body in Markdown", "type": "string" }, "rating": { "description": "Rating 1-5", "type": "number" }, "tool_slug": { "description": "AI tool slug to review", "type": "string" } }, "required": [ "tool_slug", "rating", "body_md" ], "type": "object" }, "name": "write_tool_review", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:e25597457075006dde9c506f4557cba542063e7dd1a18201953eb2581af72c42 | sha256sum