# UpGrowth: business data for Algeria, Tunisia and Morocco

> Official business data for Algeria, Tunisia and Morocco: activity codes, legal forms, tax, gazettes.

- name: io.github.Z4KARY/upgrowth-mcp
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 63/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.Z4KARY%2Fupgrowth-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.Z4KARY%2Fupgrowth-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "upgrowth-mcp": {
      "type": "http",
      "url": "https://www.upgrowth.dz/mcp",
      "headers": {
        "Authorization": "Bearer ${UPGROWTH_MCP_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${UPGROWTH_MCP_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 75
- drivers: +repository +website +reachable +uptime-100% +updated-15d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 63/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 21 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 30 of 30 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_anae_activity (destructiveHint, idempotentHint); calculate_ifu (destructiveHint, idempotentHint); get_social_contributions (destructiveHint, idempotentHint); …
- warn `tools.token_cost`: about 21,405 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 70 tool changes in 30 days
- fail `stability.rug_pull`: 4 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 30, about 21,405 tokens to load them all
- tool set hash: fc7c5f80c1e444ce15f6f62138d1acd0
- tools last changed: 2026-10-20T02:52:25.199Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.Z4KARY/upgrowth-mcp.svg)](https://protogrid.dev/servers/io.github.Z4KARY/upgrowth-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-20 `get_tax_code_article` added
  - Get one article of one of the six tax codes of Algeria in full, from the 2026 editions of the Direction générale des impôts: cidta, cpf, ctca, ce, cii or ct (search_tax_code says what each holds), by the number the code prints: 150, 282 quater, 300-3, 2 bis (Art., accents and case are ignored). Returns the code and its title, the edition, the link to the official PDF, the article id, its heading (part, title, chapter, section), its status (in_force, or abrogated: such an article holds only the word Abrogé), its text in French with the paragraphs on separate lines, its notes (the finance laws that created, amended or repealed it, as the code lists them) and the ids of the previous and the next article. The text is the DGI's consolidated edition and the legal reference stays the Journal officiel: use get_jo_act to read a finance law that a note names. An unknown article is a not_found error that lists the nearest article numbers. Use it to read an article before quoting it, and name it by code and number (for example CTCA art. 21). Algeria only (country DZ); other countries return country_not_available.
- 2026-10-20 `search_tax_code` added
  - Search the six tax codes of Algeria in their 2026 editions, as the Direction générale des impôts (DGI) publishes them, article by article: cidta (Code des impôts directs et taxes assimilées: IRG, IBS, IFU, TAP), cpf (Code des procédures fiscales: audits, assessments, penalties, appeals, limitation periods), ctca (Code des taxes sur le chiffre d'affaires: VAT), ce (Code de l'enregistrement: registration duties), cii (Code des impôts indirects) and ct (Code du timbre: stamp duty). Every word of q must appear in the article, in French, accents and case ignored (for example taux normal, retenue source, prescription); a phrase between quotes is searched as it is. Each match gives the code and its title, the article number (id, for example 150, 282 quater or 300-3), its heading (the part, title, chapter and section above it), its status (in_force or abrogated), an excerpt of about 300 characters around the rarest word and the link to the official PDF of the code; get_tax_code_article then returns the whole article with its notes. Best matches first: more hits first, a hit in the heading or at the start of the text counts more, abrogated articles rank low. Use it to find which article sets a rate, a deadline, a penalty or a condition, then read that article before quoting it, and name it by code and number (for example CIDTA art. 150). The text is the DGI's consolidated edition: the legal reference stays the Journal officiel, so read the notes of the article, which name the finance laws that created or amended it, and use get_jo_act to read such a law. Filter by code. Without an API key, at most 10 matches. Algeria only (country DZ); other countries return country_not_available.
- 2026-10-16 `list_dairas` added
  - List the daïras of Algeria, each with its communes (four-digit Algérie Poste code and name), as décret exécutif n° 91-306 du 24 août 1991 fixant la liste des communes animées par chaque chef de daïra sets them, with its amendments of 1992, 2018, 2021, 2025 and 2026 applied, read in the Journal officiel (meta.sources lists every text with its issue and PDF). The wilaya of Algiers (16) is organised in 13 circonscriptions administratives (décret présidentiel n° 2000-45), given with kind circonscription administrative. 69 wilayas, 553 daïras, 1,541 communes; Larbaa (daïra of Bouzina, Batna) has no post office and so no code. Filter by wilaya (1 to 69) and q (a daïra or commune name, accents ignored). Without an API key, at most 10 rows. Algeria only.
- 2026-10-16 `list_communes` changed (description, inputSchema)
  - before: List the communes (baladiyas) of Algeria from Algérie Poste's official data, read every day: each with its four-digit commune code, its French and Arabic names, its wilaya (number and names), its wilaya under loi n° 26-06 of 2026 when it is one of the 108 communes of the 11 wilayas that law created (wilaya_2026: its number 59 to 69 and slug), its postal codes and how many post offices and ATMs it has. Filter by wilaya (a number from 1 to 69, 59 to 69 being the wilayas of 2026, or their slug such as aflou, barika, bou-saada) and by q (a name in French or Arabic, accents ignored, or the start of a postal code). Use it to check that a commune exists, to find its postal codes, or to list the communes a delivery zone covers. Algérie Poste lists 1,540 communes (those with a post office); the law counts 1,541. Without an API key, at most 10 rows. Algeria only.
  - after: List the communes (baladiyas) of Algeria from Algérie Poste's official data, read every day: each with its four-digit commune code, its French and Arabic names, its wilaya (number and names), its wilaya under loi n° 26-06 of 2026 when it is one of the 108 communes of the 11 wilayas that law created (wilaya_2026: its number 59 to 69 and slug), its postal codes and how many post offices and ATMs it has, and its daïra (daira: name, kind, wilaya; décret exécutif n° 91-306 as amended, Algiers' circonscriptions administratives). Filter by daira, by wilaya (a number from 1 to 69, 59 to 69 being the wilayas of 2026, or their slug such as aflou, barika, bou-saada) and by q (a name in French or Arabic, accents ignored, or the start of a postal code). Use it to check that a commune exists, to find its postal codes, or to list the communes a delivery zone covers. Algérie Poste lists 1,540 communes (those with a post office); the law counts 1,541. Without an API key, at most 10 rows. Algeria only.
