Skip to main content
Glama

Tool Offer Agent

Turn public API/MCP documentation and your seller terms into a source-attributed offer draft you can review, correct, assess and export. Tool Offer Agent is by Kingan Logic; this public judging repository is maintained under the GitHub organization Max-ROI-LLCt.

Try It In ASI:One

Open Tool Offer Agent, choose Launch Agent, and send start to @tool-offer-builder. Choose Start with my tool, supply public documentation and the requested seller terms, then ask for draft, review intake, readiness or buyer explanation. Try a fictional example is a restricted demonstration, not a live Parcel API or permission to sell it.

Known live limitation: ASI:One delivery remains under investigation. Some requests stay on “Reasoning…” despite generated hosted replies; Agentverse manual Testing returned responses. A read receipt or outgoing envelope is not confirmed ASI display. Use the included local instructions to inspect the implementation; this documentation update does not resolve or conceal the delivery incident.

Related MCP server: mcplane

Feedback Into Corrections

Competition feedback, November 7, 2026: the owner shared Trick or Feedback notes from Thạch Hồ Lê Minh, who tried the fictional Parcel journey through WebMCP and ASI:One. The tester praised field-level source links and clear noncommercial limits, requested a shorter buyer summary, and reported two WebMCP invocation errors and an unfinished ASI buyer-explanation follow-up. Feedback provenance, response and limits distinguish those open observations from confirmed fixes; no counted-feedback or delivery-success claim is made.

Separate earlier testing reported an introductory-only natural-language readiness response, intake review opening a blank replacement form, and crowded draft headings. Revision 86 routes supported readiness requests to the substantive assessment, displays retained intake with a correction/cancellation path, and separates draft headings and fields. Identical replacements preserve revision; fictional restrictions remain enforced. The dated correction report records the changes and completed checks.

Deployed product: Tool Offer Agent 1.4.9, Agentverse revision 86, release 66979784d826683d48d83d6639e924078a3a3476c3ab488a93a9a57519767f19. The canonical manifest and public Agentverse README both matched this release on the November 7 documentation readback. Deployment evidence identifies the executable source; this public Git commit identifies the judging snapshot and its documentation/license additions.

Registry history is separate: the completed 1.4.9 publication at 03:32:16.914361 UTC on November 7 corresponds to release 294379abcc1a2df39f22d9aa94423f2902e5353bb74fc29411e657e6d2c0afa1, not revision 86. The later correction deployment retained application version 1.4.9 but has the distinct release ID above. The generated discovery block below preserves the historical receipt's wording: publication alone did not deploy corrections; the later revision-86 deployment did. No new registry publication or version bump is claimed. See the dated source mapping.

VerifyMCP report for Tool Offer Agent.

The live badge links to a third-party report, not blanket security certification. No score is fixed in this repository.

For machines

Machine-readable profile (canonical): https://tooloffer.kinganlogic.com/manifest.json

This manifest is the authority for capabilities, invocation and payment boundaries. Read it first; no Agentverse page rendering or ASI:One login is required for discovery.

Capabilities

  • Read public API/MCP documentation and retain source-attributed evidence.

  • Collect seller-stated customer, pricing, payment, access and invocation terms.

  • Draft, review and revise an offer within an isolated conversation.

  • Explain the buyer offer and prepare listing guidance without publication.

  • Assess retained offer readiness deterministically without inference or payment.

  • Export structured and human-readable records, with verified multipart retrieval when needed.

Boundaries

  • Does not certify sellers, prove service execution, grant resale rights or publish listings.

  • Does not share ASI:One conversation history with machine sessions.

  • Does not connect wallets, create checkouts, execute FAHCE or make payments through MCP/REST.

  • Does not sign, spend automatically or authorize a purchase on a buyer's behalf.

MCP protocol endpoint (POST, not a webpage): https://tooloffer.kinganlogic.com/mcp Human machine-access documentation: https://tooloffer.kinganlogic.com/machine/ Browser GET returns 405 (no standalone SSE stream). /mcp/ supports the same protocol without redirecting POST bodies. REST request template (not a webpage): POST https://tooloffer.kinganlogic.com/api/machine/{tool_name} Native Agentverse address: agent1qg0p9zy9rxqz83l5p8tr7vevguk3hny963luv4pd8nu8hp87qc0syk3c88a (Fetch Agent Chat Protocol). Public Agentverse JSON profile: https://agentverse.ai/v1/agents/agent1qg0p9zy9rxqz83l5p8tr7vevguk3hny963luv4pd8nu8hp87qc0syk3c88a/profile Calls require identity-bound credentials; discovery is public. Retain session_id, request_id and job_id. Poll get_result for the same job; an acknowledgement is not completion. Never retry uncertain work with a new request_id. Verify signed results and every multipart export part.

