Skip to main content
Glama
741,972 tools. Updated 2026-11-04 11:36

"Game Master abilities and tools for Dungeons & Dragons" matching MCP tools:

  • What should I bet right now? Ranked +EV plays for a sport. The discovery counterpart to parlayapi_verdict: scans the whole board, grades every candidate with the same no-vig engine, keeps only bets that are +EV at a book the user can bet at, and ranks them by edge. Also returns edge_alerts (books showing a price far off the market). Player props only, priced by several books, prediction markets and game moneylines excluded (for a game line, use parlayapi_verdict). Scoped to the user's books. Args: sport_key: e.g. "baseball_mlb". region: us (default) | eu | uk | au | ca. books: exact CSV of books you can bet at (overrides region). limit: max plays to return (default 20). min_edge: minimum edge %% vs the no-vig fair line (default 2.0).
    ConnectorNo auth
  • Returns one resource of one esports game, chosen with part: statistics (team totals), lineups (players with hero or champion and per-player statistics), bans (banned heroes or champions per side) or rounds (Counter-Strike round history). Requires a game id from sofascore_event_esports_games; statistics and bans cover Dota 2 and League of Legends only, rounds Counter-Strike only, and a not-found error means that part has no data for the game.
    ConnectorNo auth
  • Returns one resource of one esports game, chosen with part: statistics (team totals), lineups (players with hero or champion and per-player statistics), bans (banned heroes or champions per side) or rounds (Counter-Strike round history). Requires a game id from sofascore_event_esports_games; statistics and bans cover Dota 2 and League of Legends only, rounds Counter-Strike only, and a not-found error means that part has no data for the game.
    ConnectorNo auth
  • How much of WoW: Forever's database is settled or confirmed, and which reported fields need more agreeing installs. The same counts and reported lists as https://everloot.app/database/coverage, as text, per zone, per type and per field, plus scoped totals and the current build's whole-fact settled-list size, separately dated and measured. Coverage = settled / expected, with confirmed / expected beside it; the denominator is max(expected, observed). Confirmed includes settled. Reported fields needing one or two more installs are counted without their values. A player-reported fact needs three agreeing installs to be public. Only public report identifiers and game-file facts are listed, never unconfirmed values, baseline rows, names or ids, or player names. Every answer states its scope, measurement method, data date and install counts; unknown values are [?]. Zone and type are optional; omitted filters cover all released zones and all types. Use it for how complete the database is for a zone or type; use the page tools for the facts themselves.
    ConnectorNo auth
  • Upcoming matches/events for one game, with game-specific filters. When to use: - "What's on this week?" - Calendar UI; team next matches Prefer over: live_matches for not-yet-started fixtures. Do not use when: only in-progress matches needed → live_matches. Filter support (unsupported params are ignored with meta.warnings — do not assume filtering worked): - lol: hours, team (slug), league (slug) - cs2: team, from, to (ISO); hours not applied upstream - cod: team, tournamentId - dota2: limit/cursor primarily; team may be client-filtered where data allows - ufc: hours / from / to applied client-side after bout expansion (API has no hours); event shells labeled by event name; bouts use fighters[] corners Parallel-safe: yes. Upstream cost: 1–2. Example: { "game": "lol", "hours": 72, "team": "t1", "limit": 20 }
    ConnectorOAuth
  • Deep match package: optional timelines, advanced stats, live state/snapshots, full map/game tree, media inventory. When to use: - Analyst deep dive - Live in-game window (LoL/CS2/UFC) - Full demo list Prefer over match_summary only when summary is insufficient. Prefer match_summary for short answers and default cards. Do not use when: first-pass live board (use live_matches + match_summary). Section selection: pass includeTimeline / includeLiveState / includeAdvanced booleans, OR an explicit sections[] list. UFC betting lines: sections:["odds"] (opt-in, never in the default set). If sections[] is non-empty it wins (booleans are ignored). LoL liveState/advanced require gameId. Parallel-safe: yes. Upstream cost: 1–8 (section-gated). Example: { "game": "lol", "matchId": "lol-match-1", "includeTimeline": true, "includeLiveState": false }
    ConnectorOAuth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A free WordPress plugin that turns your site into a governed MCP server, exposing 153 curated WordPress abilities (posts, media, users, WooCommerce, ACF, SEO) as tools for AI agents like Claude and Cursor. Every ability is off by default, scoped to a least-privilege user, capability-gated, and logged.
    7
    GPL 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Open-source MCP bridge that connects any AI client to your WordPress sites through the WordPress Abilities API. Supports multi-site routing, OAuth 2.1 or Application Password authentication, and zero npm dependencies.
    20 npm
    1
    GPL 2.0