- 2026-10-15 `search_jo_titles` changed (description)
  - before: Search the official titles of the texts listed in the summaries (sommaires) of the Algerian Journal Officiel: laws, ordinances, decrees, orders and notices. Each match gives the year and issue number, the section heading, the title and the links to the issue page and to its official PDF. Use it to find when and where a text was published. Only the issues whose summary UpGrowth holds are searched: every year from 1962 to today (without an API key, only the current year and the two before it, and at most 10 matches: meta.free_years and meta.truncated say so; meta.sommaire_years lists the years searched). The summaries of 1962 to 2001 are read from the scanned issues: a title is listed only when two independent readings give it word for word, about 87 % of the entries, so an empty result does not prove that a text does not exist, and those hits have no upgrowth.dz page (url is null, pdf_url links the official scan). Optionally restrict it to one year. Returns a page of matches; meta.total is their number. Algeria only: no Moroccan summaries are held yet, so country MA returns country_not_available, and so does country TN.
  - after: Search the official titles of the texts listed in the summaries (sommaires) of the Algerian Journal Officiel: laws, ordinances, decrees, orders and notices. Each match gives the year and issue number, the section heading, the title and the links to the issue page and to its official PDF. Use it to find when and where a text was published. Only the issues whose summary UpGrowth holds are searched: every year from 1962 to today (without an API key, only the current year and the two before it, and at most 10 matches: meta.free_years and meta.truncated say so; meta.sommaire_years lists the years searched). The summaries of 1962 to 2001 are read from the scanned issues: a title is listed only when two of three independent readings give it word for word (the third, by Opus, settles what the first two dispute), 98 % of the entries, so an empty result does not prove that a text does not exist (search_jo_text searches their full text too), and those hits have no upgrowth.dz page (url is null, pdf_url links the official scan). Optionally restrict it to one year. Returns a page of matches; meta.total is their number. Algeria only: no Moroccan summaries are held yet, so country MA returns country_not_available, and so does country TN.
- 2026-10-14 `search_post_offices` added
  - Search Algérie Poste's post offices (kind post_office, the default) or ATMs (kind atm) by name or address words (q, accents ignored), by postal code (all five digits, or the first ones), by commune code, by wilaya, or around a place (lat and lng in decimal degrees, within radius_km, 10 by default: nearest first, with distance_km). Each post office comes with its class, address, postal code and former postal code, GPS position and commune; each ATM with whether it works. Use it to find the post office of a postal code, the offices of a delivery zone, or the nearest office or ATM to an address. Data read from Algérie Poste every day. Without an API key, at most 10 rows. Algeria only.
- 2026-10-14 `get_commune` added
  - Get one commune of Algeria by its four-digit code (from list_communes) with everything Algérie Poste publishes about it: its names, wilaya and 2026 wilaya, its postal codes, and every post office (name in French and Arabic, class, address, postal code and former postal code, GPS position) and ATM (name, whether it works, postal code, GPS position). Data read from Algérie Poste every day. Algeria only.
- 2026-10-14 `list_communes` added
  - List the communes (baladiyas) of Algeria from Algérie Poste's official data, read every day: each with its four-digit commune code, its French and Arabic names, its wilaya (number and names), its wilaya under loi n° 26-06 of 2026 when it is one of the 108 communes of the 11 wilayas that law created (wilaya_2026: its number 59 to 69 and slug), its postal codes and how many post offices and ATMs it has. Filter by wilaya (a number from 1 to 69, 59 to 69 being the wilayas of 2026, or their slug such as aflou, barika, bou-saada) and by q (a name in French or Arabic, accents ignored, or the start of a postal code). Use it to check that a commune exists, to find its postal codes, or to list the communes a delivery zone covers. Algérie Poste lists 1,540 communes (those with a post office); the law counts 1,541. Without an API key, at most 10 rows. Algeria only.
- 2026-10-14 `get_jo_act` changed (description)
  - before: Get the full text of one act of the Algerian Journal Officiel published since 2002, by its number (for example 22-299, with type when a law and a decree share the number) or by year, issue and ord as search_jo_text returns them. Returns its type, number, title, first page, the links to the issue page and the official PDF, the text itself in parts of 20,000 characters (part, parts, chars: ask the next part to read on), and named_in_titles: the earlier or later acts whose title names this one, such as the decrees amending or completing it, its corrigenda and its implementing texts. Check named_in_titles before quoting an article: the text is the one published in that issue, not a consolidated version. Without an API key, only the acts of the current year and the two before it. Algeria only (country DZ); other countries return country_not_available.
  - after: Get the full text of one act of the Algerian Journal Officiel published since 1962, by its number (for example 22-299, with type when a law and a decree share the number) or by year, issue and ord as search_jo_text returns them. Returns its type, number, title, first page, the links to the issue page and the official PDF, the text itself in parts of 20,000 characters (part, parts, chars: ask the next part to read on), and named_in_titles: the earlier or later acts whose title names this one, such as the decrees amending or completing it, its corrigenda and its implementing texts. Check named_in_titles before quoting an article: the text is the one published in that issue, not a consolidated version. For 1962 to 2001 (source scan) the text was read from the scan: a passage between [[? and ?]] is not settled yet (uncertain counts them), check it on pdf_url before quoting it; the page is the page of the scan. Without an API key, only the acts of the current year and the two before it. Algeria only (country DZ); other countries return country_not_available.