Registry publication

Published in the official MCP Registry as com.kinganlogic/tool-offer-agent: version 1.4.9 at 2026-11-07T03:32:16.914361Z, active/latest at the verified post-publication readback. The endpoint is https://tooloffer.kinganlogic.com/mcp. Publication is complete; no reenrollment or republication is required. Later local source corrections are not thereby deployed. Publication does not establish search indexing, adoption, execution certification or hackathon acceptance.

Drafting is free; operator inference costs and published quotas still apply. Optional FAHCE evaluation is separate and buyer-authorized: 0.15 USDC on Base mainnet via the private human checkout. A free preflight is not an evaluation. Checkout preparation, wallet connection and a 402 challenge are not payment authorization, settlement or a completed result. Changed price, network, token or recipient stops payment. No automatic spending.

Documentation is evidence of documented claims, not proof of service execution or seller rights. Price, access, customer and payment terms are seller statements. Review, readiness and export never certify an offer, publish a listing or authorize commercial use. Fictional restrictions survive correction, rebuilding and export. No fabricated integrations, buyers or rights are supplied.

Entrances

Discovery is public. Machine calls use identity-bound Bearer credentials obtained through automatic OAuth registration plus private_key_jwt, or existing Fetch identity proof. There is no human enrollment queue. Machine application sessions are isolated from each other and from native ASI conversations. Retain request, session and job IDs, poll existing jobs, and verify signed completed results and every export part. A manifest or acknowledgement is not completed delivery. See machine/contract.json for actual quotas and payment boundaries; machine/access-client.mjs and machine/client.mjs implement access and verified delivery.

Payment And Trust Boundaries

Offer drafting is free to users; operator inference costs and quotas remain. Optional buyer-authorized FAHCE evaluation is a separate native-chat checkout flow, not an MCP/REST operation and not native Fetch payment integration. wallet / purchase guide explain prerequisites, preflight is free screening, and explicit check can prepare eligible checkout. A checkout or 402 challenge is not buyer authorization, payment, settlement or a positive evaluation. Never retry payment to resolve an uncertain result.

The dedicated MCP Registry publisher authenticates publication only. Its credentials and signing infrastructure are separate from product runtimes and from FAHCE execution, receipts and attestations. Registry publication does not certify an offer or authorize a purchase. No operator credentials or signing material are needed for public code review.

Source Layout

  • tool_offer_agent/: Python runtime, retained evidence, restrictions, cards, readiness and native/machine operations.

  • machine/contract.json, machine/public-profile.txt, machine/public-profile.json, machine/guide.txt: canonical release inputs. machine/release.py, machine/discovery.py, machine/surfaces.py: release generation, mirror consistency and public-asset inventory.

  • site/src/: existing Cloudflare gateway, identity registry, signing and HTTP routes. site/public/: authored homepage/styles/assets plus generated profiles, examples, schemas and instructions.

  • bridge/custody/ and tool_offer_agent/cloudflare_custody.py: separate seller-side custody Worker, tests and Python client.

  • Current checkout/relay/wallet: bridge/checkout/ contains the reviewed companion implementation, dependency lockfile, tests and provenance. It connects to separate wallet, custody and FAHCE services; this correction release did not redeploy those services. See the bridge architecture.

  • tests/, site/tests/: regression suites. build_hosted.py: flat Agentverse packaging; its Python manifest does not describe the complete system.

  • docs/RELEASE-READINESS.md: retained historical readiness report. Publication history explains which later deployment/publication records supersede its status language without rewriting its evidence.

Setup And Tests

Use Python 3.12 and Node 24. Python package metadata remains at its historical packaging version; the product release version is machine/contract.json and generated runtime constants, not the wheel filename.

