Skip to main content
Glama

UpGrowth: business data for Algeria, Tunisia and Morocco

Search CNRC activity codes

search_activity_codes
Read-only

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 read the CNRC status of an activity (libre, reglementee or bloquee: meta.status_note says what each means and what it does not prove) or to browse the activities of a sector. The status, the authority, the authorization and the references of a code are the CNRC's own, from its nomenclature of economic activities (NAE, executive decree 15-249 of 29 September 2015, content updated by order of the minister of commerce); that nomenclature is not a list of the activities that need a licence, and a libre code may still need a sector title. get_activity_code adds details.jo_check where UpGrowth found the Journal officiel contradicting or not settling the CNRC text. 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. Every row carries its own status, but a truncated list can hide a regulated or blocked code: search again with status=reglementee or status=bloquee, or read get_activity_code, before calling an activity free.

Input Schema

NameRequiredDescriptionDefault
qNoSearch text, at most 100 characters. Digits only, for example 5011: matches the activity codes that start with them. Words: every word must start a word of the activity label in French, Arabic or English, so a few specific words work best. Accents and letter case are ignored. Leave it out to browse with the other filters.
langNoLanguage of the labels, notes and attribution text in the answer: fr (French, the default), ar (Arabic) or en (English).fr
listNoTunisia only (country TN): nat (the default) searches the classes of the NAT 2009; authorisations searches the 100 authorisations of annex 1 (and the 27 of annex 2, those to be struck out) of décret gouvernemental n° 2018-417 of 11 May 2018, as records with their conditions, procedures, delays and legal references. Ignored for Algeria and Morocco. Get one with get_activity_code and a code such as A1-017.nat
limitNoMaximum number of results in the page, from 1 to 100. Defaults to 20. Without an API key at most 10 rows come back.
offsetNoNumber of results to skip, from 0 to 10000, to read the next pages. Defaults to 0. meta.total tells how many results match. Without an API key it must be 0: a search cannot be paged.
sectorNoKeep only activities of this sector. Algeria: the CNRC sector, given as its digit: 1 goods production, 2 artisanal production, 3 wholesale distribution, 4 import for resale, 5 retail distribution, 6 services, 7 export. Tunisia (country TN): the section letter of the NAT 2009, A to U, for example C for manufacturing. For Morocco (country MA): the section of the NMA 2010 as its letter, A to U (for example C for manufacturing, G for trade).
statusNoKeep only activities with this status: libre (the CNRC does not mark the code as regulated: not proof that no sector licence is needed), reglementee (regulated: the authorization or agrément that the text of the activity sets is required to exercise it) or bloquee (blocked: a status of the CNRC nomenclature, understood as not registrable under that code; no text of the Journal officiel read defines it and the data does not give the reason). For Tunisia (country TN): reglementee when an authorisation of annex 1 of décret 2018-417 governs the class, libre otherwise (the annex is the exclusive list), not_determined when that map is not loaded.
countryNoCountry of the data, an ISO 3166-1 alpha-2 code in any letter case: DZ for Algeria, the default, TN for Tunisia or MA for Morocco. Only live countries answer: list_countries shows them and their datasets. Any other country, or a dataset the country does not have (for example the activity nomenclature for Morocco), returns country_not_available. Without an API key only DZ answers: TN and MA return key_required.DZ

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / status / description
      Previous value: -"Keep only activities with this status: libre (free, no specific authorization needed to register), reglementee (regulated, a prior authorization or permit is required) or bloquee (blocked, cannot be registered in the trade register). For Tunisia (country TN): reglementee when an authorisation of annex 1 of décret 2018-417 governs the class, libre otherwise (the annex is the exclusive list), not_determined when that map is not loaded."New value: +"Keep only activities with this status: libre (the CNRC does not mark the code as regulated: not proof that no sector licence is needed), reglementee (regulated: the authorization or agrément that the text of the activity sets is required to exercise it) or bloquee (blocked: a status of the CNRC nomenclature, understood as not registrable under that code; no text of the Journal officiel read defines it and the data does not give the reason). For Tunisia (country TN): reglementee when an authorisation of annex 1 of décret 2018-417 governs the class, libre otherwise (the annex is the exclusive list), not_determined when that map is not loaded."
  2. Changed2 schema fields changed
    • addedInput schema / properties / list
      Added value: +{
      +  "default": "nat",
      +  "description": "Tunisia only (country TN): nat (the default) searches the classes of the NAT 2009; authorisations searches the 100 authorisations of annex 1 (and the 27 of annex 2, those to be struck out) of décret gouvernemental n° 2018-417 of 11 May 2018, as records with their conditions, procedures, delays and legal references. Ignored for Algeria and Morocco. Get one with get_activity_code and a code such as A1-017.",
      +  "enum": [
      +    "nat",
      +    "authorisations"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / status / description
      Previous value: -"Keep only activities with this status: libre (free, no specific authorization needed to register), reglementee (regulated, a prior authorization or permit is required) or bloquee (blocked, cannot be registered in the trade register). For Tunisia (country TN) every code has the status not_determined, which is also accepted here: no official text read so far says which NAT codes are free or regulated."New value: +"Keep only activities with this status: libre (free, no specific authorization needed to register), reglementee (regulated, a prior authorization or permit is required) or bloquee (blocked, cannot be registered in the trade register). For Tunisia (country TN): reglementee when an authorisation of annex 1 of décret 2018-417 governs the class, libre otherwise (the annex is the exclusive list), not_determined when that map is not loaded."
  3. Changed7 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Country of the data, an ISO 3166-1 alpha-2 code in any letter case: DZ for Algeria, the default, TN for Tunisia or MA for Morocco. Only live countries answer: list_countries shows them and their datasets. Any other country, or a dataset the country does not have, returns country_not_available."New value: +"Country of the data, an ISO 3166-1 alpha-2 code in any letter case: DZ for Algeria, the default, TN for Tunisia or MA for Morocco. Only live countries answer: list_countries shows them and their datasets. Any other country, or a dataset the country does not have (for example the activity nomenclature for Morocco), returns country_not_available. Without an API key only DZ answers: TN and MA return key_required."
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of results in the page, from 1 to 100. Defaults to 20."New value: +"Maximum number of results in the page, from 1 to 100. Defaults to 20. Without an API key at most 10 rows come back."
    • changedInput schema / properties / offset / description
      Previous value: -"Number of results to skip, from 0 to 10000, to read the next pages. Defaults to 0. meta.total tells how many results match."New value: +"Number of results to skip, from 0 to 10000, to read the next pages. Defaults to 0. meta.total tells how many results match. Without an API key it must be 0: a search cannot be paged."
    • changedInput schema / properties / sector / description
      Previous value: -"Keep only activities of this CNRC sector, given as its digit: 1 goods production, 2 artisanal production, 3 wholesale distribution, 4 import for resale, 5 retail distribution, 6 services, 7 export."New value: +"Keep only activities of this sector. Algeria: the CNRC sector, given as its digit: 1 goods production, 2 artisanal production, 3 wholesale distribution, 4 import for resale, 5 retail distribution, 6 services, 7 export. Tunisia (country TN): the section letter of the NAT 2009, A to U, for example C for manufacturing. For Morocco (country MA): the section of the NMA 2010 as its letter, A to U (for example C for manufacturing, G for trade)."
    • changedInput schema / properties / sector / enum
      Previous value: -[
      -  "1",
      -  "2",
      -  "3",
      -  "4",
      -  "5",
      -  "6",
      -  "7"
      -]New value: +[
      +  "1",
      +  "2",
      +  "3",
      +  "4",
      +  "5",
      +  "6",
      +  "7",
      +  "A",
      +  "B",
      +  "C",
      +  "D",
      +  "E",
      +  "F",
      +  "G",
      +  "H",
      +  "I",
      +  "J",
      +  "K",
      +  "L",
      +  "M",
      +  "N",
      +  "O",
      +  "P",
      +  "Q",
      +  "R",
      +  "S",
      +  "T",
      +  "U"
      +]
    • changedInput schema / properties / status / description
      Previous value: -"Keep only activities with this status: libre (free, no specific authorization needed to register), reglementee (regulated, a prior authorization or permit is required) or bloquee (blocked, cannot be registered in the trade register)."New value: +"Keep only activities with this status: libre (free, no specific authorization needed to register), reglementee (regulated, a prior authorization or permit is required) or bloquee (blocked, cannot be registered in the trade register). For Tunisia (country TN) every code has the status not_determined, which is also accepted here: no official text read so far says which NAT codes are free or regulated."
    • changedInput schema / properties / status / enum
      Previous value: -[
      -  "libre",
      -  "reglementee",
      -  "bloquee"
      -]New value: +[
      +  "libre",
      +  "reglementee",
      +  "bloquee",
      +  "not_determined"
      +]
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint, but the description discloses a great deal beyond them: unauthenticated callers get at most 10 rows with meta.truncated, paging is impossible without a key (offset must be 0), TN and MA require a key, and status semantics differ per country with not_determined as a real state. It also warns that a truncated page can hide a regulated or blocked code.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core purpose, but the body sprawls into repeated status explanations across three country paragraphs plus a restatement of the truncation caveat. The density of legal citations and per-country caveats makes it hard to scan, and some sentences duplicate schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an eight-parameter, three-country, no-output-schema search tool, the description covers return shape (code, status, labels in three languages, sector, group, upgrowth.dz URL, meta.total), authentication effects, pagination, and per-country data caveats. Nothing an agent needs to invoke or interpret it responsibly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already carries most parameter meaning; the description nonetheless adds value by tying parameters together, e.g. list=authorisations being Tunisia-only and ignored elsewhere, and country gating which datasets answer. It repeats some schema content (status definitions, sector codes), keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (search) and resource (the CNRC nomenclature of commercial activities, six-digit codes) and scopes it across three datasets. It explicitly distinguishes itself from get_activity_code, which 'adds details.jo_check', so an agent can tell the two siblings apart without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It enumerates the concrete jobs the tool serves: find the code of an activity described in French, Arabic or English; read a code's CNRC status; browse a sector's activities. It also states when to escalate (get_activity_code) and how to avoid a false 'free' conclusion after a truncated result, which is explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.