- 2026-10-14 `search_jo_text` changed (description)
  - before: Search the full text of the acts published in the Algerian Journal Officiel since 2002 (French edition: laws, ordinances, presidential and executive decrees, orders, decisions, Bank of Algeria regulations, corrigenda), not only their titles. Each match gives the year, the issue, the place of the act in the issue (ord), its type, its number when it has one, its title, its first page, an excerpt around the words and the links to the issue page and the official PDF; get_jo_act then returns the whole text. Words are matched in French with accents and case ignored and plurals folded (for example "redevance dossiers investissement"); quotes search an exact phrase, OR offers alternatives and a leading minus excludes a word. Best matches first. Use it to find which text sets a rule, a rate, an amount or a procedure, then read that text with get_jo_act before quoting it. The text is the official one as published: an act amended since appears as it was printed. For the issues before 2002, use search_jo_titles (summaries since 1962). Without an API key, only the current year and the two before it, and at most 10 matches (meta.free_years, meta.truncated). Algeria only (country DZ); other countries return country_not_available.
  - after: Search the full text of the acts published in the Algerian Journal Officiel since 1962 (French edition: laws, ordinances, presidential and executive decrees, orders, decisions, Bank of Algeria regulations, corrigenda), not only their titles. Each match gives the year, the issue, the place of the act in the issue (ord), its type, its number when it has one, its title, its first page, an excerpt around the words and the links to the issue page and the official PDF; get_jo_act then returns the whole text. Words are matched in French with accents and case ignored and plurals folded (for example "redevance dossiers investissement"); quotes search an exact phrase, OR offers alternatives and a leading minus excludes a word. Best matches first. Use it to find which text sets a rule, a rate, an amount or a procedure, then read that text with get_jo_act before quoting it. The text is the official one as published: an act amended since appears as it was printed. From 2002 the text is the one of the official PDF (source pdf); from 1962 to 2001 it was read from the scans by three independent machine readings, each word kept when two of them agree (source scan), and a passage no two readings gave alike is marked [[? ... ?]] (uncertain counts them in an act): check such a passage on the PDF before quoting it. Without an API key, only the current year and the two before it, and at most 10 matches (meta.free_years, meta.truncated). Algeria only (country DZ); other countries return country_not_available.

Full history: https://api.protogrid.dev/v1/servers/io.github.Z4KARY%2Fupgrowth-mcp/changes

## Remotes

- https://www.upgrowth.dz/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (30)