python3.12 -m venv .venv
. .venv/bin/activate
python -m pip install -c constraints-validated.txt -e '.[test]'
npm --prefix site ci
npm --prefix bridge/checkout ci
tool-offer --state data/judging-local.sqlite3 --sender judging-local --session inspect --message help
python scripts/test_offline.py
TOOL_OFFER_TEST_PYTHON="$(command -v python)" npm --prefix site run check
npm --prefix bridge/checkout test

Tests use synthetic/mocked services and require no purchases. The selected fixtures are explicitly labeled where synthetic. .avctl/config.toml is intentionally included as a public identity/profile reference, not authenticated CLI state; .env.example contains placeholders. Real authentication, .env files, private caches, databases and raw customer exports are not part of the judging snapshot. Configure your own identity for a separately hosted instance; do not reuse production credentials or deploy merely to review the code.

Already completed for the unchanged executable candidate: 550 Python tests with three skips, 163 staged tests, 51 site tests, and clean-package 550 Python tests with the same three skips. The dated report and deployment readback record their scope. These are retained results, not fresh tests from this documentation commit. No GitHub Actions run was present at the November 7 publication review; no green CI result is claimed.

External runtime services are Agentverse hosting, ASI:One/native chat, the configured extraction/conversation provider, Cloudflare Worker/Durable Objects, and (only for optional evaluation) the existing checkout/relay and FAHCE service. Configure placeholders from .env.example through the appropriate secret stores. Never put gateway, custody, checkout or inference credentials in public discovery. Public documentation URLs must be accessible; private/local URLs and credentials are rejected. Provider availability and wallet eligibility are not guaranteed by this repository.

Attribution, History And Limits

This is the owner-authorized public judging snapshot of Tool Offer Agent, not a publication of the private development repository. The GitHub repository was created on November 7, 2026 at 07:44:32 UTC. Its initial snapshot commit was created locally at 07:38:42 UTC before that repository was created. Publication history distinguishes those timestamps from deployment, tests and historical transactions; they are not independent proof of original development dates or organizer eligibility.

Tool Offer Agent's reviewed contribution covers offer preparation, source attribution, retained intake, native/machine integration, correction, readiness, exports, its gateway and companion integration. Kingan Logic branding and the external FAHCE engine/payment/receipt/attestation infrastructure pre-exist these corrections; the repository does not claim to implement those external services. The November 1, 2026 transaction evidence remains historical, not a transaction on revision 86.

The ASI delivery incident, three skipped custody integration checks, four inherited high-severity dependency entries from the dated review and missing verify_new_tooloffer.mjs harness remain explicit limitations. Source inspection and local tests do not certify live delivery, service execution, commercial rights or hackathon acceptance. Do not submit credentials in chat or documentation URLs; we do not control retention by ASI or other platform components.

Future updates are separately reviewed, owner-approved snapshots, not an automatic mirror of private working files. Historical manifests and frozen ZIPs remain unchanged; the quickstart explains integrity checks after this documentation/license update.

License

The original first-party software is source-available under PolyForm Noncommercial 1.0.0, adopted on November 7, 2026. You may use, modify and share it for noncommercial purposes under those terms, while preserving the required attribution notice. Copyright remains with Kingan Logic; commercial reuse or resale requires separate permission. This is not an open-source license.

NOTICE also expressly permits organizers and judges to run and test this submission for evaluation, including on behalf of a commercial organization. It does not grant production access, authorize payments or change hosted-service terms. The owner may offer separate commercial licenses. Third-party dependencies and bundled code keep their own licenses; ownership of Tool Offer Agent and FAHCE does not replace those terms. This license addition does not establish compliance with any organizer requirement for an open-source license.

Available Tools

7 tools
assess_offer_readinessA

Deterministic assessment of your retained session without revising seller terms. No fetching, inference, FAHCE, approval or payment. Returns a job, not the report: poll get_result for signed readiness JSON plus full human_readable content, or a resumable report manifest. Not seller certification or commercial clearance. Does not revise seller terms, but creates a metered asynchronous job and may retain delivery state.

NameRequiredDescriptionDefault
request_idYesCaller-generated UUID for this logical operation. Retain it and identical arguments for retries; do not reuse it for different work.
session_idYesThe isolated session UUID returned by start_session; use the same client identity.

Output Schema

