a9n9 Deep Research
Server Details
Objective-driven deep research: free daily quick search plus MPP-paid cross-source browser reports.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
5 toolsa9n9_quick_searchFree Quick SearchARead-onlyIdempotentInspect
Free first-level search, limited per day across all callers: current news coverage (100+ languages, 250K+ sources) or scholarly papers (arXiv). Returns structured results immediately with no payment. When the daily quota is exhausted, or when you need live browsing and synthesis across sources, use a9n9_research_quote for paid deep research.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| domain | No | news (default): global news articles. papers: arXiv preprints. | |
| payer_address | No | Optional Tempo payer address so free usage counts toward loyalty pricing on paid research. |
TDQS
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 key behavioral context: daily quota limits, that results are returned immediately without payment, and that it covers two domains (news and papers). This goes beyond the annotations. A minor gap is not specifying the exact quota number, but the context is sufficient.
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 sentences: first defines the tool's core purpose and behavior, second directs to alternative when quota is exhausted. Each sentence earns its place – no filler, no repetition of structured fields. Very efficient.
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 simplicity (3 params, no output schema) and rich annotations (readOnly, idempotent, not destructive), the description fully covers what an agent needs: purpose, domains, quota limits, and fallback tool. Return value is implied as structured results, which matches the tool's nature. No gaps.
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?
Schema description coverage is 67%, meaning one parameter (payer_address) lacks schema-level description. The description itself does not explain payer_address, but the schema covers query and domain well. Domain is described via description and enum. The description adds high-level context about what each domain covers (news vs papers), which helps an agent choose. Some extra detail on query length or format would improve, but not required.
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 performs a free first-level search for news (100+ languages, 250K+ sources) or scholarly papers (arXiv), and that it returns structured results immediately. This distinguishes it from sibling tools by emphasizing its free, quota-limited nature versus paid deep research.
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?
Explicitly tells when to use this tool (free quick search) and when to use an alternative ('when the daily quota is exhausted, or when you need live browsing and synthesis across sources, use a9n9_research_quote for paid deep research'). Names the exact sibling tool as alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
a9n9_research_quoteQuote Deep ResearchARead-onlyIdempotentInspect
Analyze a deep-research objective and return the exact current price, limits, planned start URLs, request hash, expiry, payment requirements, and cloud-browser capabilities without charging or starting a job. targetUrl is optional: omit it and the quote derives and binds a bounded plan of public start URLs from the objective.
| Name | Required | Description | Default |
|---|---|---|---|
| job_key | Yes | job_key identifies a research session. Reuse it with a new objective to run a follow-up iteration that references the session's prior results (each iteration is a separate paid job); an identical request retries idempotently. Sessions are referenceable for 7 days, then results are cleared. | |
| objective | Yes | ||
| targetUrl | No | Optional public HTTPS focus hint; when omitted the service plans up to 5 public start URLs from the objective and binds them into the quote. | |
| payer_address | No | Optional Tempo payer address for loyalty pricing: 10% off after $2.00 of reconciliation-confirmed on-chain spend from that address. Settlement must then come from it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | Yes | |
| price | Yes | |
| limits | Yes | |
| chainId | Yes | |
| network | Yes | |
| payment | Yes | |
| quoteId | Yes | |
| currency | Yes | |
| nextStep | Yes | |
| expiresAt | Yes | |
| rationale | No | |
| cloudBrowser | Yes | |
| walletPayment | Yes | |
| requestBodyHash | Yes | |
| paymentChallenge | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive. The description adds meaningful behavior beyond annotations: no charge is incurred, no job is started, and omitting targetUrl causes the service to derive and bind a bounded plan of public start URLs from the objective.
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 sentences with front-loaded purpose and no filler. Each clause contributes either output details, side-effect guarantees, or targetUrl behavior, making the description efficient and well-structured.
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 rich schema, annotations, output schema, and sibling tool names, the description is complete: it enumerates the quote's returned fields, clarifies the optional targetUrl behavior, and leaves no major ambiguity about the tool's role.
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?
Schema description coverage is 75% and the schema already details job_key, targetUrl, and payer_address. The description adds value by explaining that targetUrl is optional and that omitting it triggers plan derivation/binding, which enriches the schema's format-only definition.
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 uses a specific verb and resource ('Analyze a deep-research objective and return...') and lists concrete outputs: price, limits, planned start URLs, request hash, expiry, payment requirements, cloud-browser capabilities. It also distinguishes itself from siblings with 'without charging or starting a job.'
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 clearly establishes the quoting/planning use case and explains what happens when targetUrl is omitted. It does not explicitly name sibling alternatives or state when not to use it, but the 'without charging or starting a job' phrasing implies pre-flight use before research_start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
a9n9_research_startStart Paid Deep ResearchAIdempotentInspect
Start bounded paid research in a real remotely hosted Browserbase Chromium session with JavaScript rendering, DOM interaction, scrolling, and dynamic-content extraction, followed by gpt-5.6-luna synthesis. targetUrl is optional; without it the quoted plan of public start URLs derived from the objective is executed. Call a9n9_research_quote first when price visibility is needed. The service does not bypass CAPTCHAs, logins, paywalls, access controls, or site terms.
| Name | Required | Description | Default |
|---|---|---|---|
| job_key | Yes | job_key identifies a research session. Reuse it with a new objective to run a follow-up iteration that references the session's prior results (each iteration is a separate paid job); an identical request retries idempotently. Sessions are referenceable for 7 days, then results are cleared. | |
| objective | Yes | ||
| targetUrl | No | Optional public HTTPS focus hint; when omitted the service plans up to 5 public start URLs from the objective and binds them into the quote. | |
| notify_email | No | Optional: email the completed report to this address from a9n9@agentmail.to. Delivery preference only; not part of the payment-bound request hash. | |
| payer_address | No | Optional Tempo payer address for loyalty pricing: 10% off after $2.00 of reconciliation-confirmed on-chain spend from that address. Settlement must then come from it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| result | No | |
| status | Yes | |
| quoteId | No | |
| createdAt | No | |
| statusUrl | No | |
| trackerCode | Yes | |
| progressStage | Yes | |
| progressPercent | Yes | |
| requestBodyHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations by specifying 'bounded paid research' and stating it does not bypass CAPTCHAs, logins, paywalls, access controls, or site terms. No contradiction with annotations; idempotency and open-world hints align with description.
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 concise (two sentences) and front-loaded with the core purpose, followed by key behavioral notes. Every word contributes, with no unnecessary detail.
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?
Covers the tool's purpose, key parameters, prerequisite (quote), and limitations, while relying on the output schema for return details. Sufficient for a complex paid research 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?
Description clarifies targetUrl's optional behavior and gives context to the objective parameter, which lacks a schema description. Adds meaning beyond the schema's per-parameter notes, compensating for the 80% 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 states the action (start bounded paid research), the environment (real Browserbase Chromium session), and the process (interaction, extraction, synthesis). It distinguishes itself from siblings by naming quote as a prerequisite and implying a deeper scope than quick_search.
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?
Explicitly instructs to call a9n9_research_quote first for price visibility and explains the optional targetUrl behavior. Does not explicitly compare to all siblings, but the 'deep research' label and quote guidance provide sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
a9n9_research_statusGet Research StatusBRead-onlyIdempotentInspect
Return milestone progress and the final result for an opaque tracker code.
| Name | Required | Description | Default |
|---|---|---|---|
| trackerCode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| result | No | |
| status | Yes | |
| quoteId | No | |
| createdAt | No | |
| statusUrl | No | |
| trackerCode | Yes | |
| progressStage | Yes | |
| progressPercent | Yes | |
| requestBodyHash | No |
TDQS
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 context about returning 'milestone progress' (indicating work in progress) and 'final result,' which is useful. However, it does not disclose behavior for invalid tracker codes, rate limits, or authentication requirements, which would be valuable.
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, front-loaded with the verb 'return' and the resource. Every word is necessary; there is no redundancy or fluff. It is optimally concise.
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 simplicity (one parameter, output schema exists), the description covers the basic return content. However, it lacks usage context (when to call, prerequisites) and does not explain edge cases like pending results or errors. The output schema is present, so return structure details are not required, but the description is still incomplete for a new user.
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?
Schema description coverage is 0%—no description for the trackerCode parameter. The description's phrase 'opaque tracker code' provides minimal semantics (it's a non-human-readable identifier) but does not explain how to obtain it or its format beyond the pattern. This is insufficient to fully compensate for the lack of parameter documentation.
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 'milestone progress and the final result for an opaque tracker code.' The verb 'return' and resource are specific, and the purpose is distinct from siblings like a9n9_research_start (starts research) and a9n9_research_submit_payment (payment).
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 no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing a tracker code from a9n9_research_start, nor does it exclude misuse (e.g., before research is started). Usage is only implied by the tool name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
a9n9_research_submit_paymentSubmit External Wallet PaymentAIdempotentInspect
Verify a separately broadcast Tempo mainnet push-mode payment and continue the quoted research job. Use the paymentChallenge and walletPayment returned by a9n9_research_quote, then provide the transaction hash, payer address, and same job_key.
| Name | Required | Description | Default |
|---|---|---|---|
| job_key | Yes | ||
| notify_email | No | Optional: email the completed report to this address from a9n9@agentmail.to. | |
| payer_address | Yes | ||
| transaction_hash | Yes | ||
| payment_challenge | Yes | Unmodified paymentChallenge returned by a9n9_research_quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| result | No | |
| status | Yes | |
| quoteId | No | |
| createdAt | No | |
| statusUrl | No | |
| trackerCode | Yes | |
| progressStage | Yes | |
| progressPercent | Yes | |
| requestBodyHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the tool verifies an externally broadcast payment (not initiated by this tool) and continues a job, adding context beyond the annotations. The annotations already indicate idempotency (idempotentHint: true) and non-destructive (destructiveHint: false). The description does not contradict annotations and adds useful behavioral nuance about the separate broadcast step.
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: the first states the purpose, the second provides instructions on what to provide. Both are front-loaded with essential information. No superfluous words, and every sentence adds value.
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 has 5 parameters (4 required, one nested object) and an output schema exists, the description covers the main inputs and prerequisite. However, it does not explain error handling, what happens if verification fails, or the overall flow beyond the immediate step. The confusing mention of 'walletPayment' (not in schema) also detracts. Adequate but not thorough.
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?
Schema description coverage is only 40% (2 of 5 params have descriptions). The description adds meaning for three parameters: job_key ('same job_key' implies matching the quote), payer_address (from broadcast), and transaction_hash (from broadcast). It does not mention notify_email, and there is a confusing mention of 'walletPayment' which is not in the input schema. The description partially compensates for low schema coverage but is incomplete.
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 specific action: verifying a separately broadcast Tempo mainnet push-mode payment and continuing the quoted research job. It references the prerequisite tool (a9n9_research_quote) and lists the required inputs (transaction hash, payer address, job key). This distinguishes it from sibling tools like a9n9_research_quote or a9n9_research_start, which are different steps in the workflow.
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 explicitly tells the agent to use the paymentChallenge and walletPayment from a9n9_research_quote, establishing a clear prerequisite. It implies this tool should be used after quoting and before continuing the job. However, it does not explicitly state when not to use it or mention alternatives, which would make it stronger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
- Changed
a9n9_research_quote1 field changed- changed
Input schema / properties / job_key / descriptionPrevious value: -"Caller-generated unique key for one intended job; reuse only for retries."New value: +"job_key identifies a research session. Reuse it with a new objective to run a follow-up iteration that references the session's prior results (each iteration is a separate paid job); an identical request retries idempotently. Sessions are referenceable for 7 days, then results are cleared."
- Changed
a9n9_research_start1 field changed- changed
Input schema / properties / job_key / descriptionPrevious value: -"Caller-generated unique key for one intended job; reuse only for retries."New value: +"job_key identifies a research session. Reuse it with a new objective to run a follow-up iteration that references the session's prior results (each iteration is a separate paid job); an identical request retries idempotently. Sessions are referenceable for 7 days, then results are cleared."
2 tool updates
- Changed
a9n9_research_quote1 field changed- added
Input schema / properties / payer_addressAdded value: +{ + "description": "Optional Tempo payer address for loyalty pricing: 10% off after $2.00 of reconciliation-confirmed on-chain spend from that address. Settlement must then come from it.", + "pattern": "^0x[a-fA-F0-9]{40}$", + "type": "string" +}
- Changed
a9n9_research_start1 field changed- added
Input schema / properties / payer_addressAdded value: +{ + "description": "Optional Tempo payer address for loyalty pricing: 10% off after $2.00 of reconciliation-confirmed on-chain spend from that address. Settlement must then come from it.", + "pattern": "^0x[a-fA-F0-9]{40}$", + "type": "string" +}
1 tool update
- Changed
a9n9_quick_search1 field changed- added
Input schema / properties / payer_addressAdded value: +{ + "description": "Optional Tempo payer address so free usage counts toward loyalty pricing on paid research.", + "pattern": "^0x[a-fA-F0-9]{40}$", + "type": "string" +}
5 tool updates
- First observed
a9n9_quick_search - First observed
a9n9_research_quote - First observed
a9n9_research_start - First observed
a9n9_research_status - First observed
a9n9_research_submit_payment
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
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
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
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 Connectors
Cross-source search across 18 real-time data sources, source-cited and corroboration-checked.
- WebhoundOAuthai.webhound
Budgeted reports and datasets with Hound, Webhound's DeepSeek V4 Pro + GPT-5.4 research harness.
Source-traced evidence research for AI agents. We organise the evidence; you decide.
Comparison intelligence: live evidence from 20 sources, PESTLE/VS/Deep Research frameworks.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables deep web research and report generation through an MCP interface, providing tools for comprehensive research, quick search, and source management.MIT
- AlicenseAqualityBmaintenanceEnables unified research through a single MCP interface, combining multi-provider web search, content extraction, fact-checking via corroboration across independent sources, and a personal knowledge base—with zero-config providers and optional API-keyed backends.27423MIT
- AlicenseNot gradedqualityCmaintenanceAI-powered multi-source research and crawling platform with MCP integration, enabling web search, crawling, social source aggregation, and structured research workflows.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables iterative deep research by integrating AI agents with search engines, web scraping, and large language models for efficient data gathering and comprehensive reporting.8323MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool serves a distinct purpose: free search, quote generation, paid research initiation, status tracking, and payment submission. No two tools overlap in functionality, and descriptions clearly differentiate their roles.
All tools share the 'a9n9_' prefix and use snake_case. However, the pattern varies slightly: 'quick_search' uses adjective_noun, while others mix noun_noun and verb_noun constructions. The inconsistency is minor and does not hinder readability.
Five tools cover the essential stages of the research service (free search, quoting, payment, start, status) without unnecessary redundancy. The count is well-scoped for the domain.
The tool set covers the main workflow end-to-end. A minor gap is the lack of a tool to list or cancel past research jobs, but the core lifecycle (quote, pay, start, status) is fully represented.