Skip to main content

Manabase generator for all your Magic: The Gathering needs.

Project description


Landing rock solid mana bases for your decks.

Manabase is a command-line tool that helps you generate a mana base for your Magic: The Gathering decks.

It uses scryfall as its source of truth.


Manabase is available on PyPI Install manabase using pip:

pip install --user manabase


Manabase offers a primary command, manabase, that generates a list of lands for a set of colors.


Manabase includes a set of powerful filters, defining which type of lands are allowed in the output list.

These type of lands are called land cycles, and are defined by MTG Gamepedia.

Following is a list of supported cycles, and the name of the corresponding filter:

  • battle: Battle for Zendikar dual lands.
  • bond: Battlebond and Commander Legends crowd lands.
  • bounce: Ravnica bounce lands.
  • check: Ixalan and Innistrad check lands.
  • cycling: Amonkhet cycling lands.
  • fast: Mirrodin and Kaladesh fast lands.
  • fetch: Onslaught and Zendikar fetch lands.
  • filter: Odyssey and Future Sight filter lands.
  • horizon: Future Sight and Modern Horizons horizon lands.
  • original: The original dual lands.
  • pain: Ice Age and Apocalypse pain lands.
  • reveal: Innistrad reveal lands.
  • scry: Theros and M21 scry lands.
  • shock: Ravnica shock lands.

Additionally, two color-related filters are provided:

These are:

  • producer: This filter checks if the land produces mana of the given colors.
  • reference: This filter checks if a reference to a land type of the given colors is contained in the card text.

Without these filters, all colors could be matched.


fetch will accept all fetch lands. producer will accept all lands that can produce your colors.


Filters can be combined using four operators:

  • &: Accepts only cards matching both filters.
  • |: Accepts cards matching either filter.
  • ^: Accepts cards matching one filter or the other, but not both.
  • ~: Inverts the following filter results.

Moreover, you can group operators and filters using parenthesis to control operator precedence.


  • reference & fetch would match only fetch lands respecting your colors.
  • (producer & original) | (reference & fetch) would match either original lands producing your colors, or fetch lands of your colors.

Filter arguments

Finally, some filters can take arguments to control their behavior.

producer and reference each take exclusive and minimum_count arguments.

exclusive, which is true by default, prevents cards matching colors other than yours. For example, if you asked for white and blue, a white and red land would be excluded, because it contains red.

minimum_count sets the number of colors a land should match, among your colors, before being accepted. By default this is 2, which means lands have to produce or reference at least two of your colors to be accepted.

This filters can help you define a better behavior, for example for fetch lands it makes sense to disable the exclusive argument and set the minimum_count to 1, so that all fetch lands matching at least one of your colors are included.

To override arguments, specify your argument values in the right order, between curly braces, separated by commas.


  • producer { 0, 3 } would match all lands producing at least three of your colors, without excluding other colors.
  • reference { 0, 1 } & fetch would match fetch lands producing at least one of your colors, without excluding other colors.


In the following examples, we are using the manabase command to generate a set of lands for a white, blue and black deck.

Generate a set of lands using default settings:

manabase WUB

Generate a set of 37 maximum lands, with 1 occurrence of each land:

manabase WUB --lands=37 --occurrences

Generate a list of only fetch lands and original dual lands.

manabase WUB --filters="(producer & original) | (reference & fetch)"


This package uses poetry to manage its dependencies.


Install poetry.

Clone this repository:

git clone
cd manabase

Install manabase for development:

poetry install


Tests are written using pytest.

Once manabase has been installed, you can run tests to check if your changes did not introduce regressions.

To run the test suite, cd into the manabase folder, then run:


Pytest is configured in pyproject.toml, you do not need to specify any extra arguments.


This tool is licensed under MIT.

Non affiliation disclaimer

Manabase is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Wizards of the Coast, or any of its subsidiaries or its affiliates.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for manabase, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size manabase-0.2.0-py3-none-any.whl (28.4 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size manabase-0.2.0.tar.gz (20.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page