NameRequiredDescription
job_idYesThe stable job UUID returned by an operation; poll this same job rather than dispatching replacement work.
statusYesCurrent job state; only complete with assembled verified content means delivery is finished.
release_idYesRelease identity bound to this asynchronous operation.
session_idYesThe isolated session UUID returned by start_session; use the same client identity.

TDQS

A3.6/5.0
Behavior4/5

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

With annotations declaring readOnlyHint=false and destructiveHint=false, the description usefully explains why a read-looking assessment is a mutation: it 'creates a metered asynchronous job and may retain delivery state.' Disclosing that the call is metered (cost-bearing) and async is exactly the kind of context annotations cannot convey, and the negative list ('No fetching, inference, FAHCE, approval or payment') bounds side effects.

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?

The key fact (job, not report) is front-loaded and the sentences are information-dense, but the description repeats itself: 'without revising seller terms' and 'Does not revise seller terms' say the same thing twice. Terms like 'FAHCE' are used without explanation, adding noise rather than signal.

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

Completeness4/5

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

For an async, metered job tool with an output schema, the description covers the essential contract: it returns a handle, the report arrives via get_result, and some outcomes may come back as a resumable manifest. Combined with the idempotency and retry notes in the schema, an agent has enough to call it correctly, though the undefined jargon leaves a small gap.

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

Parameters3/5

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

Both parameters are fully documented in the schema (100% coverage), including the retry/request_id reuse contract, and the description only alludes to session_id via 'your retained session.' Nothing in the description adds syntax or constraints beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific operation: a deterministic readiness assessment over the caller's retained session, and explicitly separates itself from get_result by saying it 'Returns a job, not the report' which must be polled. The scope exclusions ('Not seller certification or commercial clearance') sharpen the boundary. It stops short of distinguishing itself from export_offer, so an agent choosing between those two still has to infer.

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

Usage Guidelines3/5

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

It provides a clear downstream step ('poll get_result for signed readiness JSON'), which is real usage guidance, and it names what the result is not. However, there is no explicit statement of when to call this versus export_offer or get_status, and no stated prerequisite such as 'call start_session first' beyond the implicit 'your retained session'.

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

export_offerA

Export your session's saved offer, proposed plan or explicitly incomplete response without inference. Large responses use the agent's resumable manifest; retrieve each indexed part with get_export_part. An export is not publication or certification. Does not revise seller terms, but creates a metered asynchronous job and may retain delivery state.

NameRequiredDescriptionDefault
formatYesSaved representation to export. Choose incomplete only for an explicitly unfinished record; export does not publish or authorize it.
request_idYesCaller-generated UUID for this logical operation. Retain it and identical arguments for retries; do not reuse it for different work.
session_idYesThe isolated session UUID returned by start_session; use the same client identity.

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false), the description discloses that the call creates a metered asynchronous job, that delivery state may be retained, and that the result is neither publication nor certification. Metering and async-job behavior are exactly the cost/side-effect facts an agent cannot get from the hints, and they are consistent with idempotentHint=false.

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

Conciseness4/5

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

The verb and exportable artifacts are front-loaded, and each subsequent sentence adds a distinct fact (parts retrieval, non-publication, metered async job, state retention). Some phrasing is dense and legalistic ('explicitly incomplete response without inference'), but there is little waste.

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

Completeness4/5

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

With no output schema, the description usefully explains that oversized results are split into a resumable manifest fetched via get_export_part, which tells the agent what to expect back. It does not state what a small/complete export returns (inline payload vs. job handle/status), leaving a minor gap about the immediate response shape.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself already explains the format enum, the request_id retry/reuse rule, and the session_id identity requirement. The description adds only indirect meaning (large responses produce a manifest split into parts), so the schema does the heavy lifting and a baseline 3 is appropriate.

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

Purpose4/5

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

The description gives a specific verb ('Export') and enumerates the exportable artifacts: saved offer, proposed plan, or explicitly incomplete response. It also names the sibling get_export_part for the split-retrieval path, so the agent can distinguish it from a part-fetch. The purpose is clear, though the phrase 'without inference' is jargon that slightly muddies the statement.

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

Usage Guidelines4/5

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

It explicitly routes large responses to the resumable manifest and directs the agent to get_export_part, which is real alternative-selection guidance. It also draws a boundary constraint ('does not revise seller terms'), but it gives no guidance on when to prefer export_offer over get_result, get_status, or assess_offer_readiness.

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

