Skip to main content
Glama
306,437 tools. Last updated 2026-07-25 10:18

"sharp" matching MCP tools:

  • Search Partle's product catalog by name or description. Two distinct modes: - **Default (no flags)** — fast keyword search. ~100ms. Acts like a normal "dumb" search box: matches the literal words you typed against product names and descriptions, with stemming. Good for queries where the user knows the product's likely name ("BC547", "Arduino Uno", "Bosch drill"). Returns noisy/wrong results on cross-language or attribute queries ("compost bin" matches Spanish "composta", not real composters). - **`super_search=True`** — slow, high-quality. ~1–2s. Run when the user describes what they want rather than naming it: cross-language ("Schraubenzieher Set" → real screwdriver sets even without German catalog entries), attribute-style ("small metal part with a flat head"), or any case where the default returns junk. Embeds the query with voyage-3-large, takes the cosine top-50 over the corpus (with an exact-name precision boost for part numbers), then a cross-encoder reranks them. The two modes are mutually exclusive in practice — pick one based on whether the user knows the product's name or is describing it. Use this when the user asks to find a specific product or browse products matching a query. Prefer over `search_stores` when the intent is product-led ("find a drill") rather than store-led. Use `get_product` afterwards if the user wants full details for one specific result. Read-only. No authentication. Rate-limited to 100 requests/hour per IP. Args: query: Free-text search term. In default mode, treated as keywords (each word matched against product text). In `super_search=True`, treated as a natural-language description. min_price: Lower bound on price in EUR. Omit for no lower bound. Null-priced rows are NOT excluded by this filter — pass `has_price=True` if you need only priced listings. max_price: Upper bound on price in EUR. Omit for no upper bound. Tip — narrow by budget: `min_price=10, max_price=50, sort_by="price_asc", has_price=True`. Products without a listed price (a large fraction of the scraped catalog) sort last under either price ordering and are kept in results unless `has_price` filters them out. tags: Comma-separated tag filter (e.g. "electronics,bluetooth"). Tags are AND-ed together. store_id: Restrict results to a single store. Use the integer `id` from `search_stores` results. sort_by: One of `price_asc`, `price_desc`, `name_asc`, `newest`, `oldest`. Omit to use the default search-relevance ranking. has_price: When True, exclude products without a listed price (~most of the scraped catalog). Use this for competitive pricing or budget-bounded shopping. When False, return only null-priced listings (rarely useful). Omit to include both. semantic: Legacy flag. Pure vector ordering, ~250ms. Mostly superseded by `super_search=True` (which uses the same vector retrieval plus a cross-encoder rerank for materially better ordering at the cost of another ~700ms). Keep using it only if you specifically want vector retrieval *without* the rerank. super_search: **Enable for natural-language / "describe what I want" queries.** ~1–2s. Embeds the query with voyage-3-large, takes the cosine top-50 (with a precision boost for exact-name matches like part numbers / SKUs), then a cross-encoder reranks them. Use whenever the user is describing rather than naming — cross-language ("Schraubenzieher Set"), attribute-style ("small black metal bracket"), or any case where the default keyword path returns junk. Don't combine with cheap browse-style queries where the user typed an exact product name — keyword default is faster there. On `relevance_score` here: better than the bi-encoder cosine, but still not a "did I find what the user wanted" gauge. Behavior to expect: gibberish or fully-off-topic queries cap around 0.35; loosely-related catalogue clusters can score 0.7+ even when no item truly matches (a "ceramic vase" query in a catalog with no vases but many ceramic flowerpots will still score high). **Read the product names** before claiming a match. The score is most useful as a relative signal within one result set — a sharp drop between rank N and N+1 marks where the catalog stops being useful for this query. limit: Max results (1–100, default 20). Larger limits are slower and consume rate budget faster. offset: Skip this many results before returning. Use for pagination (offset += limit on each follow-up call). Returns: A list of products. Each includes `id`, `name`, `price`, `currency`, `url`, `description`, `store` (id/name/address), `tags`, `images`, a canonical `partle_url`, and `relevance_score` (cosine similarity 0–1 between the query and the product's embedding when a query was provided; `None` otherwise). **Always share `partle_url` with the user so they can view the listing.** Caveat on `relevance_score`: it is monotonic *within a single search result set* (useful for spotting a big drop-off between rank 3 and rank 4), but its absolute value is not well-calibrated across queries — most results land in 0.55–0.80 regardless of whether the catalog has truly relevant items. Don't infer "this is a great match" from a 0.75 score alone.
    Connector
  • Search Partle's product catalog by name or description. Two distinct modes: - **Default (no flags)** — fast keyword search. ~100ms. Acts like a normal "dumb" search box: matches the literal words you typed against product names and descriptions, with stemming. Good for queries where the user knows the product's likely name ("BC547", "Arduino Uno", "Bosch drill"). Returns noisy/wrong results on cross-language or attribute queries ("compost bin" matches Spanish "composta", not real composters). - **`super_search=True`** — slow, high-quality. ~1–2s. Run when the user describes what they want rather than naming it: cross-language ("Schraubenzieher Set" → real screwdriver sets even without German catalog entries), attribute-style ("small metal part with a flat head"), or any case where the default returns junk. Embeds the query with voyage-3-large, takes the cosine top-50 over the corpus (with an exact-name precision boost for part numbers), then a cross-encoder reranks them. The two modes are mutually exclusive in practice — pick one based on whether the user knows the product's name or is describing it. Use this when the user asks to find a specific product or browse products matching a query. Prefer over `search_stores` when the intent is product-led ("find a drill") rather than store-led. Use `get_product` afterwards if the user wants full details for one specific result. Read-only. No authentication. Rate-limited to 100 requests/hour per IP. Args: query: Free-text search term. In default mode, treated as keywords (each word matched against product text). In `super_search=True`, treated as a natural-language description. min_price: Lower bound on price in EUR. Omit for no lower bound. Null-priced rows are NOT excluded by this filter — pass `has_price=True` if you need only priced listings. max_price: Upper bound on price in EUR. Omit for no upper bound. Tip — narrow by budget: `min_price=10, max_price=50, sort_by="price_asc", has_price=True`. Products without a listed price (a large fraction of the scraped catalog) sort last under either price ordering and are kept in results unless `has_price` filters them out. tags: Comma-separated tag filter (e.g. "electronics,bluetooth"). Tags are AND-ed together. store_id: Restrict results to a single store. Use the integer `id` from `search_stores` results. sort_by: One of `price_asc`, `price_desc`, `name_asc`, `newest`, `oldest`. Omit to use the default search-relevance ranking. has_price: When True, exclude products without a listed price (~most of the scraped catalog). Use this for competitive pricing or budget-bounded shopping. When False, return only null-priced listings (rarely useful). Omit to include both. semantic: Legacy flag. Pure vector ordering, ~250ms. Mostly superseded by `super_search=True` (which uses the same vector retrieval plus a cross-encoder rerank for materially better ordering at the cost of another ~700ms). Keep using it only if you specifically want vector retrieval *without* the rerank. super_search: **Enable for natural-language / "describe what I want" queries.** ~1–2s. Embeds the query with voyage-3-large, takes the cosine top-50 (with a precision boost for exact-name matches like part numbers / SKUs), then a cross-encoder reranks them. Use whenever the user is describing rather than naming — cross-language ("Schraubenzieher Set"), attribute-style ("small black metal bracket"), or any case where the default keyword path returns junk. Don't combine with cheap browse-style queries where the user typed an exact product name — keyword default is faster there. On `relevance_score` here: better than the bi-encoder cosine, but still not a "did I find what the user wanted" gauge. Behavior to expect: gibberish or fully-off-topic queries cap around 0.35; loosely-related catalogue clusters can score 0.7+ even when no item truly matches (a "ceramic vase" query in a catalog with no vases but many ceramic flowerpots will still score high). **Read the product names** before claiming a match. The score is most useful as a relative signal within one result set — a sharp drop between rank N and N+1 marks where the catalog stops being useful for this query. limit: Max results (1–100, default 20). Larger limits are slower and consume rate budget faster. offset: Skip this many results before returning. Use for pagination (offset += limit on each follow-up call). Returns: A list of products. Each includes `id`, `name`, `price`, `currency`, `url`, `description`, `store` (id/name/address), `tags`, `images`, a canonical `partle_url`, and `relevance_score` (cosine similarity 0–1 between the query and the product's embedding when a query was provided; `None` otherwise). **Always share `partle_url` with the user so they can view the listing.** Caveat on `relevance_score`: it is monotonic *within a single search result set* (useful for spotting a big drop-off between rank 3 and rank 4), but its absolute value is not well-calibrated across queries — most results land in 0.55–0.80 regardless of whether the catalog has truly relevant items. Don't infer "this is a great match" from a 0.75 score alone.
    Connector
  • Share management: create/update/delete, archive, password auth, members, autotitle. NOTE: quickshare-create is DEPRECATED (returns error 10756) — use the `fileshare` tool's `create` action for durable single-file shares. Call action='describe' for the full action/param reference. Destructive: delete (permanent). Side effects: autotitle AI-generates + applies a title/description (consumes credits, mutates share metadata). ⚠️ intelligence on create COSTS CREDITS (10/page) — default false unless user explicitly requests RAG. Verbosity (detail param): list/available/members default to terse (compact rows). public-details defaults to standard. details defaults to full (drill-down). Pass an explicit detail='terse'|'standard'|'full' to override.
    Connector
  • Where the market is moving — steam / sharp-money signal for upcoming events. Reads `mart_line_movement_features` (the hourly slate snapshots windowed per line identity) and surfaces the lines whose implied probability has moved the MOST since their opening snapshot, **aggregated across books** so it reflects the market's consensus move rather than one book's quirk. A line drifting toward a side means money is coming in on that side (steam / sharp action). IMPORTANT framing for the caller: this reports the *market's own revealed signal* (how the price has moved), NOT our model's edge and NOT a pick. It answers "where is the money going today" — pair it with `prop_slate` / `kalshi_edges` (model edge) to see where the market move agrees or disagrees with the model. Two guards keep the signal honest (both tunable): it defaults to the sportsbook feed (`source='the_odds_api'`) and EXCLUDES Kalshi, whose exchange contracts legitimately decay toward 0/1 over a multi-day resolution window (that drift is not pre-game steam); and it caps moves at `max_move` (default 30pp) because genuine pre-game steam is single-digit pp — a larger swing is almost always a stale opening snapshot, not money.
    Connector
  • SHARP MONEY DETECTOR for World Cup betting markets. Finds abnormal PRE-MATCH moves in the de-margined consensus win probability (TxODDS StablePrice, cryptographically anchored on Solana). Because no match is in play, there is nothing to react to - a win probability that jumps before kickoff is money arriving, not a reaction to a goal or a red card. Default threshold 2.81 percentage points per 5 minutes is the p99.9 of 8,464,803 real odds ticks harvested across 137 matches; the median 5-minute move is 0.08pp, so a firing is roughly 35x normal. Returns match, competition, minutes to kickoff, the probability path, move size, direction (odds shortening or drifting) and severity (notable/sharp/extreme). Use before placing or pricing a World Cup bet, or to detect informed money entering a market. Costs $0.02 USDC per call (x402, Solana mainnet).
    Connector
  • Upload a local image OR short MP4 video from the user's machine into Caulo, returning an asset_id ready to attach to create_post or add_comment. The file path is read on YOUR machine (the Claude Desktop process running locally), so this only works when Claude has filesystem access. Hosted agents (claude.ai, ChatGPT, future MCP-over-HTTP) cannot use this tool — those flows use create_post_with_upload_link (slice 7.B, post-upload link). Pipeline: (1) `~/` is expanded; the path is resolved through symlinks and confirmed to live under $HOME, (2) the bytes are magic-byte-checked locally (and for videos, duration is probed via ffprobe) so an unsupported / over-cap file fails fast without burning a quota slot, (3) the file is uploaded to caulo.ai's media-staging bucket via a one-shot signed URL, (4) the same Tier 0 / Tier 1 / Tier 2 pipeline that protects the web composer runs — for images Sharp re-encodes inline; for videos a Render worker transcodes via ffmpeg, extracts 3 keyframes, runs perceptual-hash kNN, and calls Haiku Vision on all frames in one call. Image processing is synchronous (~1 s); video processing is async and this tool polls for up to 3 minutes until the worker finishes. Returns { asset_id, status: 'approved' | 'rejected', nsfw_level?, video_url?, poster_url? }. A rejected upload is the moderation pipeline doing its job — relay the reason to the user and DO NOT retry the same file. JPEG/PNG/WebP up to 10 MB; MP4 up to 50 MB and 30 s.
    Connector

Matching MCP Servers

Matching MCP Connectors

  • Create sandboxed public-unlisted or access-key-protected HTML previews through a remote MCP server.

  • 连板网A股复盘数据: 连板天梯/题材/情绪周期/龙虎榜游资/个股涨停史 (A-share daily review, free read-only)

  • Share a document publicly. Returns a shareable URL. Rate limited to 10 shares per wallet per day. Requires EIP-191 wallet signature auth. See auteng_docs_create for auth details. Args: wallet_address: 0x... checksummed wallet address wallet_signature: EIP-191 signature of "auteng:{timestamp}:{nonce}" wallet_timestamp: Unix timestamp in seconds wallet_nonce: Random hex string (32 chars, single-use) agent_display_name: Display name for the agent path: File path of document to share (e.g. "reports/q1.md") visibility: Share visibility — only "public" in current version
    Connector
  • Resume work from a saved cognitive context. This provides a narrative briefing to quickly orient you to: - The investigation that was in progress - Key discoveries and insights made - Current hypotheses being tested - Open questions and blockers - Suggested next steps - All relevant memories with their connections The briefing reconstructs the cognitive state, not just the data. You'll understand not just WHAT was discovered, but WHY it matters and HOW the understanding evolved. Example of what you'll receive: "[API Timeout Investigation - Resuming after 2 hours] SITUATION: You were investigating production API timeouts that occur at exactly batch_size=100. This investigation started when user reported timeouts only in production, not staging. PROGRESS MADE: - Identified sharp cutoff at 100 items (not gradual degradation) - Disproved connection pool theory (monitoring showed only 43/200 connections used) - Found root cause: MAX_BATCH_SIZE=100 hardcoded in batch_handler.py:147 - Confirmed staging uses different config override (MAX_BATCH_SIZE=500) EVIDENCE CHAIN: User report → Reproduced locally → Noticed batch_size correlation → Searched codebase for limits → Found MAX_BATCH_SIZE → Checked staging config → Discovered config difference CORRECTED MISUNDERSTANDINGS: - Initially thought it was Redis connection exhaustion (disproven by monitoring) - Assumed gradual performance degradation (actually sharp cutoff) - Thought staging/production were identical (config differs) CURRENT HYPOTHESIS: Production deployment uses default MAX_BATCH_SIZE=100 from code, while staging has environment variable override. Fix requires either code change or prod config update. BLOCKED ON: Need production deployment access to apply fix. User considering whether to change code default or add production environment variable. RECOMMENDED NEXT STEPS: 1. Verify production environment variables (check if MAX_BATCH_SIZE is set) 2. If not set, add MAX_BATCH_SIZE=500 to production config 3. If code change preferred, update default in batch_handler.py 4. Run load test with batch_size=100-500 range to verify fix KEY MEMORIES FOR REFERENCE: - 'Initial timeout report from user' - Starting point of investigation - 'MAX_BATCH_SIZE discovery' - Root cause identification - 'Redis monitoring data' - Evidence disproving connection theory - 'Staging config analysis' - Explanation for environment difference" This cognitive handoff ensures you can continue the work with full understanding of the problem space, previous attempts, and current direction. The narrative preserves not just facts but the reasoning process, mistakes made, and lessons learned. SPECIAL CASE: restore_context("awakening") The name "awakening" is reserved for loading the user's personality configuration. This loads the Awakening Briefing which includes: - Selected persona identity and voice style - Custom personality traits (Premium+ users) - Any quirks and boundaries from the persona preset Args: name: Name or ID of context to restore. Can be: - Context name (exact match, case-sensitive) - Context UUID (from list_contexts output) - "awakening" for personality briefing limit: Maximum number of memories to restore (default 20) ctx: MCP context (automatically provided) Returns: Dict with: - success: Whether restoration succeeded - description: The cognitive handoff briefing - memories: List of relevant memories - context_id: The restored context identifier
    Connector
  • Update an existing document in the agent's workspace. Requires EIP-191 wallet signature auth. See auteng_docs_create for auth details. Args: wallet_address: 0x... checksummed wallet address wallet_signature: EIP-191 signature of "auteng:{timestamp}:{nonce}" wallet_timestamp: Unix timestamp in seconds wallet_nonce: Random hex string (32 chars, single-use) agent_display_name: Display name for the agent path: File path of document to update (e.g. "reports/q1.md") content: New markdown content (max 100 KB)
    Connector
  • Share a document publicly. Returns a shareable URL. Rate limited to 10 shares per wallet per day. Requires EIP-191 wallet signature auth. See auteng_docs_create for auth details. Args: wallet_address: 0x... checksummed wallet address wallet_signature: EIP-191 signature of "auteng:{timestamp}:{nonce}" wallet_timestamp: Unix timestamp in seconds wallet_nonce: Random hex string (32 chars, single-use) agent_display_name: Display name for the agent path: File path of document to share (e.g. "reports/q1.md") visibility: Share visibility — only "public" in current version
    Connector
  • General-purpose web grounding via parallel.ai (Vercel AI Gateway). Returns synthesized text excerpts plus structured sources[] with direct URLs. Use for: topic landscapes, entity-deep teardowns, recency-sharp queries, named-vendor lookups, general fact retrieval. NOT for: Reddit/X/community discourse → use search_community. NOT for: numerical effect sizes or methodology-heavy fact-check → use search_research. The agent decomposes the brief into sub-questions BEFORE calling — one focused query per call. Optional after_date (ISO YYYY-MM-DD) for fast-decay topics. Optional max_results 1-20, default 10.
    Connector
  • Live BGP routing health for a network resource — an ASN (e.g. "AS3215"), an IP ("8.8.8.8"), or a prefix ("193.0.0.0/22") — from RIPEstat (RIPE NCC's open routing-information service). Returns global visibility (how many of RIPE's route collectors currently see the resource) + an outage signal: healthy ≥0.9 · degraded ≥0.5 · outage <0.5. A sharp visibility drop = the network is losing global reachability. Use for "is network/ASN X reachable right now?". Pass `resource`. Every value is returned in an Ed25519-signed, provenance-stamped envelope (source and observation time) you can verify offline against /.well-known/keys, no account required.
    Connector
  • List the bookmakers available on your tier. Returns the curated catalogue (each with ``key``, ``name`` and ``class`` = "sharp" | "asian") plus a ``note`` on tier coverage. Free tier excludes the sharp book (Pinnacle). Use the returned ``key`` values in the ``bookmakers`` filter of get_match_odds / compare_lines.
    Connector
  • Get the opening odds (初盘) for a fixture, paired with the current price, in ONE call. Resolves the fixture, then for each book returns its **true opening** (first-seen) quote alongside the current quote — so you can read movement directly. For 1x2 that's a price move; for totals/AH compare ``line`` (the opening line) vs ``current_line`` to read the line move (the sharp book often opens days earlier). A market with no opening yet on file is omitted. Args: query: natural-language fixture, e.g. "Real Madrid vs Barcelona" or a single team. markets: optional filter — any of "1x2", "asian_handicap", "totals". bookmakers: optional filter — bookmaker keys, e.g. ["pinnacle", "crown"]. period: optional — "full_time" or "half_time" (default: both). format: odds format — decimal | hk | malay | american | indonesian | probability. sport: optional filter — "football" or "basketball". date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures. On an ambiguous query, ``status`` is "ambiguous" and ``ask_user`` carries a disambiguation prompt — do not assume a match. Best-effort: a book/line with no opening on file is omitted.
    Connector
  • Judge an external probability (e.g. a Polymarket/Kalshi price) against our sharp fair line — ONE call. Resolves the fixture, de-vigs the sharp book to a fair probability (power de-vig for 3-way 1x2), and reports the edge ``fair_prob − external_prob`` in percentage points, the ROI, and a verdict (good / marginal / no_edge). DETECTION ONLY: InferSports never ingests prediction-market data, sizes a stake, or picks — it gives you the sharp reference and the gap; the call is yours. Args: query: natural-language fixture, e.g. "France vs Argentina" or a single team. external_prob: the external implied probability for ``outcome``, in (0,1). Pre-net it for the venue's fee/spread (e.g. a Polymarket YES ask of 0.55 → 0.55). market_type: "1x2" (default; the prediction-market-comparable moneyline), "asian_handicap" (only ±0.5 maps cleanly to a binary), or "totals". period: "full_time" (default) or "half_time". outcome: which leg the probability is for — home/draw/away (1x2), home/away (AH), over/under. external_label: optional source label echoed back, e.g. "polymarket" | "kalshi". sport: optional filter — "football" or "basketball". date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures. Read ``caveats`` before acting: a 1x2 fair is regulation 90-min (a prediction market that includes extra time / "to advance" is a different market); quarter/integer AH carries push mass. On an ambiguous query ``status`` is "ambiguous" — do not guess. ``status`` is "no_line" when no sharp fair is available to judge against.
    Connector
  • Accept a base64-encoded image (PNG / JPEG / WebP / HEIC — anything sharp can decode), server-crop to a 256×256 WebP avatar, store on the calling member's profile. Subsequent calls overwrite. Max raw input 12MB. Args: { data_url?: 'data:image/png;base64,...', base64?: '...' } (one of). Returns: { ok, profile, base64_len }. Required scope: membership:write.
    Connector
  • Create a document in the agent's workspace. Requires EIP-191 wallet signature auth. Sign the message "auteng:{timestamp}:{nonce}" with personal_sign and provide the signature, timestamp, nonce, and wallet address. Args: wallet_address: 0x... checksummed wallet address wallet_signature: EIP-191 signature of "auteng:{timestamp}:{nonce}" wallet_timestamp: Unix timestamp in seconds (must be within 5 min of server time) wallet_nonce: Random hex string (32 chars, single-use) agent_display_name: Display name for the agent path: File path in workspace (e.g. "reports/q1.md"). Must end with extension. content: Markdown content (max 100 KB) title: Optional display title (derived from path if omitted)
    Connector
  • Find +EV value bets in a fixture — where a book's price beats the sharp fair line — in ONE call. Resolves the fixture, de-vigs the sharp book (Pinnacle) at each line to get the fair price, then flags every outcome whose best available price across books exceeds that fair price. DETECTION ONLY: this surfaces the edge and which book holds it; it does NOT size stakes or link out to bet. Args: query: natural-language fixture, e.g. "Netherlands vs Algeria" or a single team. markets: optional filter — any of "1x2", "asian_handicap", "totals" (default: all). period: optional — "full_time" or "half_time" (default: both). min_edge_pct: only report outcomes beating fair by at least this % (default 1.0). format: odds format — decimal | hk | malay | american | indonesian | probability. sport: optional filter — "football" or "basketball". date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures. On an ambiguous query, ``status`` is "ambiguous" and ``ask_user`` carries a prompt — do not guess. Needs the sharp book to de-vig; on the Free tier ``note`` flags that fair is approximate.
    Connector
  • Delete a document from the agent's workspace. Requires EIP-191 wallet signature auth. See auteng_docs_create for auth details. Args: wallet_address: 0x... checksummed wallet address wallet_signature: EIP-191 signature of "auteng:{timestamp}:{nonce}" wallet_timestamp: Unix timestamp in seconds wallet_nonce: Random hex string (32 chars, single-use) agent_display_name: Display name for the agent path: File path of document to delete (e.g. "reports/q1.md")
    Connector