- `calculate_casnos`: Estimate the yearly contribution to CASNOS, the Algerian social security fund of the self-employed, for 2026, with the same formula as the UpGrowth calculator: a rate applied to a base that depends on the tax regime, between a floor and a ceiling indexed on the minimum wage (SNMG). Give the regime and, for most regimes, the amount. Returns the yearly, monthly and quarterly contribution with the figures it was computed from, and its limitations: read data.limitations before quoting the result. It is an estimate from public texts, not tax or legal advice. For Tunisia (country TN) it gives the CNSS contribution of the self-employed workers of the non-agricultural sector: regime INDEPENDANT_NON_AGRICOLE and income_class (1 to 10), the quarterly amount the CNSS prints for that class (rate 14.71 %), the yearly amount (four quarters) and the monthly equivalent, in Tunisian dinars, with the period the scale is valid for and the full scale of ten classes; the revenue is not used. Other Tunisian self-employed schemes (agricultural, fishing, craftsmen) are regimes of the same tool, and the Tunisian flat tax is calculate_ifu. Tunisia needs an API key. Morocco (country MA): regime AUTO_ENTREPRENEUR returns the bracket, the quarterly and yearly AMO contribution (supplementary rights, decree 2-21-928) and the pension contribution at 1.57 times it, with the payment dates; regime TRAVAILLEUR_NON_SALARIE returns, for a category (doctor, notary, driver, farmer...), the forfait income multiple set by its decree with its Bulletin officiel, and the rates (AMO 6.37 percent, pension 10 percent of the forfait income, decrees 2-18-623 and 2-18-625); with minimum_wage_hourly it also gives the forfait income and the contributions in dirhams.
- `calculate_ifu`: Estimate the IFU (Impôt Forfaitaire Unique), the flat tax of Algerian micro-businesses, for 2026, with the same formula as the UpGrowth calculator: a rate on the yearly turnover that depends on the regime (auto-entrepreneur or general) and, for the general regime, on the kind of activity, with a minimum tax. Returns the inputs, the base, the rate, whether the minimum applied and the result, and its limitations: read data.limitations before quoting the result. It is an estimate from public texts, not tax or legal advice. For Tunisia (country TN, regime ae) it estimates the single contribution of the auto-entrepreneur, a yearly amount that does not depend on the turnover (which is only compared with the ceiling of 75,000 dinars): 200 dinars of income tax in a communal zone or 100 dinars elsewhere (zone), plus the social part of the first bracket of the CNSS scale; activity is required and, for a craft activity of the order of 23 July 2002 (crafts), the social part is 7.5 % of two thirds of the hourly SMIG over 200 hours a month (SMIG of décret 2026-67, or smig_monthly_tnd). Tunisia also serves regime forfait (option, zone, rural) and regime general (net_income: the income tax scale). Tunisia needs an API key. For Morocco (country MA) it computes the tax of the auto-entrepreneur on the turnover collected (regime ae only, activity required: 0.5 % for production and commerce up to 500 000 dirhams, 1 % for services up to 200 000 dirhams), with amounts in dirhams (tax_mad); the contribution professionnelle unique is not covered. Morocco needs an API key.
- `creation_legal_forms`: List the legal forms available to create a company in Algeria (for example SARL, EURL, SPA) with the number of partners allowed, the minimum capital and the official State fees of each creation step (trade register, legal announcements and so on) for 2026, with the total of the published fees. A step whose price no official text fixes, such as the notary or the bank, is flagged as not priced instead of guessed. It lists State fees only, never the fees of a service provider, so it is not a quote for a creation. For Tunisia (country TN) it lists the legal forms of the commercial companies code (SARL, SUARL, SA, SNC, SCS) and the sole trader, with the partners allowed, the minimum capital, the liability and the registration steps at the National Register of Enterprises, each with its official fee in Tunisian dinars, its documents and its delay. For Morocco (country MA) it lists the SARL, the single-member SARL (SARL AU), the SA, the SAS, the SNC and the SCS, the sole trader and the auto-entrepreneur status, with the partners allowed, the minimum capital, the liability and the creation steps (negative certificate of OMPIC, statutes, registration of the deeds, professional tax and tax identification, trade register, CNSS affiliation, publication in the official gazette), each with its official fee in Moroccan dirhams when an official page states one. Tunisia and Morocco need an API key.
- `customs_tariff_chapters`: List the chapters (two-digit codes) of one section of the Algerian customs tariff with their titles, for example the chapters of section XVI. Use it after customs_tariff_sections. The same for the Tunisian tariff with country TN (French titles; needs an API key) and for Morocco with country MA (harmonized system 2022, French titles; needs an API key). This dataset holds no duty rates and no tariff lines below the chapter level.
- `customs_tariff_sections`: List the sections of the Algerian customs tariff, the first level of the harmonized system classification of goods, each with its Roman numeral, its title and the range of its chapters. Use it to locate a family of products before listing the chapters of a section. For Tunisia (country TN) it lists the sections of the Tunisian customs tariff, with the titles in French read on the site of the General Directorate of Customs (douane.gov.tn); Tunisia needs an API key. For Morocco (country MA) it lists the 21 sections of the harmonized system 2022 in French (the ADII tariff adopts it; MA needs an API key). This dataset holds no duty rates and no tariff lines below the chapter level.
- `get_activity_code`: Get one activity of the Algerian CNRC nomenclature by its six-digit code, for example 101101: its status (free, regulated or blocked), its labels in French, Arabic and English, its sector and group, the URL of its page on upgrowth.dz and, in French, the official text of the code: the supervising authority, the type of authorization, what the activity covers, its accessory activities and its legal references. Use it when the user already gives a code, or after search_activity_codes. Returns an error when the code does not exist. For Tunisia (country TN) pass the four-digit NAT 2009 class code, for example 0111: you get its label in French, its section, division and group, its status (reglementee with the authorisations of annex 1 of décret 2018-417 that govern it and their legal references, or libre because that list is exclusive) and the official source. Pass A1-017 or A2-005 to get one authorisation of the decree as a record. For Morocco (country MA) pass the four-digit NMA 2010 code, for example 0111: you get its labels, section, branch, sub-branch and its status not_determined.
- `get_anae_activity`: Get one activity of the Algerian ANAE nomenclature (auto-entrepreneur status) by its six-digit code, for example 010101: its labels in French, Arabic and English and its domain. Use it when the user gives a code, or after search_anae_activities. Returns an error when the code does not exist. In Algeria an activity that has a regime of its own carries the optional object regime, present only then and today only for 080101, micro-importation: note (the facts in French, Arabic and English: who may import, at most 1,800,000 DZD of goods per trip and two trips a month, the card and the general authorisation of the Ministry of Foreign Trade, the conditions, the advantages, the obligations, the exclusions), legal_reference (executive decree n° 25-170 of 28 June 2025, JO n° 40 of 2025) and source_url (the Journal Officiel PDF). That activity is NOT governed by the ordinary auto-entrepreneur limits: never present the 5 million DZD yearly turnover ceiling of the ordinary status as its limit, and read regime.note before answering about it. For Tunisia (country TN) pass the key regime: you get who qualifies (Tunisian nationality, individual practice, the sectors, the ceiling of 75,000 dinars of yearly turnover), the exclusions, the duration, the registration, the single contribution with what it replaces and what it is made of, the late payment fine and the deregistration, each with the article of the law it comes from. The official list of activities is not loaded: say so, and never present the absence of an activity as an exclusion. For Morocco (country MA) pass the key of an excluded profession (for example avocats) to get it with the regime, or the key regime to get the regime alone: the definition, the turnover ceilings (500 000 and 200 000 dirhams), the tax rates (0.5 % and 1 %), the obligations and the legal texts (law 114-13 and its decrees).
- `get_commune`: Get one commune of Algeria by its four-digit code (from list_communes) with everything Algérie Poste publishes about it: its names, wilaya and 2026 wilaya, its postal codes, and every post office (name in French and Arabic, class, address, postal code and former postal code, GPS position) and ATM (name, whether it works, postal code, GPS position). Data read from Algérie Poste every day. Algeria only.
- `get_jo_act`: Get the full text of one act of the Algerian Journal Officiel published since 1962, by its number (for example 22-299, with type when a law and a decree share the number) or by year, issue and ord as search_jo_text returns them. Returns its type, number, title, first page, the links to the issue page and the official PDF, the text itself in parts of 20,000 characters (part, parts, chars: ask the next part to read on), and named_in_titles: the earlier or later acts whose title names this one, such as the decrees amending or completing it, its corrigenda and its implementing texts. Check named_in_titles before quoting an article: the text is the one published in that issue, not a consolidated version. For 1962 to 2001 (source scan) the text was read from the scan: a passage between [[? and ?]] is not settled yet (uncertain counts them), check it on pdf_url before quoting it; the page is the page of the scan. Without an API key, only the acts of the current year and the two before it. Algeria only (country DZ); other countries return country_not_available.
- `get_jo_issue`: Get one issue of the Algerian Journal Officiel by year and number: the links to its official editions and, when UpGrowth holds it, its summary (sommaire): the date and, section by section, the official titles of the texts published in the issue. The summary exists only for some years and issues; otherwise data.sommaire is null and data.note says why. For 1962 to 2001 the summary is read from the scanned issue: data.sommaire.source says so, data.sommaire.titles_held_back counts the entries the readings did not agree on (not listed) and data.sommaire.complete is true when none is missing. For Morocco (country MA) pass the number of the Bulletin officiel, a continuous series (for example 7522): you get its publication date, the links to its French and Arabic editions and, in data.supplements, the supplements of that number (bis, ter); data.sommaire is always null, no Moroccan summary is held yet. For Tunisia (country TN) pass the number of the issue within the year (for example 97): you get its publication date and whether its French and Arabic editions exist, with no direct PDF link; data.sommaire is always null. Use it to find which texts an issue published. Without an API key only Algeria answers, for the current year and the two before it (older years return key_required).
- `get_social_contributions`: Get the social contributions and payroll levies in a country in 2026, each with its base, its legal source and the official page it was read on. Algeria (DZ, the default country): the CNAS social security contribution on salaries with its employer, employee and social works shares, the special categories of workers, and the CASNOS contribution of the self-employed with its rate, its base, its floor and ceiling and the auto-entrepreneur flat option. Tunisia (TN): the social security (CNSS) contribution with its employer and employee shares, the work accident range, the complementary pension regime and the payroll levies (vocational training tax TFP and housing fund contribution FOPROLOS). Morocco (MA): the CNSS contributions (family allowances, short-term and long-term social benefits with their salary ceiling), the compulsory health insurance (AMO) and the vocational training tax (TFP), with the employer and employee shares. For an Algerian estimate use calculate_casnos and calculate_ifu. Tunisia and Morocco need an API key.
- `get_support_schemes`: Get the business support schemes and investment rules of Algeria as the Journal officiel sets them, each item with who it applies to, its amount when the text gives one, its article and the official Journal officiel issue: investment law 22-18 and its 2022 decrees (the investment regimes and their advantages and durations, the zones of particular interest, the structuring investments, the guarantees including the transfer of capital and income, the non-eligible activities, and the processing fees of the Algerian investment promotion agency AAPI: 60,000 DA for the registration certificate of a project under 2 billion DA, 400,000 DA for a larger or a foreign one, decree 22-299 art. 23), the start-up, innovative project and incubator labels (decree 20-254 as amended in 2021 and 2025) and their tax advantages rule (decree 21-170 as amended in 2023), and the NESDA scheme (project holders aged 18 to 55, self-financed micro-enterprise, rent loan up to 500,000 DA). The micro-credit (ANGEM) amounts and the NESDA and CNAC financing levels are not included yet (several amendments still being read): do not quote figures for them. Filters: q (words, accents ignored, e.g. redevance, transfert, label) and treatment (investment_regime, investment_zone, investment_guarantee, investment_fees, non_eligible, label, startup_tax, nesda, cnac). Algeria only (country DZ); other countries return country_not_available.
- `get_tax_calendar`: Get the legal filing and payment deadlines of businesses in Algeria, each with who must file, the deadline as the text words it, its article and the official text it was read in (the 2026 tax codes of the Directorate General of Taxes, the CNAS and CASNOS sites): the monthly VAT return and payment (G50, within the first 20 days of each month, CTCA art. 76-1), withholding taxes (by the 20th, monthly or quarterly, CIDTA art. 129-1), the IFU forecast return G12 and the IFU minimum (by 30 June), the IFU payment in full or in instalments (50 %, then 1-15 September and 1-15 December), the IFU final return G12 bis (by 20 January of the next year), the annual profit return (by 30 April), the annual summary statement ERA (before 30 September), the annual IRG return (by 30 June), the penalty for an annual return not filed (25 %, 35 % after a formal notice), the CNAS contributions (within 30 days of each quarter or month), the CNAS annual declaration DAS (within 30 days of the year end) and affiliation (within 10 days of hiring), and the CASNOS annual contribution (before 30 June). A deadline on a legal holiday moves to the next working day. The yearly extensions decided by the DGI are not listed. Filters: q (words, accents ignored, e.g. "IFU" or "CNAS") and treatment (monthly, quarterly, annual, ifu, social, penalty, general). Algeria only (country DZ); other countries return country_not_available.
- `get_tax_code_article`: Get one article of one of the six tax codes of Algeria in full, from the 2026 editions of the Direction générale des impôts: cidta, cpf, ctca, ce, cii or ct (search_tax_code says what each holds), by the number the code prints: 150, 282 quater, 300-3, 2 bis (Art., accents and case are ignored). Returns the code and its title, the edition, the link to the official PDF, the article id, its heading (part, title, chapter, section), its status (in_force, or abrogated: such an article holds only the word Abrogé), its text in French with the paragraphs on separate lines, its notes (the finance laws that created, amended or repealed it, as the code lists them) and the ids of the previous and the next article. The text is the DGI's consolidated edition and the legal reference stays the Journal officiel: use get_jo_act to read a finance law that a note names. An unknown article is a not_found error that lists the nearest article numbers. Use it to read an article before quoting it, and name it by code and number (for example CTCA art. 21). Algeria only (country DZ); other countries return country_not_available.
- `get_tax_rates`: Get the business tax rates in force in 2026 for a country: the corporate income tax (the standard rate where there is one, the particular rates by sector or activity and the minimum tax), the value added tax rates and the main withholding tax rates, plus, for Algeria, the IRG income tax scale that applies to salaries (personal_income_tax) and the IFU flat tax of micro-businesses (flat_tax), and, for Morocco, the IR income tax scale (personal_income_tax) and the flat tax of the auto-entrepreneur (flat_tax), each with the legal article it comes from, the date it applies from when the text gives one and the official page it was read on. Algeria (DZ, the default country), Tunisia (TN) and Morocco (MA) have this dataset; for Tunisia, personal_income_tax and flat_tax are null. It is a reading of public texts, not tax advice. Tunisia and Morocco need an API key.
- `get_vat_regimes`: Get the VAT (TVA) regimes of Algeria in force in 2026, each item with its legal basis (article of the Code des taxes sur le chiffre d'affaires and the finance law that set it) and the official text it was read in: the standard rate of 19 % (CTCA art. 21); the reduced rate of 9 %, which applies ONLY to the items listed in CTCA article 23 (for example the education, teaching and vocational training supplied by State-approved enterprises since LF 2026 art. 53, new housing, medical acts, rail and bus passenger transport, listed food products, electricity and gas for small consumption, taxis); the exemptions (CTCA art. 8, 9, 11, 13 and 42: exports with the right to deduct, listed staples, insurance, purchases under franchise, labelled start-ups' equipment...); what is outside the scope (IFU taxpayers and auto-entrepreneurs, CTCA art. 8-2); and the rules that no longer exist (no 0 % rate since the 2020 supplementary finance law; online sales left the 9 % list in LF 2022 and are taxed at 19 %). Use it before saying which VAT rate applies to an activity: an activity that is not in the 9 % list or the exemptions is taxed at 19 %, unless the business is under the IFU or the auto-entrepreneur status. Filters: q (words that must all appear, accents ignored, e.g. "formation"), treatment (standard_19, reduced_9, exempt, outside_scope, abrogated, regime, territoriality) and in_force (false also lists the abrogated rules). Algeria only (country DZ); other countries return country_not_available.
- `get_wilaya`: Get one Algerian wilaya by its two-digit code, for example 16 for Alger: its names, capital, region, population and the details of its local CNRC (trade register) and CASNOS (social security of the self-employed) offices. For Tunisia (country TN) pass the governorate code, for example 11 for Tunis: its ISO 3166-2 code, national statistics (INS) code, names in the three languages and chief town. For Morocco (country MA) pass the region code, for example 06 for Casablanca-Settat: its ISO 3166-2 code, names in the three languages and chief town. Returns an error when the code is unknown. Use list_wilayas to see the codes. Tunisia and Morocco need an API key.
- `list_communes`: List the communes (baladiyas) of Algeria from Algérie Poste's official data, read every day: each with its four-digit commune code, its French and Arabic names, its wilaya (number and names), its wilaya under loi n° 26-06 of 2026 when it is one of the 108 communes of the 11 wilayas that law created (wilaya_2026: its number 59 to 69 and slug), its postal codes and how many post offices and ATMs it has, and its daïra (daira: name, kind, wilaya; décret exécutif n° 91-306 as amended, Algiers' circonscriptions administratives). Filter by daira, by wilaya (a number from 1 to 69, 59 to 69 being the wilayas of 2026, or their slug such as aflou, barika, bou-saada) and by q (a name in French or Arabic, accents ignored, or the start of a postal code). Use it to check that a commune exists, to find its postal codes, or to list the communes a delivery zone covers. Algérie Poste lists 1,540 communes (those with a post office); the law counts 1,541. Without an API key, at most 10 rows. Algeria only.
- `list_countries`: List the countries this server has business data for: for each its ISO code, its names in French, Arabic and English, the languages and the currency, its status (live: the data is served, planned: announced and not served yet) and the datasets it has. Algeria (DZ) is live with twelve datasets, the nine of its first release and its tax rates, social contributions and institutions, and Tunisia (TN) and Morocco (MA) with five each (governorates or regions, company legal forms, tax rates, social contributions, institutions); Morocco (MA) also has the index of its official gazette, the Bulletin officiel (list_jo_years, list_jo_issues, get_jo_issue), and Tunisia (TN) the index of its own, the Journal Officiel de la République Tunisienne (JORT), through the same three tools. Tunisia (TN) also has the activity nomenclature NAT 2009 (search_activity_codes, get_activity_code), the sections and chapters of its customs tariff (customs_tariff_sections, customs_tariff_chapters) and the CNSS contribution of the self-employed (calculate_casnos), the regime of the auto-entrepreneur as the finance law 2023 states it (search_anae_activities, get_anae_activity with the key regime; the official list of activities is not loaded) and the single contribution of the auto-entrepreneur (calculate_ifu with regime ae). Morocco (MA) also has the NMA 2010 activity nomenclature (activities), the auto-entrepreneur regime with its excluded professions (anae) and the auto-entrepreneur tax calculator (ifu). Use it first to see which countries and datasets exist before asking another tool for a country, or after a call came back country_not_available. Every country carries free_access: true when it answers without an API key (today Algeria only), false when it needs one. It takes no country, only the optional lang.
- `list_dairas`: List the daïras of Algeria, each with its communes (four-digit Algérie Poste code and name), as décret exécutif n° 91-306 du 24 août 1991 fixant la liste des communes animées par chaque chef de daïra sets them, with its amendments of 1992, 2018, 2021, 2025 and 2026 applied, read in the Journal officiel (meta.sources lists every text with its issue and PDF). The wilaya of Algiers (16) is organised in 13 circonscriptions administratives (décret présidentiel n° 2000-45), given with kind circonscription administrative. 69 wilayas, 553 daïras, 1,541 communes; Larbaa (daïra of Bouzina, Batna) has no post office and so no code. Filter by wilaya (1 to 69) and q (a daïra or commune name, accents ignored). Without an API key, at most 10 rows. Algeria only.
- `list_institutions`: List the key public bodies a company deals with in a country, each with its official website, a one-line role and the official page it was read on. Use it to find which body handles a formality. Algeria (DZ, the default country): the trade register (CNRC), the investment promotion agency (AAPI), the tax administration (DGI), social security (CNAS for employees, CASNOS for the self-employed), customs, the statistics office (ONS), the Bank of Algeria and the auto-entrepreneur agency (ANAE). Tunisia (TN): the business register, the investment authority, the industry agency, the tax administration, social security, customs, the statistics institute and the central bank. Morocco (MA): the regional investment centres (CRI), the company register office (OMPIC), the tax administration, social security, customs, the statistics office (HCP) and the central bank. The list is short and takes no filter. Tunisia and Morocco need an API key.
- `list_jo_issues`: List the issues of the Algerian Journal Officiel for one year: for each issue its number, whether the French and Arabic editions exist with the links to their official PDF files on joradp.dz, and whether UpGrowth holds its summary. For Morocco (country MA) it lists the issues of the Bulletin officiel for one year, from 1912: for each issue its number, its publication date and the links to its French and Arabic editions on sgg.gov.ma (editions.fr and editions.ar, each with available true or false and pdf_url); a supplement (bis, ter) is listed beside its issue, with its suffix. For Tunisia (country TN) it lists the issues of the JORT for one year, from 1956: for each issue its number within the year, its publication date and whether its French and Arabic editions exist; the official site gives no direct link to the PDF files, so pdf_url is null. Returns an error when no issue is indexed for the year. Use it to find the number of an issue, then get_jo_issue to see what the issue contains. Without an API key only Algeria answers, for the current year and the two before it (older years return key_required), and at most 10 issues come back: meta.truncated says when more exist.
- `list_jo_years`: List the years covered by the index of the Journal Officiel de la République Algérienne (JORA), the official gazette in which Algerian laws, ordinances, decrees and orders are published, from 1962, newest year first. For each year: its number of issues, the last issue number, how many issues have a French and an Arabic edition, and for how many issues UpGrowth holds a summary. For Morocco (country MA) it lists the years of the Bulletin officiel du Royaume du Maroc, the Moroccan official gazette, from 1912: its French and Arabic editions (the French translation edition holds fewer issues) and no summaries. For Tunisia (country TN) it lists the years of the Journal Officiel de la République Tunisienne (JORT), the Tunisian official gazette, from 1956: its French and Arabic editions and no summaries. Use it first, to see which years exist before listing the issues of a year. Without an API key only Algeria answers, and meta.free_years lists the years it may read: the other years need a key. Takes only the optional lang and country.
- `list_wilayas`: List the wilayas (provinces) of Algeria: 69 since loi n° 26-06 of 4 April 2026 (Journal officiel n° 25): the 58 numbered ones, then the 11 created by that law (Aflou, Barika, El Kantara, Bir El Ater, El Aricha, Ksar Chellala, Aïn Ouessara, Messaad, Ksar El Boukhari, Bou Saada, El Abiodh Sidi Cheikh), numbered 59 to 69 by décret présidentiel n° 26-206 of 25 May 2026 (Journal officiel n° 40), which come with their mother wilaya, their communes and in_place_by (their mother wilaya runs them until 31 December 2026 at the latest). For each wilaya in the dataset, with their two-digit code, their names in the three languages, capital, region and population, the address and phone of the local CNRC (trade register) office and the address of the local CASNOS (social security of the self-employed) office. Use it to turn a wilaya code into a name or the reverse, or to find the local offices for a company registration or a CASNOS affiliation. For Tunisia (country TN) it lists the 24 governorates instead: code, ISO 3166-2 code, national statistics (INS) code, names in the three languages, chief town and the official source, and the answer names every page it was read on. For Morocco (country MA) it lists the 12 regions of the 2015 division the same way: code, ISO 3166-2 code, names in the three languages, chief town and the official source. The list is short and takes no filter. Tunisia and Morocco need an API key.
- `search_activity_codes`: Search the official Algerian nomenclature of commercial activities kept by the CNRC (Centre National du Registre du Commerce): the six-digit codes written on a trade register entry. Use it to find the code of an activity described in French, Arabic or English, to check whether an activity is free, regulated (prior authorization needed) or blocked, or to browse the activities of a sector. Returns a page of activities, each with its code, status, labels in the three languages, sector, group and the URL of its page on upgrowth.dz. meta.total is the number of matches. For Tunisia (country TN) it searches the official Tunisian nomenclature of activities, the NAT 2009 of the national statistics institute (INS): four-digit class codes (01.11 is written 0111), labels in French only, a section letter A to U as sector, each record citing its official source. The NAT is a statistical classification, not the list of activities that need an authorization: the status comes from a hand-reviewed map of its classes to the authorisations of annex 1 of décret 2018-417, the exclusive list (reglementee with the authorisations and their legal references, libre because the list is exclusive), never libre by default: without the map the status is not_determined. With list=authorisations it searches the authorisations themselves. Tunisia needs an API key. For Morocco (country MA) it searches the official NMA 2010 nomenclature of the Haut-Commissariat au Plan instead: four-digit codes, labels in French, the section letter A to U as sector, the branch and the sub-branch as group; the nomenclature is statistical and gives no authorization regime, so every Moroccan code has the status not_determined, never free. Morocco needs an API key. Without an API key at most 10 rows come back and meta.truncated says when more matched, so do not present such a list as complete.
- `search_anae_activities`: Search the official ANAE nomenclature: the list of activities that the Agence Nationale de l'Auto-Entrepreneur opens to the auto-entrepreneur status in Algeria, grouped in domains. Use it to check whether an activity can be practised as an auto-entrepreneur and to find its six-digit code. Returns a page of activities with code, labels and domain. meta.total is the number of matches. In Algeria an activity that has a regime of its own, today 080101 (micro-importation), also carries the object regime: read it before answering about that activity, it is not the ordinary auto-entrepreneur regime (see get_anae_activity). For Morocco (country MA) the status is defined by exclusion: it returns the professions that decree 2-15-263 excludes from the auto-entrepreneur status (architects, lawyers, doctors, notaries and so on), each with key (an UpGrowth identifier, code is null: Morocco gives them no code), status excluded and its legal basis; it holds no list of eligible activities. Morocco needs an API key. Without an API key at most 10 rows come back and meta.truncated says when more matched, so do not present such a list as complete. For Tunisia (country TN) there is no list of activities: the one record is the regime of the auto-entrepreneur as the finance law 2023 states it (key regime), and meta.activity_list says that the official list of activities is not loaded, so an activity that is not in the answer is neither admitted nor excluded: never tell a user it is not eligible. Tunisia needs an API key.
- `search_jo_text`: Search the full text of the acts published in the Algerian Journal Officiel since 1962 (French edition: laws, ordinances, presidential and executive decrees, orders, decisions, Bank of Algeria regulations, corrigenda), not only their titles. Each match gives the year, the issue, the place of the act in the issue (ord), its type, its number when it has one, its title, its first page, an excerpt around the words and the links to the issue page and the official PDF; get_jo_act then returns the whole text. Words are matched in French with accents and case ignored and plurals folded (for example "redevance dossiers investissement"); quotes search an exact phrase, OR offers alternatives and a leading minus excludes a word. Best matches first. Use it to find which text sets a rule, a rate, an amount or a procedure, then read that text with get_jo_act before quoting it. The text is the official one as published: an act amended since appears as it was printed. From 2002 the text is the one of the official PDF (source pdf); from 1962 to 2001 it was read from the scans by three independent machine readings, each word kept when two of them agree (source scan), and a passage no two readings gave alike is marked [[? ... ?]] (uncertain counts them in an act): check such a passage on the PDF before quoting it. Without an API key, only the current year and the two before it, and at most 10 matches (meta.free_years, meta.truncated). Algeria only (country DZ); other countries return country_not_available.
- `search_jo_titles`: Search the official titles of the texts listed in the summaries (sommaires) of the Algerian Journal Officiel: laws, ordinances, decrees, orders and notices. Each match gives the year and issue number, the section heading, the title and the links to the issue page and to its official PDF. Use it to find when and where a text was published. Only the issues whose summary UpGrowth holds are searched: every year from 1962 to today (without an API key, only the current year and the two before it, and at most 10 matches: meta.free_years and meta.truncated say so; meta.sommaire_years lists the years searched). The summaries of 1962 to 2001 are read from the scanned issues: a title is listed only when two of three independent readings give it word for word (the third, by Opus, settles what the first two dispute), 98 % of the entries, so an empty result does not prove that a text does not exist (search_jo_text searches their full text too), and those hits have no upgrowth.dz page (url is null, pdf_url links the official scan). Optionally restrict it to one year. Returns a page of matches; meta.total is their number. Algeria only: no Moroccan summaries are held yet, so country MA returns country_not_available, and so does country TN.
- `search_post_offices`: Search Algérie Poste's post offices (kind post_office, the default) or ATMs (kind atm) by name or address words (q, accents ignored), by postal code (all five digits, or the first ones), by commune code, by wilaya, or around a place (lat and lng in decimal degrees, within radius_km, 10 by default: nearest first, with distance_km). Each post office comes with its class, address, postal code and former postal code, GPS position and commune; each ATM with whether it works. Use it to find the post office of a postal code, the offices of a delivery zone, or the nearest office or ATM to an address. Data read from Algérie Poste every day. Without an API key, at most 10 rows. Algeria only.
- `search_tax_code`: Search the six tax codes of Algeria in their 2026 editions, as the Direction générale des impôts (DGI) publishes them, article by article: cidta (Code des impôts directs et taxes assimilées: IRG, IBS, IFU, TAP), cpf (Code des procédures fiscales: audits, assessments, penalties, appeals, limitation periods), ctca (Code des taxes sur le chiffre d'affaires: VAT), ce (Code de l'enregistrement: registration duties), cii (Code des impôts indirects) and ct (Code du timbre: stamp duty). Every word of q must appear in the article, in French, accents and case ignored (for example taux normal, retenue source, prescription); a phrase between quotes is searched as it is. Each match gives the code and its title, the article number (id, for example 150, 282 quater or 300-3), its heading (the part, title, chapter and section above it), its status (in_force or abrogated), an excerpt of about 300 characters around the rarest word and the link to the official PDF of the code; get_tax_code_article then returns the whole article with its notes. Best matches first: more hits first, a hit in the heading or at the start of the text counts more, abrogated articles rank low. Use it to find which article sets a rate, a deadline, a penalty or a condition, then read that article before quoting it, and name it by code and number (for example CIDTA art. 150). The text is the DGI's consolidated edition: the legal reference stays the Journal officiel, so read the notes of the article, which name the finance laws that created or amended it, and use get_jo_act to read such a law. Filter by code. Without an API key, at most 10 matches. Algeria only (country DZ); other countries return country_not_available.