get_export_partB

Retrieve one existing resumable export part from your session, without inference. Preserve the manifest and verify its hashes; do not claim completion until all parts are received. Does not revise seller terms, but creates a metered asynchronous job and may retain delivery state.

NameRequiredDescriptionDefault
indexYesOne-based part index from the manifest. Retrieve every part and verify hashes before claiming complete delivery.
export_idYesThe 64-character export hash identifier returned in a multipart manifest for this session.
request_idYesCaller-generated UUID for this logical operation. Retain it and identical arguments for retries; do not reuse it for different work.
session_idYesThe isolated session UUID returned by start_session; use the same client identity.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false; the description adds real context beyond them by noting the call creates a metered asynchronous job and may retain delivery state, which explains why a 'retrieve' is not read-only. However, 'without inference' and 'Does not revise seller terms' are cryptic and do not clarify retry, cost, or state-retention semantics.

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?

The purpose is front-loaded and the sentences are short, but the second half drifts into clauses that do not help an agent decide or invoke: 'Does not revise seller terms' is unrelated to retrieving a part, and 'without inference' is unexplained jargon.

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

Completeness3/5

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

All four required parameters are documented in the schema and there is no output schema, so the description only needs to cover flow and side effects. It covers metering and state retention but leaves open what a part response contains, whether parts can be fetched in parallel, and what happens if a part is missing or has a hash mismatch.

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

Parameters3/5

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

Schema description coverage is 100%, including meanings for index, export_id, request_id and session_id, so the schema already carries parameter semantics. The description adds only the general verification requirement, not per-parameter meaning, so the baseline 3 applies.

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

Purpose4/5

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

The first clause gives a specific verb and resource with scope: 'Retrieve one existing resumable export part from your session.' An agent can tell this fetches a single part rather than the whole export (get_result) or status (get_status), though no sibling is named explicitly.

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

Usage Guidelines3/5

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

It implies the usage pattern: retrieve every part and verify hashes before claiming completion, so the agent infers iteration until all parts are received. There is no explicit when-not or pointer to an alternative sibling such as get_result, so guidance is implied rather than stated.

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

get_resultA

Read a job owned by your authenticated client. pending/processing/uncertain is not completion. Poll this same job; do not duplicate an uncertain message. No inference. Polling is metered and may wake queued processing; it is not annotated as a side-effect-free read.

NameRequiredDescriptionDefault
job_idYesThe stable job UUID returned by an operation; poll this same job rather than dispatching replacement work.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false and openWorldHint=true, and the description explains the reason in operational terms: polling is metered and may wake queued processing, and it is explicitly not a side-effect-free read. That is exactly the non-obvious cost/effect information an agent needs before calling a repeated polling endpoint, and it is consistent with the annotations.

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

Conciseness4/5

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

Short, front-loaded sentences that each carry operational content: ownership, non-completion statuses, no-duplication, metering, and side effects. The fragment "No inference." is cryptic enough to cost a point since its meaning (do not assume completion?) has to be guessed.

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

Completeness4/5

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

For a one-parameter polling tool with no output schema, the description supplies the key state vocabulary (pending/processing/uncertain) and the cost model. It does not indicate what a completed response contains or how statuses map to finality, which leaves a modest gap for an agent deciding when to stop polling.

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

Parameters3/5

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

With one parameter at 100% schema description coverage, the schema already documents job_id as a stable UUID to poll rather than redispatch. The description reinforces 'poll this same job' but adds no new format, constraint, or edge-case meaning beyond that. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ("Read a job") plus the ownership scope ("owned by your authenticated client"), which is more than a restatement of the name. It does not explicitly distinguish itself from the nearby sibling get_status, so an agent must infer whether job polling and general status polling are the same thing.

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

Usage Guidelines4/5

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

Gives real when-to-use context: pending/processing/uncertain are explicitly not completion, so the agent should poll the same job rather than dispatch replacement work. It also warns against duplicating an uncertain message. It omits any cadence guidance and never names an alternative sibling tool, so it stops short of full routing guidance.

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

get_statusA

Ask the existing agent for the current offer status without inference. Returns a job; poll get_result. Does not revise seller terms, but creates a metered asynchronous job and may retain delivery state.

