Prefeitura BA Salvador: NFS-e (Nota Fiscal Eletrônica de Serviços)
Server Details
Prefeitura BA Salvador: NFS-e (Nota Fiscal Eletrônica de Serviços), official-source lookup. Platform
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- mcp-dir/pref_ba_salvador_nfs-mcp
- GitHub Stars
- 0
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.2/5 across 7 of 7 tools scored.
Most tools are individually distinct, and the NFS-e consult tool is clearly separated from the platform utilities. However, authenticate/connect both deal with credentials and connection state, while marketplace/toolkit_info overlap in installed-MCP awareness, so an agent could misselect without reading the long descriptions.
Names are inconsistent: authenticate, connect, marketplace, report_bug, show_version, and toolkit_info are generic single words, while the only domain tool uses the snake_case pref_ba_salvador_nfs_consultar. There is no shared verb_noun pattern or recognizable style across the set.
Seven tools is a moderate count and not inherently excessive. But six are generic platform/meta tools and only one is specific to NFS-e, so the number feels mismatched to the server's stated domain.
For an NFS-e server, the set only provides a single consultation tool and no other lifecycle operations such as issuing, canceling, or downloading invoices. The platform tools do not fill that domain gap; they only manage the environment.
Available Tools
7 toolsauthenticateAIdempotentInspect
MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header Authorization: Bearer <token> for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "" } after the user pastes, or with no args to get the link.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains important behavioral details: it supplies a login link when called without args, accepts a JWT for session-only authentication, and distinguishes permanent header-based config from transient token-based login. This context exceeds the basic idempotent/non-destructive annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately wordy but every clause contributes useful guidance. The flow from permanent config to session-only token to no-args link is logically structured and compact enough for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple optional-parameter tool with no output schema, the description is complete: it tells the agent when to call witf token, when to call with no args, and what kind of result to expect. No critical invocation context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single undocumented optional string 'token', and the description fully compensates: it specifies that the token is the JWT to paste and that calling with no args returns the login link. This is essential meaning the schema alone lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly explains the tool's purpose: authenticating MCP.AI users for IDE agents via browser login and token entry. It is specific about the authentication resource and flow, but does not explicitly distinguish itself from sibling tools like 'connect'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong operational guidance: best practice is adding the token to config for a permanent connection, while pasting the token here is session-only. It does not, however, discuss when to use alternative tools or explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connectARead-onlyIdempotentInspect
Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the bar is lower. The description adds valuable behavior context, explaining the authenticated field, pending array, and URL outputs in different states. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence adds specific behavioral detail. It is concise with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (zero params, no output schema), the description covers the key return states and URLs well. It could mention partial connection states or what pending[] contains, but it is sufficiently complete for a status-checking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description does not need to explain any. Per the rubric, a zero-parameter tool receives a baseline score of 4, and the description appropriately omits parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns connection status and URLs, using the specific verb 'Returns' and identifying the resource. It distinguishes itself from sibling tools like authenticate, which performs authentication, by focusing on status inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when different outputs occur (all connected vs. missing credentials), implying this is for checking status rather than authenticating. It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketplaceAInspect
The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/ link that opens without login.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| action | No | search | |
| mcp_id | No | ||
| message | No | ||
| tool_id | No | ||
| arguments | No | {} | |
| immediate | No | ||
| tier_slug | No | ||
| prompt_body | No | ||
| prompt_slug | No | ||
| prompt_tool | No | ||
| prompt_vars | No | {} | |
| conversation | No | [] | |
| prompt_title | No | ||
| request_name | No | ||
| cancel_reason | No | ||
| cancel_comment | No | ||
| prompt_targets | No | ||
| report_context | No | ||
| prompt_category | No | ||
| request_details | No | ||
| prompt_description | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations are sparse (openWorldHint=true, destructiveHint=false), the description adds extensive behavioral context: invoke runs one-off without installation, returns connect links for credentials and checkout links for payment, requires workspace owner/admin for writes, and distinguishes installed_in_toolkit vs installed_in_workspace. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph but each sentence adds value—explaining the invoke-vs-install distinction, billing/auth links, and prompt library. It is front-loaded with the core purpose and the flow is logical. Although lengthy, the complexity of the tool justifies the prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's breadth (14 actions, 23 params, no output schema), the description covers the primary flows (search→describe→invoke), auth requirements, payment/connect scenarios, installation semantics, and the promp library—far more than a typical tool. It anticipates edge cases (empty wallet, missing credentials) and explains return behaviors (connect link, checkout link), making it highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 23 parameters and 0% schema description coverage, the description must compensate. It explains the role of 'action' and alludes to tool_id and arguments in the core flow, but leaves the majority of parameters (limit, query, message, prompt_vars, conversation, prompt_targets, etc.) unexplained. It gives meaning to the action enum but not to most fields, failing to bridge the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly establishes 'marketplace' as the central hub for discovering, describing, invoking, installing, and managing MCPs and prompts. It enumerates specific actions (search, describe, invoke, install, etc.) and distinguishes it from siblings by detailing the dispatch workflow. It is far from a tautology and provides concrete resource contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'prefer invoke for a single/occasional use' vs 'Use install only to make an MCP PERMANENT', and explains that invoke works even for non-installed MCPs. It also differentiates subscribe/cancel, report_bug, request_mcp, and the prompt library actions, giving clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pref_ba_salvador_nfs_consultarARead-onlyIdempotentInspect
Prefeitura BA Salvador: NFS-e (Nota Fiscal Eletrônica de Serviços), consulta em fonte oficial. Hospedado pela plataforma, sem credenciais da plataforma, pague por consulta com crédito pré-pago. Consulta informação de fontes e órgãos oficiais brasileiros (a mesma disponível ao cidadão), não é dado sigiloso. O cliente é o controlador dos dados e responde pela finalidade legítima (LGPD).
| Name | Required | Description | Default |
|---|---|---|---|
| cpf | No | ||
| cnpj | No | ||
| numero_nota | Yes | ||
| codigo_verificacao | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's additional disclosure of payment-per-query, no platform credentials needed, and LGPD data responsibility adds meaningful context beyond the structured fields. It does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, then adds payment, data source, and LGPD context. It is compact enough, though it could arguably drop the LGPD mention and still be effective, but overall it is well-structured and not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description explains the type of data (official Brazilian sources) and the payment model, but it does not specify what information will be returned or how parameters are supplied. For a paid consultation tool, this is a notable gap, though it covers the basic purpose and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 4 parameters with zero description coverage, and the description does not explain any of them. While 'numero_nota' and 'codigo_verificacao' are somewhat self-explanatory from context, the tool fails to provide any semantics for 'cpf' and 'cnpj' or clarify formatting requirements, leaving agents without guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries NFS-e (electronic service invoices) from the official Salvador city source, using the verb 'consulta' with the resource 'NFS-e'. It distinguishes itself from siblings like 'authenticate' or 'marketplace' by specifying its exact domain and purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies that queries are hosted on the platform, require prepaid credit, and do not need platform credentials, but it does not provide explicit when-to-use or alternatives compared to other tools. Since siblings are unrelated utilities, the usage context is clear but lacks explicit exclusions or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_bugAIdempotentInspect
Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| message | Yes | ||
| conversation | No | [] |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as non-read-only, non-destructive, and idempotent, so the description only needs to add extra behavioral context. It adds the instruction to include recent conversation messages for reproduction, but it doesn't disclose what happens after submission or whether a confirmation is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver purpose and the key usage note without repeating annotation or schema information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has no output schema, so the description covers the core purpose and the main optional input. It remains minimally adequate because it leaves the context parameter and any post-report behavior unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, but it only partly does so. It explains that conversation should contain recent messages and implies message is the report text, yet it omits the context parameter and calls conversation an 'array' while the schema types it as a string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Report a bug, missing feature, or send feedback,' which is a specific verb plus resource and is clearly distinct from unrelated sibling tools like show_version and marketplace. It goes well beyond the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: for bugs, missing features, or general feedback. It does not explicitly mention alternatives or when not to use it, but the sibling tools are dissimilar enough that the intended use case is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_versionARead-onlyIdempotentInspect
Show the current MCP platform and adapter versions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the context that versions are 'current' (indicating real-time retrieval), but otherwise discloses no additional behavioral traits. This matches the baseline for annotation-covered tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word serves a purpose, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only version query with no output schema, the description is complete. It states exactly what the tool reports (platform and adapter versions). No additional behavioral or output detail is necessary given the simplicity and rich annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100%, so the schema fully handles input semantics. The description adds no parameter information, which is appropriate since the tool takes no input. Baseline of 4 applies for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Show' targeting 'current MCP platform and adapter versions', which is a precise and unambiguous resource. It clearly distinguishes from sibling tools like authenticate, connect, and marketplace by specifying exact content (versions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose clearly implies use when version information is needed, and no exclusions or alternatives are needed for such a simple tool. However, it does not explicitly contrast with the sibling 'toolkit_info', which could potentially overlap. Still, the description's specificity provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toolkit_infoARead-onlyIdempotentInspect
Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context about what the returned state includes (installed MCPs, connection status, accounts, tool counts), going beyond the annotations' safety profile. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the main verb and object front-loaded ('Returns the current toolkit state'). Every element listed (installed MCPs, connection status, accounts, catalog tool count) is meaningful and adds information without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and zero parameters, the description fully explains the semantic contents of the return value. It lists all relevant components of the toolkit state, making it adequate for an agent to understand what the tool provides. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially 100% covered. The baseline for 0 params is 4, and the description does not need to compensate for parameter documentation. No additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the current toolkit state with specific content: installed MCPs, connection status, connected accounts, and catalog tool counts. This is a specific verb-resource pair and distinguishes it from action-oriented siblings like connect and authenticate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting toolkit state, but it does not explicitly state when to use it over alternatives or mention any exclusions. Since the purpose is self-evident and sibling tools are clearly different, the context is clear enough to warrant a 4 rather than 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides read-only consultation of Rio de Janeiro's electronic service invoices (NFS-e) from official sources, with pay-per-use credits.MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying official electronic service invoice (NFS-e) data from the Recife city government through a read-only, hosted MCP server with pay-per-use prepaid credits.MIT
- AlicenseNot gradedqualityCmaintenanceEnables read-only consultation of electronic service invoices (NFS-e) from São Paulo city hall via an official source, using a single tool and pay-per-use credits.MIT
- AlicenseNot gradedqualityCmaintenanceAllows consultation of NFS-e (electronic service invoices) from the Brazilian Federal Revenue official source, with a single read-only tool.MIT