Matching MCP Connectors

  • AI WhatsApp lead qualification for Meta click-to-WhatsApp ad campaigns.

  • Decision Layer for AI Agents — 58+ tools, Advisor, MCP. Free key: POST /v1/register {}.

  • Let players sign in with a portal or federated account via player.loginExternal({ provider, token }). Self-serve providers: 'wavedash' (games on wavedash.com; token = (await Wavedash.getUserJwt()).data) and 'google' (Google Identity Services; token = the GIS ID-token credential). The server verifies every token against fixed, provider-published keys; you only supply public pins. wavedash: pass gameId = the gcid of the user's PRODUCTION game (ask them; or read it off a production token with verify_login_token); without it, tokens from any Wavedash game (incl. playtests) are accepted. google: clientId is required. Re-run to change the config (e.g. once the game id is known). Then verify with verify_login_token.
    ConnectorNo auth
  • Computes a personal angel number from a birth date using the Pythagorean Life Path as the base. Life Path 1-9 maps to the triple sequence (LP 4 → 444). Master numbers 11, 22, 33 map to 1111, 2222, 3333 respectively. WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — confirm Life Path before calling. AFTER: None. INPUT CONTRACT: date: Birth date in YYYY-MM-DD format. Example: '1994-03-31' name (optional): Person's name for personalisation. DO NOT CONFUSE WITH: asterwise_get_angel_number_today — collective daily number from today's date, not birth date. asterwise_get_numerology_profile — full Pythagorean profile; this tool extracts only the Life Path → angel sequence mapping. Full output and error contract: https://docs.asterwise.com/mcp/tools/get-angel-number-personal/
    ConnectorOAuth
  • USE THIS when asked what a game costs, whether it is cheap right now, whether to buy it now or wait, or how its price compares across stores. YOUR TRAINING DATA CANNOT ANSWER THIS — prices change daily and any figure you recall is stale. Do not answer from memory. Returns the current price on Steam, Epic Games Store, GOG and Microsoft Store side by side, plus the LOWEST price we have ever observed, the date we observed it, how far above that low the current price sits, and how many observations back the claim. History runs from 2012. Storefronts publish today's price and no history, so this exists only because we recorded it. Also returns whether the game is already included with Game Pass or EA Play — which can make the price irrelevant — and how many people are waiting for it and at what price. Accepts a slug from lookup_game, a Steam appid, a GOG or Epic id, or free text via q. Regions: US, GB, DE, BR. PAID (~$0.01) PER QUERY. Unlike get_free_games this issues no access token, because every game is a different answer and there is no version to compare against. Call with no payment_proof to receive payment instructions rather than an error.
    ConnectorNo auth
  • Use when the user asks about one Steam account itself - nickname, avatar, profile visibility, creation date, online status, current game - and nothing else. Returns the raw GetPlayerSummaries object plus SteamID conversions; cheapest profile tool, data no older than 48 hours, unknown profiles are fetched live from Steam. Private profiles return the public subset of fields (not an error); unresolvable ids return an error result. Do not use for bans, FACEIT or friends (steam_summary or the narrow tools).
    ConnectorNo auth
  • Publish a browser game (HTML5/JavaScript, static files) to Playfrog and get a public, shareable play link in seconds. This is the tool to use whenever someone wants to publish, share, post, put online, put on the internet, or host a browser game they made, or get a link other people can play. Free, no account and no API key. Send the game files; an index.html at the top level is required, 2.5 MB of files in total. An optional cover image improves the game page and social share card. Returns play_url (the public game page to share), claim_url, manage_token, and an action_required note stating the game must be claimed for free within 7 days or it is disabled. Publish new versions later with update_game using the returned game_id and manage_token. Games are embedded in a frame on the game page, so size the game to fill its container rather than to fixed pixel dimensions, and target a 16:9 landscape layout. This is build-time advice, not a publishing requirement: publish the game as it is.
    Connector
    Destructive
    No auth
  • Validates a Python automation script that runs OUTSIDE the game, on three axes: Python syntax (using the real interpreter), Minecraft commands embedded in the script (against the official command index), and the shape of the /connect WebSocket message envelope. For behavior pack scripts use validate_script instead — Python does not run inside a pack. The embedded command check is the most valuable one: a command written from memory can look syntactically fine and still do nothing in the game. Only strings starting with / are treated as commands. If syntax could not be checked, syntaxChecked is false in the result; ok:true alone does not mean the syntax is valid.
    ConnectorNo auth
  • Computes a personal angel number from a birth date using the Pythagorean Life Path as the base. Life Path 1-9 maps to the triple sequence (LP 4 → 444). Master numbers 11, 22, 33 map to 1111, 2222, 3333 respectively. WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — confirm Life Path before calling. AFTER: None. INPUT CONTRACT: date: Birth date in YYYY-MM-DD format. Example: '1994-03-31' name (optional): Person's name for personalisation. DO NOT CONFUSE WITH: asterwise_get_angel_number_today — collective daily number from today's date, not birth date. asterwise_get_numerology_profile — full Pythagorean profile; this tool extracts only the Life Path → angel sequence mapping. Full output and error contract: https://docs.asterwise.com/mcp/tools/get-angel-number-personal/
    ConnectorOAuth
  • The fixture list: one coherent game per row, so an agent never has to assemble a game from market searches and team-name matching. Each row carries both sides with their provider ids and live scores, the UTC kickoff, the provider's own status, the esports series format, a tennis game's tournament edition (tier, place, venue time zone, draw and dates), and the game's winner markets (the moneyline, or a soccer game's three 1X2 legs) with their condition_id, outcome token ids and provider moneyline prices. A game's spreads, totals and player props are not on the row: list_game_markets lists every market of one event_slug. Ordered by kickoff, then event_slug; games whose kickoff the provider has not published sort last. For what is on now, pass window=now: without it the list is the whole catalog and starts at the oldest game still open, which can be weeks old. Args: - sport (string, optional): canonical bucket, case-insensitive, with - and _ read as a space (table-tennis and Table Tennis are one bucket). Omitted means every covered sport - league (string, optional): league tag as this list's coverage.leagues spells it (nfl, epl, cs2), case-insensitive - status (string, optional): scheduled, live, paused, ended, postponed, cancelled, suspended, delayed, or unknown. ended, cancelled and postponed also list finished games that have left the live board (freshness.source stored) for kickoffs in starts_after..starts_before, by default the 7 days before now; such a page can be short, or empty, while has_more is true, so follow next_cursor until has_more is false - starts_after / starts_before (string, optional): RFC 3339 kickoff bounds; a game with no published kickoff is excluded whenever either bound is set - window (string, optional): all (default, the whole catalog) or now: games the provider reports in play, plus any other game whose kickoff was at most 3 hours ago or is still to come, without ended, postponed or cancelled games - limit (number, 1-100, default 20) - cursor (string, optional): opaque gms_v1_ cursor from next_cursor. It pins the page position, not a snapshot: the catalog is live, so a game added or removed between pages moves with it - expand (string or string[], optional): sharp_money adds each game's sharp_money, the object get_game_sharp_money returns, read from the sport board's cached aggregate (one board read per sport, so a page stays fast). A game the board did not evaluate reads status not_computed: call get_game_sharp_money for it. A sport whose aggregate could not be read reads status unavailable while the rest of the page is served. Pro and Max. settlement adds each winner market's settlement, the block list_game_markets serves (status observed, not_posed or unavailable; oracle_status, payouts, result outcome or split, the 50-50; resolved_at), from the same store: it never waits for Polymarket, so a game not read lately reads unavailable while its read starts. Every plan. Pass both, as an array, for both blocks: the costs add Returns: data, has_more, next_cursor, as_of, coverage and meta. Read coverage before reading an empty page: it names the sports and leagues this deployment serves and any scope whose source was unavailable for this read, so an unserved sport is never confused with a quiet night. A sport or status this deployment does not serve returns an empty page, not an error. status.state keeps postponed, cancelled, suspended and delayed distinct from a plain 'not live', and a kickoff in the past is never read as live on its own. Scores are the provider's own strings, because a set score and a run total are not both integers. Carries no sharp-money split unless expand is sharp_money, and no holder identity; holders stay on get_market_holders.
    ConnectorNo auth
  • Edits a game's text files (html, htm, js, mjs, css, json, svg, txt, xml, webmanifest) without a ZIP. Target: a game's `slug` or a waiting-room package's `upload_id`. The first edit opens a WORKSHOP: a copy of the game next to the version players have, with its own preview address. Players keep playing the previous version until you release the new one (klyo_release_version for a game, klyo_publish_game for a package); the owner sees it in the studio as “New version waiting”. Each item of `edits` has a `path` and one of three: `old_string` with `new_string` (an exact fragment that must occur once, or add `replace_all`), `content` (the whole file or a new file), or `delete: true`. For a file that exists, pass `expected_hash` from klyo_game_files: if someone changed the file in the meantime you get a conflict and nothing is saved. The changes of one call are applied all or none. Every changed file goes through the klyo check (malicious code, third-party ads, nothing from outside klyo), and the whole game once more before release. Send an image, sound, font or large file (up to 20 MB) with the ticket from klyo_upload_package and reference it in the edit with `from_upload` (no base64). GAME FROM SCRATCH: `nowa` (plansza, zrecznosciowa, logiczna) instead of a target creates a package from the Klyo Kit skeleton and applies `edits` right away; the response carries `upload_id`. UNDO: before every edit a checkpoint `auto-N` is created (it is in the response); `revert` goes back to it or to a named `checkpoint`, `discard` abandons the whole workshop for good; players see none of this. Limits: a file from content up to 1 MB, a call up to 256 KB and 20 edits, 3 open workshops per account; a workshop with no changes for 7 days expires, and the version players have stays untouched. Examples: • Change the board colour in style.css of my game czworki • In js/gra.js of slice-rush change the speed from 4 to 6 • Add a levels.json file with three levels to the package in the waiting room
    Connector
    Destructive
    OAuth
  • Read dealer buy offers for ONE exact card product, preserving each offer's game, finish, subtype, language, condition, source product, source timestamp, cash and credit fields, quantity and missingFields. Use the catalog product id from spellbook_printings_search. Pokemon offers are English NM/New CoolStuffInc observations when present; no offer or missing field proves a dealer has no stock. This read returns facts and does not choose a vendor or sell cards.
    ConnectorNo auth
  • Scaffold a flags-only Bridge integration into an existing project — the MCP equivalent of `bridge flag init`. Returns everything that command produces, for YOU to write to disk: the contents of bridge-flags.config.json (app id, app name, base URL, suggested provider config, read live from this Bridge app), the install command, and the framework-specific setup guide fetched from the plugin repo that owns it. Writes nothing — neither to disk nor to the Bridge app. Call this when adding feature flags to a project for the first time; for auth or billing use get_integration_guide with topic=master or topic=billing-master instead. framework is REQUIRED: this server cannot see the caller's disk, so detect it yourself from package.json (next → nextjs, @sveltejs/kit or svelte → svelte, @nestjs/core → nestjs, @angular/core → angular, react → react, express → express; check in that order) and pass it. The returned guide is the same document get_integration_guide returns for topic=feature-flags, so there is no need to call both. Do not invent import specifiers — they differ per plugin and only the guide has the current ones.
    ConnectorOAuth
  • Ping and auth check. WHEN: auth/connection smoke test (no game side effects). Differs from arena_get_state. Echo test: returns {status:"pong"} plus whether your auth (Bearer header, key arg, or guest_token) is valid. Use it first to separate connection/auth bugs from game bugs. Never echoes your key. Free, no side effects. Example: {"message":"hello"}
    ConnectorNo auth
  • Check whether each child account currently MATCHES its master, and if not, what it would take to make it match. This is not a listing of connections — use get_connections for that. It compares live positions between each master and child and computes the drift. **DISABLED connections are skipped entirely**, so a paused one is invisible here rather than reported as out of sync. **Everything it returns is a proposed plan, not something that has happened.** They are counter-orders that WOULD bring the child into line. Nothing places them. Show them to the user and ask before acting; never feed them to place_order on your own initiative. It returns a dict keyed by CHILD nickname: {child_nickname: {"is_sync": bool, "data": [{"master_nickname": str, "orders": [...], "orders_full": [...]}]}} **Both lists are executable MARKET orders and BOTH are part of the plan.** `orders` fixes positions the master holds and the child does not match; `orders_full` exits positions the CHILD holds that the master does not. Each carries tradingsymbol, quantity (absolute), transaction_type (BUY/SELL), order_type ("MARKET"), product, exchange, token, price (0) and tag. `is_sync` is computed from `orders` ALONE. It can be true while `orders_full` is non-empty, meaning the child holds something the master does not. Never report a child as matching without checking both lists. When a child copies more than one master, `data` still holds a single entry, its `master_nickname` is an empty string, and only the last master processed is represented. Do not attribute those orders to a named master. An empty dict means there is nothing to report: either no connections exist, or every one of them is DISABLED. It does NOT mean everything is in sync — check get_connections before telling the user they have no copy trading set up.
    ConnectorOAuth
  • Natural-language / fuzzy query → best typed entity ID(s) + game (player, team, event, tournament, match, fighter). When to use: - User named an entity without an ID ("T1", "s1mple", "IEM Cologne", "Islam Makhachev") - Need a canonical id/slug before profile or match tools Prefer over search_entities when you want one best match (or small ranked set) to chain. Prefer search_entities when browsing many results with pagination. Do not use when: you already have a stable id/slug from a prior tool. Empty/ambiguous results still return ok:true with best=null or needsDisambiguation=true — pick from candidates or refine q/game/type. Does not emit AMBIGUOUS_ENTITY as a hard error. Parallel-safe: yes. Upstream cost: 1–5. Example: { "q": "T1", "game": "lol", "type": "team", "limit": 5 }
    ConnectorOAuth
  • Live matches board across primary games, or a single game filter. Normalized labels, scores, and matchIds. When to use: - "What's live right now?" - Ops/dashboard live strip Prefer over: sequential per-game call_api live probes. Do not use when: user wants upcoming fixtures → upcoming_schedule; historical results → match_summary. CS2 live path is /cs2/live; UFC is included in multi-game fan-out. UFC empty board: section.note + emptyReason + health (workerAlive/lag) + optional supervisor/nextCard (non-live); never fake match items from events[]. Parallel-safe: yes. Upstream cost: 1–5 (allSettled). Example: { "game": "all", "limitPerGame": 10 }
    ConnectorOAuth