NameRequiredDescriptionDefault
request_idYesCaller-generated UUID for this logical operation. Retain it and identical arguments for retries; do not reuse it for different work.
session_idYesThe isolated session UUID returned by start_session; use the same client identity.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare it is not read-only, not idempotent, and not destructive; the description adds real context beyond that by disclosing the metered asynchronous job, possible retention of delivery state, and the fact that it does not revise seller terms. This is consistent with readOnlyHint=false, since the write effect is job creation rather than data mutation. It does not mention auth or rate-limit specifics beyond 'metered'.

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

Conciseness4/5

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

Two tight sentences with the core purpose front-loaded, followed by the return/hand-off behavior and constraints. 'without inference' is slightly cryptic but the rest is waste-free.

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

Completeness4/5

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

With no output schema, the description correctly explains that the return value is a job requiring polling, which is the key thing an agent needs. It does not say what the offer status payload contains, but that is a minor gap for a two-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, with both session_id and request_id fully documented including retry/idempotency semantics, so the description adds nothing parameter-specific. Baseline 3 applies when the schema carries the full burden.

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

Purpose4/5

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

States a specific verb and resource: ask the existing agent for the current offer status. It also distinguishes its return shape from the sibling get_result by saying it returns a job to be polled there. It does not differentiate itself from assess_offer_readiness or get_export_part, so it stops short of a 5.

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

Usage Guidelines4/5

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

The sentence 'Returns a job; poll get_result' gives explicit routing: call this to kick off, then use the sibling to retrieve results. There is no explicit when-not guidance relative to assess_offer_readiness, but the async-job framing makes the usage context clear.

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

send_messageA
Destructive

Send field: value lines, or a JSON-serialized StructuredIntake object in message, a product question, a revision or a drafting command. Intake keys: tool_url, docs (URL string or 1–3 URL strings), customer, pricing, payment, access, invocation; optional job and seller_name. All other values are strings. Optional schema is TOOL_OFFER_INTAKE_V1. Unknown/duplicate keys and invalid values reject the entire update. Card selections are separate. May use bounded operator model quota. Returns a stable job; optional HTTP Prefer: wait=1 through wait=5 waits without redispatch and may include the signed completed result. Otherwise poll get_result. Never resend uncertain work with a new request_id. No payments or FAHCE execution. May overwrite seller fields or rebuild retained drafts; not read-only. Request-ID deduplication is bounded by retained session/job lifetime, not an unqualified retry guarantee.

NameRequiredDescriptionDefault
messageYesOffer intake, question, revision or supported drafting command as text; JSON intake must be serialized into this string. Real terms require truthful authorization.
request_idYesCaller-generated UUID for this logical operation. Retain it and identical arguments for retries; do not reuse it for different work.
session_idYesThe isolated session UUID returned by start_session; use the same client identity.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructive=true, openWorld=true and idempotent=false, and the description adds genuinely non-redundant behavior on top: it may 'overwrite seller fields or rebuild retained drafts', invalid values 'reject the entire update', card selections are handled separately, quota is consumed, and dedup is 'bounded by retained session/job lifetime, not an unqualified retry guarantee'. That last caveat usefully qualifies the non-idempotent hint. It falls short of 5 only because the phrasing is compressed to the point of ambiguity in places.

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

Conciseness2/5

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

There is little filler, but the text is a single undifferentiated stream of clauses with no front-loading — the core action competes with quota, dedup and refusal notes for the opening position. Undefined acronyms (FAHCE) and bare schema tokens (TOOL_OFFER_INTAKE_V1) force parsing effort that a short structured layout would avoid.

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

Completeness4/5

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

For a high-stakes mutation tool with no output schema, the description covers the important contract: it returns a stable job, it may return a signed completed result under Prefer: wait, otherwise you poll get_result, and there is no payment or execution side effect. The only notable gap is nothing about failure responses or how the job handle should be retained across sessions.

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 baseline is 3, but the description earns above baseline by enumerating the intake keys (tool_url, docs, customer, pricing, payment, access, invocation, optional job and seller_name) and by stating that all non-enumerated values are strings and that a serialized TOOL_OFFER_INTAKE_V1 schema governs validation. That tells the agent message structure in a way the schema's single string field cannot.

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

Purpose4/5

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

The description names the resource and the accepted payload shapes concretely: 'field: value lines, or a JSON-serialized StructuredIntake object', plus product questions, revisions and drafting commands. It also distinguishes itself from the polling sibling by pointing at get_result. It loses a point because the opening is a dense enumeration of value with undefined tokens (TOOL_OFFER_INTAKE_V1, FAHCE) that slow an agent down before it knows the core action.

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

Usage Guidelines4/5

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

It gives real operational guidance: use 'HTTP Prefer: wait=1 through wait=5' to wait inline, 'Otherwise poll get_result', and 'Never resend uncertain work with a new request_id'. What is missing is any steering against the other siblings (assess_offer_readiness, export_offer) — an agent is told how to wait, not when this tool is the wrong entry point.

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

start_sessionA

Create an isolated seven-day offer conversation. Requires a unique request_id; replaying it returns the same session. No model inference.

NameRequiredDescriptionDefault
request_idYesCaller-generated UUID for this logical operation. Retain it and identical arguments for retries; do not reuse it for different work.

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the idempotency-key retry contract and that no model inference occurs, which is genuine behavioral context an agent needs. Worth noting a tension: 'replaying it returns the same session' reads as replay-safe while the annotations set idempotentHint=false, though the annotation likely refers to the create-new-resource default rather than request_id-keyed replay.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then the required-parameter constraint, then the capability boundary. Nothing is padded or redundant.

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

Completeness3/5

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

For a creation tool with no output schema, the description never says what the caller gets back — a session ID, an offer handle, expiry metadata, or a status object. Since no output schema exists to carry that, the return shape is an unresolved gap.

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

Parameters3/5

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

Schema description coverage is 100% and the request_id property already documents the caller-generated UUID, retry retention, and non-reuse rules. The description's mention of a 'unique request_id' and replay behavior only restates that, adding no new syntax or format detail beyond the schema.

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

Purpose4/5

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

The description opens with a specific verb+resource ('Create ... offer conversation') and adds a scoping qualifier ('isolated seven-day'), which lets an agent distinguish it from siblings like send_message or get_status. 'Offer conversation' is somewhat domain jargon, keeping it short of a 5.

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

Usage Guidelines3/5

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

It supplies a retry rule ('replaying it returns the same session') and a negative capability note ('No model inference'), but never states when to call this versus its siblings or what prerequisite state must exist. Usage is implied rather than prescribed.

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.

  1. 7 tool updatesv0.2.0
    • First observedassess_offer_readiness
    • First observedexport_offer
    • First observedget_export_part
    • First observedget_result
    • First observedget_status
    • First observedsend_message
    • First observedstart_session

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

The tools mostly have distinct purposes: session creation, message sending, status, readiness assessment, export, export-part retrieval, and job polling. However, the set has several async job-producing tools that all funnel into get_result, and get_status versus get_result versus get_export_part may require careful reading to distinguish.

Naming Consistency5/5

Names consistently use snake_case and a verb-first pattern: start_session, send_message, get_status, assess_offer_readiness, export_offer, get_export_part, get_result. The pattern is predictable and readable throughout.

Tool Count5/5

Seven tools is well within the appropriate range for this workflow. Each tool maps to a meaningful lifecycle step: start, interact, inspect status, assess readiness, export, retrieve export parts, and poll job results.

Completeness4/5

The core offer-conversation lifecycle is covered, including session start, messaging/intake, status, readiness assessment, export, export-part retrieval, and job result polling. Minor gaps remain around session listing/closure, job cancellation, and explicit session management, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI listing assistants to validate marketplace draft listings against seller-provided item specifics, returning PUBLISH or REVIEW with the exact words behind every unbacked claim.
    1
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to preflight MCP server submissions against store rejection causes, publish where automation is allowed, prepare form-based store submissions, and detect listing drift.
    50 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients such as Claude Desktop and Cursor to read tracked app keywords, opportunities, account apps, and action plans; generate or translate listing copy; review results; and apply accepted title, subtitle, keywords, or short-description fields to an editable draft without publishing to Apple or Google.
    40 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables users to turn any API's documentation into a tested MCP server whose tools expose the API's own operations, with linting, contract tests, and live verification. It accepts OpenAPI/Swagger, Postman, RAML, WSDL, GraphQL, RSS, and HTML docs.
    14
    20 PyPI
    Apache 2.0